Codifica di un esperimento RAG AutoAI con un archivio vettoriale Milvus
Ultimo aggiornamento: 21 mar 2025
Codifica di un esperimento RAG AutoAI con un archivio vettoriale Milvus
Esaminate le linee guida e gli esempi di codice per imparare a codificare un esperimento RAG AutoAI con un database Milvus come archivio di vettori.
Per una soluzione RAG aziendale o di produzione, impostare un database vettoriale con Milvus. Il contenuto vettoriale persiste per modelli e integrazioni future. Per ulteriori informazioni, vedere Lavorare con Milvus.
input_data_references supporta fino a 20 istanze DataConnection.
Dati di valutazione
Copy link to section
I dati di valutazione devono essere in formato JSON con uno schema fisso con questi campi: question, correct_answer, correct_answer_document_ids
Ad esempio:
[
{
"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'oggetto rag_optimizer fornisce un insieme di metodi per lavorare con l'esperimento AutoAI RAG. In questa fase si inseriscono i dettagli per definire l'esperimento. Le opzioni di configurazione disponibili sono le seguenti:
Eseguire l'ottimizzatore per creare i modelli RAG utilizzando le opzioni di configurazione specificate. In questo esempio di codice, il task viene eseguito in modalità interattiva. È possibile eseguire l'attività in background cambiando l'opzione background_mode in True.
Fase 4: Esaminare i modelli e selezionare il migliore
Copy link to section
Dopo che l'esperimento AutoAI RAG è stato completato con successo, è possibile rivedere i modelli. Usare il metodo 'summary per elencare i modelli completati e le informazioni sulle metriche di valutazione sotto forma di un DataFrame Pandas, in modo da poter esaminare i modelli, classificati in base alle prestazioni rispetto alla metrica ottimizzata.
summary = rag_optimizer.summary()
summary
Copy to clipboardCopiato negli appunti
Ad esempio, i risultati dei modelli vengono visualizzati in questo modo:
Modello
correttezza_media_delle_risposte
media_fedeltà
correttezza_del_contesto
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
euclideo
finestra
5
meta-llama/llama-3-70b-instruct
Pattern2
0.7172
0.5950
1.0000
1024
intfloat/multilingual-e5-large
euclideo
finestra
5
ibm/granite-13b-chat-v2
Pattern3
0.6543
0.5144
1.0000
1024
intfloat/multilingual-e5-large
euclideo
semplice
5
ibm/granite-13b-chat-v2
Pattern4
0.6216
0.5030
1.0000
1024
intfloat/multilingual-e5-large
coseno
finestra
5
meta-llama/llama-3-70b-instruct
Pattern5
0.7369
0.5630
1.0000
1024
intfloat/multilingual-e5-large
coseno
finestra
3
mistralai/mixtral-8x7b-instruct-v01
Selezionare un modello da testare localmente
Copy link to section
Il passo successivo consiste nel selezionare un modello e testarlo localmente.
best_pattern = rag_optimizer.get_pattern()
Copy to clipboardCopiato negli appunti
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 clipboardCopiato negli appunti
Risposta del modello:
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.
Suggerimento:
Per recuperare un modello specifico, passare il nome del modello a rag_optimizer.get_pattern().
Passo 5: distribuire un modello
Copy link to section
Dopo aver testato un modello localmente, è possibile distribuirlo per ottenere l'endpoint e includerlo nelle applicazioni. La distribuzione avviene memorizzando la funzione RAG definita, quindi creando un asset distribuito. Per ulteriori informazioni sulle distribuzioni, vedere Distribuzione e gestione delle risorse AI e Distribuzioni online.
Il servizio RAG è ora distribuito in uno spazio e disponibile per il test.
Verifica del modello distribuito
Copy link to section
Questo esempio di codice mostra come testare la soluzione distribuita. Inserire le domande del test nel payload, utilizzando il seguente formato:
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 clipboardCopiato negli appunti
Risposta del modello:
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.
Esame dei risultati degli esperimenti in Cloud Object Storage.
Copy link to section
Se lo stato finale dell'esperimento è fallito o errore, utilizzare rag_optimizer.get_logs() o fare riferimento ai risultati dell'esperimento per capire cosa è andato storto. I risultati degli esperimenti e i registri sono archiviati nell'istanza predefinita Cloud Object Storage collegata all'account. Per impostazione predefinita, i risultati vengono salvati con l'ID di formazione dell'esperimento nella directory " default_autoai_rag_out ".
I risultati sono organizzati per modello. Ad esempio:
Il file evaluation_results.json contiene i risultati della valutazione per ogni domanda di benchmark.
Il file indexing_notebook.ipynb contiene il codice python per la creazione di un indice del database vettoriale. Introduce i comandi per il recupero dei dati, il chunking e la creazione di embeddings.
Il notebook inference_notebook.ipynb si concentra sul recupero di brani rilevanti da una base di conoscenza per le interrogazioni dell'utente e sulla generazione di risposte inserendo i brani recuperati in un modello linguistico di grandi dimensioni.
È possibile rivedere i notebook o eseguirli aggiungendo le credenziali di autenticazione.
Nota:
Il quaderno dei risultati indexing_notebook.ipynb contiene il codice per incorporare e indicizzare i documenti. È possibile accelerare l'attività di indicizzazione dei documenti cambiando vector_store.add_documents() con vector_store.add_documents_async().
Ottenere quaderni di inferenza e indicizzazione
Copy link to section
Per scaricare il quaderno di inferenze specificato dal servizio, utilizzare get_inference_notebook(). Se si lascia vuoto il nome del modello, il metodo scarica il blocco note per il modello di rango più alto.