Coding an AutoAI RAG experiment with text extraction
Codierung eines AutoAI -RAG-Experiments mit Textextraktion
Letzte Aktualisierung: 05. März 2025
Codierung eines AutoAI -RAG-Experiments mit Textextraktion
Lesen Sie die Richtlinien und Codebeispiele, um zu erfahren, wie Sie ein AutoAI -RAG-Experiment codieren, indem Sie die watsonx -Textextraktion zur Verarbeitung von Eingabedokumenten verwenden.
Sie können die Textextraktion verwenden, um Eingabedokumente für ein AutoAI -RAG-Experiment zu verarbeiten. Durch Textextraktion werden hochwertige Geschäftsdokumente mit Tabellen, Bildern und Diagrammen in ein Markdown-Format umgewandelt. Die resultierenden Markdown-Dateien können dann in einem AutoAI RAG-Experiment verwendet werden, um die Qualität der generierten Muster zu verbessern.
Legen Sie ein Standardprojekt oder einen Standardbereich fest:
client.set.default_project("<Project ID>")
Copy to clipboardIn die Zwischenablage kopiert
client.set.default_space("<Space GUID>")
Copy to clipboardIn die Zwischenablage kopiert
Vorbereitung der Gründungsdokumente
Bereiten Sie die Bewertungsdaten vor
Grundlegende Dokumente
Copy link to section
Bereiten Sie die grundlegenden Dokumente vor, die Sie für die Durchführung des AutoAI RAG-Experiments mit dem Textextraktionsdienst verwenden werden, und stellen Sie eine Verbindung zu diesen her.
Stellen Sie eine Verbindung zu Cloud Object Storage her und rufen Sie die ID ab.
Copy to clipboardIn die Zwischenablage kopiertShow more
Evaluierungsdatum
Copy link to section
Für die Eingabe von Bewertungsdaten:
Die Daten müssen im JSON-Format mit einem festen Schema mit diesen Feldern vorliegen: question, correct_answer, correct_answer_document_ids
correct_answer_document_ids muss sich auf die Ausgabedatei des Textextraktionsdienstes beziehen
benchmarking_data = [
{
"question": "What are the two main variants of Granite Code models?",
"correct_answer": "The two main variants are Granite Code Base and Granite Code Instruct.",
"correct_answer_document_ids": <TEXT EXTRACTION OUTPUT FILENAME>
},
{
"question": "What is the purpose of Granite Code Instruct models?",
"correct_answer": "Granite Code Instruct models are finetuned for instruction-following tasks using datasets like CommitPack, OASST, HelpSteer, and synthetic code instruction datasets, aiming to improve reasoning and instruction-following capabilities.",
"correct_answer_document_ids": <TEXT EXTRACTION OUTPUT FILENAME>
},
{
"question": "What is the licensing model for Granite Code models?",
"correct_answer": "Granite Code models are released under the Apache 2.0 license, ensuring permissive and enterprise-friendly usage.",
"correct_answer_document_ids": <TEXT EXTRACTION OUTPUT FILENAME>
},
]
Copy to clipboardIn die Zwischenablage kopiertShow more
Wenn der Status completed lautet, fahren Sie mit dem nächsten Schritt fort.
Schritt 3: Konfigurieren Sie den RAG-Optimierer
Copy link to section
Das rag_optimizer -Objekt bietet eine Reihe von Methoden für die Arbeit mit dem AutoAI -RAG-Experiment. Geben Sie in diesem Schritt die Details ein, um das Experiment zu definieren. Dies sind die verfügbaren Konfigurationsoptionen:
Führen Sie den Optimierer aus, um die RAG-Muster mithilfe der angegebenen Konfigurationsoptionen zu erstellen. Verwenden Sie die Ausgabe der Textextraktion als Eingabe für Ihr AutoAI -RAG-Experiment.
In diesem Codebeispiel für die Durchführung eines Chroma-Experiments wird die Aufgabe im interaktiven Modus ausgeführt. Sie können die Aufgabe im Hintergrund ausführen, indem Sie background_mode in "True" ändern.
Schritt 5: Überprüfen Sie die Muster und wählen Sie das beste aus
Copy link to section
Nach erfolgreichem Abschluss des AutoAI -RAG-Experiments können Sie die Muster überprüfen. Verwenden Sie die summary -Methode, um abgeschlossene Muster und Bewertungsmetrikinformationen in Form einer Pandas DataFrame aufzulisten, damit Sie die Muster überprüfen können, die nach Leistung im Vergleich zur optimierten Metrik geordnet sind.
summary = rag_optimizer.summary()
summary
Copy to clipboardIn die Zwischenablage kopiert
Beispielsweise werden die Ergebnisse der Muster wie folgt angezeigt:
Muster
richtigkeit der Antwort
mean_faithfulness
mean_context_correctness
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
euclidean
Fenster
5
meta-llama/llama-3-70b-instruct
Pattern2
0.7172
0.5950
1.0000
1024 Zeichen.
intfloat/multilingual-e5-large
euclidean
Fenster
5
ibm/granite-13b-chat-v2
Pattern3
0.6543
0.5144
1.0000
1024 Zeichen.
intfloat/multilingual-e5-large
euclidean
einfach
5
ibm/granite-13b-chat-v2
Pattern4
0.6216
0.5030
1.0000
1024 Zeichen.
intfloat/multilingual-e5-large
Kosinus
Fenster
5
meta-llama/llama-3-70b-instruct
Pattern5
0.7369
0.5630
1.0000
1024 Zeichen.
intfloat/multilingual-e5-large
Kosinus
Fenster
3
mistralai/mixtral-8x7b-instruct-v01
Wählen Sie ein Muster aus, um es lokal zu testen
Copy link to section
Der nächste Schritt besteht darin, ein Muster auszuwählen und es vor Ort zu testen. Da Chroma speicherresident ist, müssen Sie den Dokumentenindex neu erstellen.
Tipp:
Im folgenden Codebeispiel wird der Index mit den Dokumenten core_api.html und fm_embeddings.html erstellt.
payload = {
client.deployments.ScoringMetaNames.INPUT_DATA: [
{
"values": ["How to use new approach of providing credentials to APIClient?"],
}
]
}
best_pattern.query(payload)
Copy to clipboardIn die Zwischenablage kopiert
Die Antwort des Modells sieht so aus:
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 clipboardIn die Zwischenablage kopiert
Tipp:
Um ein bestimmtes Muster abzurufen, senden Sie die Musternummer an rag_optimizer.get_pattern().
Überprüfung der Versuchsergebnisse in Cloud Object Storage
Copy link to section
Wenn das Experiment als fehlgeschlagen oder fehlerhaft eingestuft wird, wenden Sie sich an rag_optimizer.get_logs() oder sehen Sie sich die Ergebnisse des Experiments an, um zu verstehen, was schiefgelaufen ist. Die Ergebnisse und Protokolle der Experimente werden in der Standardinstanz Cloud Object Storage gespeichert, die mit Ihrem Konto verknüpft ist. Standardmäßig werden die Ergebnisse im Verzeichnis default_autoai_rag_out gespeichert.
Die Ergebnisse sind nach Mustern geordnet. Beispiel:
Die Datei evaluation_results.json enthält die Bewertungsergebnisse für jede Benchmark-Frage.
Die indexing_inference_notebook.ipynb enthält den Python -Code für den Aufbau eines Vektordatenbankindex sowie für den Aufbau von Abruf- und Generierungsfunktionen. Das Notizbuch führt Befehle zum Abrufen von Daten, zum Chunking und zur Erstellung von Einbettungen sowie zum Abrufen von Chunks, zum Erstellen von Eingabeaufforderungen und zum Generieren von Antworten ein.
Hinweis:
Das Ergebnis-Notizbuch indexing_notebook.ipynb enthält den Code zum Einbetten und Indizieren der Dokumente. Sie können die Indizierung der Dokumente beschleunigen, indem Sie vector_store.add_documents() in vector_store.add_documents_async() ändern.
Erhalten Sie ein Notizbuch für Schlussfolgerungen und Indexierung
Copy link to section
Um ein bestimmtes Inferenz-Notizbuch herunterzuladen, wenden Sie sich an get_inference_notebook(). Wenn Sie pattern_name leer lassen, lädt die Methode das Notizbuch mit dem besten berechneten Muster herunter.