Globale Suche 🔎
Reasoning über den gesamten Datensatz
Baseline RAG hat Schwierigkeiten mit Anfragen, die eine Aggregation von Informationen über den gesamten Datensatz erfordern, um eine Antwort zu erstellen. Anfragen wie „Was sind die Top 5 Themen in den Daten?“ schneiden schlecht ab, da Baseline RAG auf eine Vektorsuche nach semantisch ähnlichen Textinhalten innerhalb des Datensatzes angewiesen ist. In der Anfrage gibt es nichts, das sie zu den richtigen Informationen leitet.
Mit GraphRAG können wir solche Fragen jedoch beantworten, da die Struktur des von der LLM generierten Wissensgraphen uns etwas über die Struktur (und damit die Themen) des Datensatzes als Ganzes verrät. Dies ermöglicht es, den privaten Datensatz in aussagekräftige semantische Cluster zu organisieren, die vorab zusammengefasst werden. Mithilfe unserer globalen Suchmethode nutzt die LLM diese Cluster, um diese Themen bei der Beantwortung einer Benutzeranfrage zusammenzufassen.
Methodik
---
title: Global Search Dataflow
---
%%{ init: { 'flowchart': { 'curve': 'step' } } }%%
flowchart LR
uq[User Query] --- .1
ch1[Conversation History] --- .1
subgraph RIR
direction TB
ri1[Rated Intermediate<br/>Response 1]~~~ri2[Rated Intermediate<br/>Response 2] -."{1..N}".-rin[Rated Intermediate<br/>Response N]
end
.1--Shuffled Community<br/>Report Batch 1-->RIR
.1--Shuffled Community<br/>Report Batch 2-->RIR---.2
.1--Shuffled Community<br/>Report Batch N-->RIR
.2--Ranking +<br/>Filtering-->agr[Aggregated Intermediate<br/>Responses]-->res[Response]
classDef green fill:#26B653,stroke:#333,stroke-width:2px,color:#fff;
classDef turquoise fill:#19CCD3,stroke:#333,stroke-width:2px,color:#fff;
classDef rose fill:#DD8694,stroke:#333,stroke-width:2px,color:#fff;
classDef orange fill:#F19914,stroke:#333,stroke-width:2px,color:#fff;
classDef purple fill:#B356CD,stroke:#333,stroke-width:2px,color:#fff;
classDef invisible fill:#fff,stroke:#fff,stroke-width:0px,color:#fff, width:0px;
class uq,ch1 turquoise;
class ri1,ri2,rin rose;
class agr orange;
class res purple;
class .1,.2 invisible;
Gegeben eine Benutzeranfrage und optional den Gesprächsverlauf, verwendet die globale Suchmethode eine Sammlung von von der LLM generierten Community-Berichten aus einer bestimmten Ebene der Graphenhierarchie als Kontextdaten, um eine Antwort in einer Map-Reduce-Manier zu generieren. Im map-Schritt werden die Community-Berichte in Textabschnitte vordefinierter Größe unterteilt. Jeder Textabschnitt wird dann verwendet, um eine Zwischenantwort zu erzeugen, die eine Liste von Punkten enthält, von denen jeder von einer numerischen Bewertung begleitet wird, die die Wichtigkeit des Punkts angibt. Im reduce-Schritt wird ein gefilterter Satz der wichtigsten Punkte aus den Zwischenantworten aggregiert und als Kontext für die Generierung der endgültigen Antwort verwendet.
Die Qualität der Antwort der globalen Suche kann stark von der Ebene der Community-Hierarchie abhängen, die für die Beschaffung der Community-Berichte gewählt wird. Niedrigere Hierarchieebenen mit ihren detaillierten Berichten ergeben tendenziell gründlichere Antworten, können aber auch die Zeit und die LLM-Ressourcen erhöhen, die für die Generierung der endgültigen Antwort aufgrund des Umfangs der Berichte benötigt werden.
Konfiguration
Unten sind die wichtigsten Parameter der GlobalSearch-Klasse aufgeführt.
llm: OpenAI-Modellobjekt zur Generierung von Antworten.context_builder: Context Builder-Objekt zur Vorbereitung von Kontextdaten aus Community-Berichten.map_system_prompt: Prompt-Vorlage für diemap-Phase. Die Standardvorlage finden Sie unter map_system_prompt.reduce_system_prompt: Prompt-Vorlage für diereduce-Phase. Die Standardvorlage finden Sie unter reduce_system_prompt.response_type: Freiformtext, der den gewünschten Antworttyp und das gewünschte Format beschreibt (z. B.Mehrere Absätze,Mehrseitiger Bericht).allow_general_knowledge: Wenn dieser Wert auf True gesetzt ist, werden zusätzliche Anweisungen fürreduce_system_prompthinzugefügt, um die LLM aufzufordern, relevantes Wissen aus der realen Welt außerhalb des Datensatzes einzubeziehen. Beachten Sie, dass dies Halluzinationen verstärken kann, aber für bestimmte Szenarien nützlich sein kann. Standard ist False. *general_knowledge_inclusion_prompt: Anweisung, die zureduce_system_prompthinzugefügt werden soll, wennallow_general_knowledgeaktiviert ist. Die Standardanweisung finden Sie unter general_knowledge_instruction.max_data_tokens: Token-Budget für die Kontextdaten.map_llm_params: Ein Wörterbuch mit zusätzlichen Parametern (z. B. Temperatur, max_tokens), die an den LLM-Aufruf in dermap-Phase übergeben werden sollen.reduce_llm_params: Ein Wörterbuch mit zusätzlichen Parametern (z. B. Temperatur, max_tokens), die an den LLM-Aufruf in derreduce-Phase übergeben werden sollen.context_builder_params: Ein Wörterbuch mit zusätzlichen Parametern, die an dascontext_builder-Objekt übergeben werden sollen, wenn das Kontextfenster für diemap-Phase erstellt wird.concurrent_coroutines: Steuert den Parallelitätsgrad in dermap-Phase.callbacks: Optionale Callback-Funktionen, die zur Bereitstellung benutzerdefinierter Ereignisbehandlungsroutinen für LLM-Stream-Ereignisse verwendet werden können.
Anwendung
Ein Beispiel für ein globales Suchszenario finden Sie im folgenden Notebook.