Codage d'une expérience RAG AutoAI avec un magasin de vecteurs Milvus
Dernière mise à jour : 21 mars 2025
Codage d'une expérience RAG AutoAI avec un magasin de vecteurs Milvus
Consultez les lignes directrices et les exemples de code pour apprendre à coder une expérience RAG AutoAI avec une base de données Milvus comme magasin de vecteurs.
Pour une solution RAG d'entreprise ou de production, configurez une base de données vectorielle à l'aide de Milvus. Le contenu vectorisé est conservé pour les futurs modèles et intégrations. Pour plus de détails, voir Travailler avec Milvus.
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"
]
}
]
Copy to clipboardCopié dans le presse-papiersShow more
Étape 2 : Configuration de l'optimiseur RAG
Copy link to section
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. Les options de configuration disponibles sont les suivantes :
Lancer l'optimiseur pour créer les modèles RAG en utilisant les options de configuration spécifiées. Dans cet exemple de code, 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.
best_pattern = rag_optimizer.get_pattern()
Copy to clipboardCopié dans le presse-papiers
payload = {
client.deployments.ScoringMetaNames.INPUT_DATA: [
{
"values": ["How to use new approach of providing credentials to APIClient?"],
}
]
}
resp = best_pattern.query(payload)
print(resp["predictions"][0]["values"][0][0])
Copy to clipboardCopié dans le presse-papiers
Réponse du modèle :
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.
Astuce :
Pour récupérer un motif spécifique, transmettez le nom du motif à rag_optimizer.get_pattern().
Étape 5 : Déployer un modèle
Copy link to section
Après avoir testé un modèle localement, vous pouvez le déployer pour obtenir le point final et l'inclure dans les applications. Le déploiement s'effectue en stockant la fonction RAG définie, puis en créant un actif déployé. Pour plus d'informations sur les déploiements, voir Déploiement et gestion des ressources d'IA et Déploiements en ligne.
Le service RAG est maintenant déployé dans un espace et peut être testé.
Test du modèle déployé
Copy link to section
Cet exemple de code montre comment tester la solution déployée. Saisissez les questions du test dans le fichier utile, en utilisant le format suivant :
questions = ["How to use new approach of providing credentials to APIClient?"]
payload = {
client.deployments.ScoringMetaNames.INPUT_DATA: [
{
"values": questions,
"access_token": client.service_instance._get_token()
}
]
}
resp = client.deployments.score(deployment_id, payload)
print(resp["predictions"][0]["values"][0][0])
Copy to clipboardCopié dans le presse-papiers
Réponse du modèle :
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.
Examen des résultats d'expériences dans 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 de Cloud Object Storage qui est liée à votre compte. Par défaut, les résultats sont enregistrés par ID de formation d'expérience 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 fichier indexing_notebook.ipynb contient le code python pour la construction d'un index de base de données vectorielle. Il introduit des commandes pour la récupération des données, le découpage en morceaux et la création d'enchâssements.
Le inference_notebook.ipynb notebook se concentre sur l'extraction de passages pertinents d'une base de connaissances pour les requêtes des utilisateurs et sur la génération de réponses en introduisant les passages extraits dans un grand modèle de langage.
Vous pouvez consulter les carnets ou les exécuter en ajoutant des informations d'authentification.
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 des carnets d'inférence et d'indexation
Copy link to section
Pour télécharger le cahier d'inférence spécifié à partir du service, utilisez get_inference_notebook(). Si le nom du motif n'est pas renseigné, la méthode télécharge le bloc-notes correspondant au motif le mieux classé.