Codage d'une expérience RAG AutoAI avec un magasin de vecteurs Chroma
Dernière mise à jour : 21 févr. 2025
Codage d'une expérience RAG AutoAI avec un magasin de vecteurs Chroma
Examinez les directives et les exemples de code pour apprendre à coder une expérience RAG AutoAI en utilisant la base de données Chroma par défaut, en mémoire, comme magasin de vecteurs.
Stockage du contenu vectoriel dans une base de données Chroma
Copy link to section
Lorsque vous configurez votre expérience AutoAI RAG et que vous ne spécifiez pas de connexion à un magasin de vecteurs, le contenu vectorisé est enregistré dans la base de données Chroma par défaut, en mémoire. Le contenu ne persiste pas au-delà de l'expérience, il ne s'agit donc pas d'une méthode de production viable pour déployer un motif RAG. Cependant, il offre une voie rapide pour créer un modèle RAG.
input_data_references supporte jusqu'à 20 instances DataConnection.
Données d'évaluation
Copy link to section
Les données d'évaluation doivent être au format JSON avec un schéma fixe comprenant les champs suivants : question, correct_answer, correct_answer_document_ids
Par exemple :
[
{
"question": "What is the purpose of get_token()?",
"correct_answer": "get_token() is used to retrieve an authentication token for secure API access.",
"correct_answer_document_ids": [
"core_api.html"
]
},
{
"question": "How does the delete_model() function operate?",
"correct_answer": "delete_model() method allows users to delete models they've created or managed.",
"correct_answer_document_ids": [
"core_api.html"
]
}
]
L'objet rag_optimizer fournit un ensemble de méthodes pour travailler avec l'expérience RAG AutoAI. Dans cette étape, entrez les détails pour définir l'expérience. Voici les options de configuration disponibles :
Lancer l'optimiseur pour créer les modèles RAG en utilisant les options de configuration spécifiées. Dans cet exemple de code pour l'exécution d'une expérience Chroma, la tâche est exécutée en mode interactif. Vous pouvez exécuter la tâche en arrière-plan en changeant la valeur de background_mode en True.
Étape 4 : Examiner les modèles et sélectionner le meilleur
Copy link to section
Une fois que l'expérience AutoAI RAG s'est achevée avec succès, vous pouvez examiner les modèles. Utilisez la méthode " summary pour répertorier les modèles terminés et les informations sur les mesures d'évaluation sous la forme d'un DataFrame Pandas afin que vous puissiez examiner les modèles, classés en fonction de leur performance par rapport à la mesure optimisée.
summary = rag_optimizer.summary()
summary
Copy to clipboardCopié dans le presse-papiers
Par exemple, les résultats du modèle s'affichent comme suit :
Schéma
moyenne_des_réponses_correctes
fidélité moyenne
exactitude_du_contexte_moyen
chunking.chunk_size
embeddings.model_id
vector_store.distance_metric
retrieval.method
retrieval.number_of_chunks
generation.model_id
Pattern1
0.6802
0.5407
1.0000
512
ibm/slate-125m-english-rtrvr
euclidien
fenêtre
5
meta-llama/llama-3-70b-instruct
Pattern2
0.7172
0.5950
1.0000
1 024
intfloat/multilingual-e5-large
euclidien
fenêtre
5
ibm/granite-13b-chat-v2
Pattern3
0.6543
0.5144
1.0000
1 024
intfloat/multilingual-e5-large
euclidien
simples
5
ibm/granite-13b-chat-v2
Pattern4
0.6216
0.5030
1.0000
1 024
intfloat/multilingual-e5-large
cosinus
fenêtre
5
meta-llama/llama-3-70b-instruct
Pattern5
0.7369
0.5630
1.0000
1 024
intfloat/multilingual-e5-large
cosinus
fenêtre
3
mistralai/mixtral-8x7b-instruct-v01
Sélectionner un modèle à tester localement
Copy link to section
L'étape suivante consiste à sélectionner un modèle et à le tester localement. Chroma étant en mémoire, vous devez recréer l'index des documents.
Astuce :
Dans l'exemple de code suivant, l'index est construit avec les documents core_api.html et fm_embeddings.html.
payload = {
client.deployments.ScoringMetaNames.INPUT_DATA: [
{
"values": ["How to use new approach of providing credentials to APIClient?"],
}
]
}
best_pattern.query(payload)
Copy to clipboardCopié dans le presse-papiers
La réponse du modèle se présente comme suit :
According to the document, the new approach to provide credentials to APIClient is by using the Credentials class. Here's an example:
from ibm_watsonx_ai import APIClient
from ibm_watsonx_ai import Credentials
credentials = Credentials(
url = "https://us-south.ml.cloud.ibm.com",
token = "***********",
)
client = APIClient(credentials)
This replaces the old approach of passing a dictionary with credentials to the APIClient constructor.
Copy to clipboardCopié dans le presse-papiers
Astuce :
Pour récupérer un motif spécifique, transmettez le numéro du motif à rag_optimizer.get_pattern().
Examen des résultats d'expériences dans le Cloud Object Storage
Copy link to section
Si l'état final de l'expérience est un échec ou une erreur, utilisez rag_optimizer.get_logs() ou reportez-vous aux résultats de l'expérience pour comprendre ce qui n'a pas fonctionné. Les résultats des expériences et les journaux sont stockés dans l'instance par défaut Cloud Object Storage liée à votre compte. Par défaut, les résultats sont enregistrés dans le répertoire default_autoai_rag_out.
Les résultats sont organisés par modèle. Par exemple :
Le fichier evaluation_results.json contient les résultats de l'évaluation pour chaque question de référence.
Le indexing_inference_notebook.ipynb contient le code python pour la construction de l'index de la base de données vectorielle ainsi que pour la construction de la fonction de récupération et de génération. Le carnet de notes présente des commandes pour la récupération des données, la création de chunks et d'embeddings, ainsi que pour la récupération de chunks, la construction d'invites et la génération de réponses.
Remarque :
Le cahier des résultats indexing_notebook.ipynb contient le code d'intégration et d'indexation des documents. Vous pouvez accélérer l'indexation des documents en remplaçant vector_store.add_documents() par vector_store.add_documents_async().
Obtenir le carnet d'inférence et d'indexation
Copy link to section
Pour télécharger un cahier d'inférence spécifique, utilisez le get_inference_notebook(). Si vous laissez pattern_name vide, la méthode télécharge le carnet du meilleur modèle calculé.