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.