Viele Lag -Anwendungen verwenden einen vereinfachten Abrufprozess: Dokumente werden in Stücke segmentiert, in Einbettungen umgewandelt und in einer Vektor -Datenbank gespeichert. Abfragen auslösen das Abrufen der am meisten ähnlichen Dokumente, die auf der Einbettung der Ähnlichkeit basieren. Dieser Ansatz leidet jedoch unter Einschränkungen, insbesondere bei umfangreichen Datensätzen. Ambiguität und suboptimaler Informationsabruf können die Genauigkeit beeinträchtigen.
rekursives Abruf verbessert die Abrufpräzision durch Nutzung der Dokumentstruktur. Anstatt direkt abzurufen, priorieren Sie relevante Zusammenfassungen und bohren anschließend auf zugehörige Teile, um fokussiertere Ergebnisse zu erzielen.
Dieser Artikel beschreibt rekursives Abrufen und führt Sie durch seine Implementierung mit LamaNdex.
Langchain erleichtert die Integration externer Daten mit LLMs über Abrufer Augmented Generation (LAG).
Im Gegensatz zu Methoden, die sich ausschließlich auf Rohbetthöfen stützen, sind rekursive Abruf -Einbettungsdokumentenzusammenfassungen und verbinden sie mit ihren entsprechenden Brocken. Abfragen rufen zunächst relevante Zusammenfassungen ab und bestimmen die verwandten Informationen in den zugehörigen Teilen der Zusammenfassungen. Dieser kontextbezogene Ansatz verbessert die Informationsrelevanz.
Dieser Abschnitt führt Sie durch eine Schritt-für-Schritt-Implementierung des rekursiven Abrufs mit Lamaindex, vom Laden der Dokumente bis zur Abfrageausführung.
Schritt 1: Dokumentlade und Vorbereitung
Dokumente werden mit SimpleDirectoryReader
geladen. Jedes Dokument empfängt einen Titel und eine Metadaten (z. B. Kategorie) für eine erweiterte Filterung. Die geladenen Dokumente werden in einem Wörterbuch für einen einfachen Zugriff gespeichert.
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
Schritt 2: LLM- und Chunking -Setup
An LLM (z. B. OpenAIs GPT-4O-Mini) wird zusammen mit einem Satzsplitter für die Erstellung von Chunk und ein Callback-Manager für die Prozessüberwachung initialisiert.
from llama_index.llms.openai import OpenAI from llama_index.core.callbacks import LlamaDebugHandler, CallbackManager from llama_index.core.node_parser import SentenceSplitter # ... (Code for LLM and chunking setup remains the same) ...
Schritt 3: Erstellung und Zusammenfassung der Vektorindex und Zusammenfassung
Für jedes Dokument wird ein Vektorindex erstellt, um das Abrufen von Ähnlichkeiten zu ermöglichen. LLM-generierte Zusammenfassungen werden als Objekte gespeichert. IndexNode
from llama_index.core import VectorStoreIndex, SummaryIndex from llama_index.core.schema import IndexNode # ... (Code for building vector indices and generating summaries remains the same) ...
Schritt 4: Vektorindexkonstruktion der obersten Ebene
Ein Vektorindex auf oberster Ebene wird aus den generierten Zusammenfassungen erstellt, wodurch das erste Abrufen relevanter Zusammenfassungen vor dem Zugriff auf detaillierte Brocken ermöglicht wird.
# ... (Code for building the top-level vector index remains the same) ...
Schritt 5: Rekursives Abruf -Setup
Der rekursive Retriever ist konfiguriert und kombiniert den Retriever auf der obersten Ebene mit einzelnen Dokumenten-Retrievers, um den hierarchischen Abrufprozess zu erleichtern.
from llama_index.core.retrievers import RecursiveRetriever # ... (Code for setting up the recursive retriever remains the same) ...
Schritt 6: Rekursive Abfragen von Abrufen
Beispielabfragen werden mit dem konfigurierten rekursiven Retriever ausgeführt.
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
rekursives Abruf, die Zusammenfassungen und Hierarchien nutzen, verbessert die Relevanz von abgerufenen Brocken, insbesondere bei großen Datensätzen. Es bietet eine robuste Lösung für den Aufbau genauer Abrufsysteme in datenreichen Umgebungen. Weitere Untersuchungen von RAG -Techniken finden Sie in den verknüpften Blog -Posts.
Das obige ist der detaillierte Inhalt vonRekursives Abruf für RAG: Implementierung mit Lamaindex. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!