Fondamentaux de la recherche documentaire augmentée
Le RAG (Retrieval-Augmented Generation) permet d'interroger une base de connaissances métier en combinant recherche sémantique vectorielle et génération de texte. Dans une application Symfony, l'objectif est d'injecter des extraits pertinents dans le contexte du modèle pour éviter les hallucinations sur des données internes.
Architecture et flux de traitement
Le processus se décompose en deux phases distinctes : l'indexation préalable et la requête en temps réel. Les documents sources sont découpés en segments, convertis en vecteurs via un modèle d'embedding, puis stockés dans un moteur de recherche compatible comme PostgreSQL avec l'extension pgvector.
// Exemple de requête SQL pour la recherche par similarité cosinus
SELECT content, 1 - (embedding <=> :query_embedding) AS similarity
FROM document_chunks
ORDER BY embedding <=> :query_embedding
LIMIT 5;Critères de décision pour l'intégration
- Latence : La double étape (requête vectorielle puis appel au LLM) augmente le temps de réponse global, ce qui nécessite la mise en cache des embeddings fréquents.
- Fiabilité de la sortie : Le système dépend directement de la pertinence des chunks extraits ; un mauvais découpage textuel dégrade la qualité de la réponse finale.
- Confidentialité des données : L'envoi de documents internes à une API tierce impose de valider la conformité légale et le traitement des données par le fournisseur.
- Coût : Le stockage des vecteurs et la consommation de tokens pour chaque recherche augmentent les dépenses opérationnelles par rapport à un moteur de recherche textuel classique.