LlamaIndex organise ingestion, index et moteur de requête. Commencez sur un corpus minuscule afin d’observer les nœuds retrouvés avant d’ajouter un stockage externe.
Installer
~~~bash pip install -U llama-index ~~~
Ajoutez les paquets d’intégration du fournisseur choisi et configurez les clés côté serveur.
Charger et indexer
~~~python from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
documents = SimpleDirectoryReader('data', recursive=True).load_data() for document in documents: print(document.metadata)
index = VectorStoreIndex.from_documents(documents) ~~~
Conservez fichier, page, titre et niveau d’accès dans metadata. Inspectez le texte extrait, surtout pour PDF et tableaux.
Tester le retriever
~~~python retriever = index.as_retriever(similarity_top_k=4) nodes = retriever.retrieve('Quelle est la politique de remboursement ?') for item in nodes: print(item.score, item.node.metadata, item.node.get_content()[:200]) ~~~
La bonne source doit être présente avant la génération.
Répondre
~~~python engine = index.as_query_engine(similarity_top_k=4) response = engine.query('Quelle est la politique de remboursement ?') print(response) for source in response.source_nodes: print(source.node.metadata, source.score) ~~~
Affichez de vraies citations à partir des métadonnées, pas des références inventées par le modèle.
Évaluer
Préparez questions, sources attendues et cas sans réponse. Mesurez retrieval puis fidélité. Réglez chunking et k sur les erreurs observées.
Production
Utilisez un vector store persistant, versionnez embedding et index, séparez les droits avant retrieval et tracez les nœuds transmis. Réindexez dans une nouvelle collection lors d’un changement de modèle.
FAQ
L’index mémoire survit-il au redémarrage ?
Non sans persistance explicite.
Pourquoi une réponse sans source ?
Vérifiez extraction, métadonnées et que l’interface affiche response.source_nodes.
Construire et interroger un index minimal
~~~bash pip install llama-index llama-index-llms-openai ~~~
~~~python from llama_index.core import ( SimpleDirectoryReader, VectorStoreIndex, Settings, ) from llama_index.llms.openai import OpenAI
Settings.llm = OpenAI(model="gpt-4.1-mini", temperature=0) documents = SimpleDirectoryReader("./documents").load_data() index = VectorStoreIndex.from_documents(documents) engine = index.as_query_engine(similarity_top_k=5)
response = engine.query("Quelle est la politique de remboursement ?") print(response) for node in response.source_nodes: print(node.node.metadata, node.score) ~~~
Ajoutez des métadonnées de source, version et droits dès l’ingestion. Persistez l’index pour éviter une reconstruction à chaque démarrage. Testez aussi une question sans réponse et refusez de générer lorsque les sources sont insuffisantes. Évaluez retrieval et réponse séparément.