LITEOPSDOCS
Agents & SystèmesPacemaker

Base documentaire

Upload, chunking et recherche semantique RAG pour enrichir automatiquement les prompts LLM.

REF-SPEC/PM-005 v1.0 — 2026-04-05

1. Principe

Pacemaker dispose d'une base documentaire RAG (Retrieval-Augmented Generation). Tout document uploade est decoupe en chunks, embedde par Voyage AI, et stocke dans Turso. Lors de chaque generation LLM, les chunks pertinents sont automatiquement injectes dans le prompt.

2. Types de documents

TypeExemples
Compte-renduCR de reunion, notes de cadrage
SpecificationCahier des charges, spec technique
ReferentielNomenclatures, glossaires, organigrammes
LivrableDocuments produits par l'app
AutreTout document texte pertinent

3. Pipeline d'indexation

Upload document    ──▶    Chunking         ──▶    Embedding        ──▶    Stockage
(texte ou fichier)       (~500 tokens,           (Voyage AI            (doc_chunks
                          overlap 50,             voyage-3,              + F32_BLOB
                          sentence-aware)         1024 dims)             dans Turso)

Chunking

Le decoupage respecte les frontieres de phrases :

  • Taille cible : ~500 tokens par chunk
  • Overlap : 50 tokens entre chunks consecutifs
  • Le chunking ne coupe jamais au milieu d'une phrase

Embedding

Chaque chunk est embedde via Voyage AI :

  • Modele : voyage-3
  • Dimensions : 1024
  • Input type : "document" a l'indexation, "query" a la recherche
  • Batch : jusqu'a 128 chunks par appel

4. Recherche semantique

La recherche utilise vector_distance_cos de libsql-vector :

SELECT content, vector_distance_cos(embedding, ?) AS distance
FROM doc_chunks
ORDER BY distance ASC
LIMIT ?

Seuils de pertinence

ContexteSeuil distance
Semaine concernee0.75
Autre semaine0.70

5. Injection dans les prompts

La fonction getRelevantContext(query, weekId) :

  1. Embedde la requete (input type "query")
  2. Recherche les chunks les plus proches dans doc_chunks
  3. Filtre par seuil de distance
  4. Formate un bloc contextuel :
=== CONTEXTE DOCUMENTAIRE PERTINENT (RAG) ===
[Source: titre_document]
contenu du chunk pertinent...
===

Ce bloc est injecte en tete de chaque prompt LLM (generation de taches, parsing CR, recalibration, livrables).

6. Interface

ElementDescription
UploadZone drag-and-drop + bouton fichier
ListeCards documents avec titre, type, date, nombre de chunks
RechercheBarre de recherche semantique (debounce 500ms)
DetailModale avec contenu complet du document
SuppressionSupprime le document et tous ses chunks

On this page