Tutoriel

Statut éditorial : En attente de relecture

Construire un pipeline RAG avec Haystack 2

Assembler un stockage en mémoire, un retriever BM25, un prompt et un générateur pour créer un premier pipeline RAG explicite.

Classification du contenu

Types

  • Intelligence artificielle
  • outils

Technologies

Niveau
Intermédiaire
Prochaine vérification
17 novembre 2026

Haystack représente une application RAG comme un graphe de composants. Chaque composant expose des entrées et sorties explicites ; la connexion est validée avant l’exécution. Cette structure rend le pipeline plus facile à inspecter et à tester qu’une chaîne de fonctions implicite.

Installer la bonne version

Utilisez le paquet Haystack 2 et non l’ancien farm-haystack, arrivé en fin de vie :

python -m venv .venv
source .venv/bin/activate
pip install haystack-ai
export OPENAI_API_KEY="votre-cle"

Verrouillez la version installée et conservez les secrets hors du dépôt.

Préparer les documents

Pour une démonstration locale, un stockage en mémoire et un retriever BM25 suffisent :

from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.builders import PromptBuilder
from haystack.components.generators import OpenAIGenerator

store = InMemoryDocumentStore()
store.write_documents([
    Document(content="Paris est la capitale de la France."),
    Document(content="Rome est la capitale de l’Italie."),
])

Assembler le pipeline

template = '''Réponds uniquement avec le contexte.
Contexte:
{% for document in documents %}{{ document.content }}{% endfor %}
Question: {{ query }}'''

pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(store))
pipe.add_component("prompt", PromptBuilder(template=template))
pipe.add_component("llm", OpenAIGenerator())
pipe.connect("retriever.documents", "prompt.documents")
pipe.connect("prompt.prompt", "llm.prompt")

Lancez ensuite le pipeline en fournissant la même question au retriever et au constructeur de prompt. Inspectez les documents retournés avant la réponse finale : ils déterminent ce que le modèle peut réellement justifier.

Passer du prototype à la production

Remplacez le stockage en mémoire par une base adaptée au volume, ajoutez le découpage et l’indexation, puis mesurez rappel et précision sur un jeu de questions représentatif. Protégez le prompt contre les instructions présentes dans les documents et affichez les sources utilisées.

Haystack permet ensuite d’ajouter embeddings, recherche hybride, reranking, branches et exécution asynchrone. Introduisez ces composants seulement après avoir établi une mesure de référence : un pipeline plus complexe n’est utile que s’il améliore un résultat observable.

Sources utilisées