Ancrer notre discussion vers des résultats en science des données
Ceci est le troisième volet d’une série. Les deux premiers articles présentent une implémentation de base, uniquement avec une base de données vectorielle, d’un chatbot utilisant Milvus et une implémentation du chatbot avec LlamaIndex. Nous continuons à utiliser LlamaIndex dans cette édition, mais nous allons ajouter quelque chose pour « ancrer » nos résultats. TruEra propose un excellent commentaire sur l’ancrage ainsi qu’une courte description dans l’un de leurs blogs d’évaluation RAG.
Dans cet article, nous verrons comment ancrer nos résultats RAG pour Towards Data Science via LlamaIndex en trois sections :
Configuration pour ancrer nos résultats RAG
Définition des paramètres de notre chatbot Towards Data Science
Ancrage de nos résultats via des citations
Configuration pour ancrer nos résultats RAG
Comme pour toute application, la première étape consiste à mettre en place les prérequis. Pour cet exemple, nous commençons par installer quatre bibliothèques différentes. Nous avons besoin de llama-index, python-dotenv, pymilvus et openai. Ces quatre bibliothèques nous aident respectivement à orchestrer notre LLM avec la récupération, à gérer nos variables d’environnement, à travailler avec une base de données vectorielle et à travailler avec OpenAI.
! pip install llama-index python-dotenv openai pymilvus
Le bloc de code suivant configure OpenAI et Zilliz (la base de données vectorielle Milvus gérée). Nous utilisons la fonction load_dotenv pour récupérer nos variables d’environnement, généralement stockées dans le fichier « .env ». Ensuite, nous transmettons les noms de variables nécessaires à l’aide de os pour obtenir les valeurs. OpenAI est notre LLM, et Zilliz est notre base de données vectorielle. Dans cet exemple, nous utilisons Zilliz et une collection stockée dans le cloud pour conserver nos données entre plusieurs versions de l’application.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
zilliz_uri = os.getenv("ZILLIZ_URI")
zilliz_token = os.getenv("ZILLIZ_TOKEN")
Définition des paramètres pour notre chatbot Towards Data Science
Ensuite, nous définissons les paramètres de notre chatbot RAG. Nous devons configurer trois éléments : le modèle d’embeddings, la base de données vectorielle Milvus et les abstractions de transmission de données de LlamaIndex. Tout d’abord, nous configurons notre modèle d’embedding. Pour cet exemple, nous utilisons le modèle d’embedding que nous avons utilisé dans mon précédent blog pour extraire et intégrer les données, à savoir le modèle HuggingFace MiniLM L12. Nous pouvons charger ces données via LlamaIndex à l’aide du module HuggingFaceEmbedding.
from llama_index.embeddings import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-MiniLM-L12-v2")
Deuxièmement, nous configurons la base de données vectorielle. Comme Zilliz Cloud est une version entièrement gérée et optimisée de Milvus, nous pouvons nous y connecter à l’aide du module MilvusVectorStore. Nous fournissons l’URI, le jeton, le nom de la collection, la métrique de similarité et la clé de texte pour nous connecter à notre instance Milvus hébergée dans Zilliz Cloud.
Nous avons obtenu notre URI Zilliz et nos jetons plus tôt à partir de nos variables d’environnement. Le nom de la collection, la métrique de similarité et la clé de texte sont hérités de la première partie de cette série de blogs, où nous avons créé la collection lors de l’ingestion.
from llama_index.vector_stores import MilvusVectorStore
vdb = MilvusVectorStore(
uri = zilliz_uri,
token = zilliz_token,
collection_name = "tds_articles",
similarity_metric = "L2",
text_key="paragraph"
)
Enfin, nous rassemblons nos abstractions de données LlamaIndex. Les deux éléments natifs dont nous avons besoin sont le contexte de service, qui transmet certains services prédéfinis, et l’index de magasin vectoriel, qui crée un « index » LlamaIndex à partir d’un magasin vectoriel. Nous utilisons le contexte de service pour transmettre notre modèle d’embedding dans ce cas. Ensuite, nous transmettons la base de données vectorielle Milvus existante et le contexte de service créé pour créer notre index vectoriel.
from llama_index import VectorStoreIndex, ServiceContext
service_context = ServiceContext.from_defaults(embed_model=embed_model)
vector_index = VectorStoreIndex.from_vector_store(vector_store=vdb, service_context=service_context)
Ancrer nos résultats via des citations dans LlamaIndex
Les citations et attributions constituent un ajout important à votre RAG. Elles vous permettent de savoir d’où proviennent les réponses dans votre corpus de documents et d’évaluer dans quelle mesure vos résultats RAG sont ancrés.
LlamaIndex fournit un moyen simple d’implémenter des citations via leur module CitationQueryEngine. Il est très facile de démarrer avec ce module. En utilisant from_args et en transmettant l’index vectoriel, nous pouvons instancier un moteur de requêtes avec citations. Nous avons défini le champ de texte dans l’index vectoriel plus tôt, nous n’avons donc rien besoin d’ajouter.
from llama_index.query_engine import CitationQueryEngine
query_engine = CitationQueryEngine.from_args(
vector_index
)
Une fois que nous avons un moteur de requêtes, il nous suffit d’envoyer une requête. Pour cet exemple, j’ai demandé : « Qu’est-ce qu’un grand modèle de langage ? » C’est une réponse que nous nous attendons à pouvoir obtenir depuis Towards Data Science. J’ai également ajouté pprint pour afficher joliment la sortie.
res = query_engine.query("What is a large language model?")
from pprint import pprint
pprint(res)
L’image ci-dessous montre un exemple de ce à quoi pourrait ressembler une réponse. Elle contient la réponse et cite ses sources dans le texte. Elle nous permet de savoir que la réponse est ancrée et d’où elle provient.
Résumé de l’ancrage des résultats RAG via des citations et attributions
Ce tutoriel est le troisième d’une série consacrée à la création d’un chatbot via RAG. Nous utilisons les mêmes données de Towards Data Science pour tous ces tutoriels. Ce tutoriel utilise des citations et attributions pour garantir que vos résultats sont ancrés.
Les citations et l’attribution résolvent deux problèmes que RAG rencontre traditionnellement. Premièrement, elles nous permettent de savoir d’où nous extrayons les données. Deuxièmement, elles nous permettent de voir dans quelle mesure les réponses sont « vraies » selon les données. Ce concept est également appelé « ancrage ».
Nous avons utilisé LlamaIndex et Zilliz Cloud pour construire ce tutoriel RAG. LlamaIndex nous permet de lancer facilement un moteur qui extraira les citations tant qu’elles existent dans le magasin vectoriel. Zilliz Cloud nous permet de conserver facilement les données entre plusieurs projets.
Pour relire l’ensemble de la série Chat Towards Data Science, voici les liens :
Continuer à lire

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

AI Integration in Video Surveillance Tools: Transforming the Industry with Vector Databases
Discover how AI and vector databases are revolutionizing video surveillance with real-time analysis, faster threat detection, and intelligent search capabilities for enhanced security.



