Heim > Technologie-Peripheriegeräte > KI > Anthropics Kontextabruf: Ein Leitfaden mit Implementierung

Anthropics Kontextabruf: Ein Leitfaden mit Implementierung

William Shakespeare
Freigeben: 2025-03-02 09:34:12
Original
451 Leute haben es durchsucht

retrieval-augmented Generation (RAG) verbessert die KI-Modelle durch Integration externer Wissen. Traditionelles Lappen dokumentiert jedoch oft, verliert einen entscheidenden Kontext und wirkt sich auf die Genauigkeit aus.

Anthropics kontextbezogenes Abruf betrifft dies durch Hinzufügen von prägnanten, kontextreichen Erklärungen zu jedem Dokument-Chunk vor dem Einbettung. Dies reduziert das Abruffehler erheblich, was zu einer verbesserten nachgeschalteten Aufgabenleistung führt. Dieser Artikel beschreibt Kontextabruf und seine Implementierung.

Lag mit Langchain

Nutzen Sie Langchain und Rag, um externe Daten in LLMs zu integrieren.

Kontextabruf erklärte

herkömmliche Lag -Methoden teilen Dokumente in kleinere Stücke, um das Abrufen zu vereinfachen, dies kann jedoch einen wesentlichen Kontext beseitigen. Zum Beispiel könnte ein Stück sagen, dass "seine mehr als 3,85 Millionen Einwohner es zur bevölkerungsreichsten Stadt der Europäischen Union machen", ohne die Stadt anzugeben. Dieser Mangel an Kontext behindert die Genauigkeit.

kontextbezogenes Abrufen löst dies durch die Vorbereitung einer kurzen, kontextspezifischen Zusammenfassung für jeden Chunk vor dem Einbetten. Das vorherige Beispiel würde:

werden
<code>contextualized_chunk = """Berlin is the capital and largest city of Germany, known for being the EU's most populous city within its limits.
Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.
"""</code>
Nach dem Login kopieren

Anthropic's Contextual Retrieval: A Guide With Implementation

Anthropics interne Tests über verschiedene Datensätze hinweg (Codebasen, wissenschaftliche Arbeiten, Fiktion) zeigen, dass das Abrufen des Kontextes die Wiederholungsfehler um bis zu 49% reduziert, wenn sie mit kontextbezogenen Einbettungsmodellen und kontextuellen BM25 gepaart werden.

Anthropic's Contextual Retrieval: A Guide With Implementation

Implementierung des kontextuellen Abrufs

Dieser Abschnitt beschreibt eine Schritt-für-Schritt-Implementierung unter Verwendung eines Beispieldokuments:

<code># Input text for the knowledge base
input_text = """Berlin is the capital and largest city of Germany, both by area and by population.
Its more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.
The city is also one of the states of Germany and is the third smallest state in the country in terms of area.
Paris is the capital and most populous city of France.
It is situated along the Seine River in the north-central part of the country.
The city has a population of over 2.1 million residents within its administrative limits, making it one of Europe's major population centers."""</code>
Nach dem Login kopieren

Schritt 1: Chunk -Kreation

Teilen Sie das Dokument in kleinere, unabhängige Brocken (hier, Sätze):

<code># Splitting the input text into smaller chunks
test_chunks = [
    'Berlin is the capital and largest city of Germany, both by area and by population.',
    "\n\nIts more than 3.85 million inhabitants make it the European Union's most populous city, as measured by population within city limits.",
    '\n\nThe city is also one of the states of Germany and is the third smallest state in the country in terms of area.',
    '\n\n# Paris is the capital and most populous city of France.',
    '\n\n# It is situated along the Seine River in the north-central part of the country.',
    "\n\n# The city has a population of over 2.1 million residents within its administrative limits, making it one of Europe's major population centers."
]</code>
Nach dem Login kopieren

Schritt 2: Eingabeaufforderung Vorlagendefinition

Definieren Sie die Eingabeaufforderung für die Kontextgenerierung (Anthropics Vorlage wird verwendet):

<code>from langchain.prompts import ChatPromptTemplate, PromptTemplate, HumanMessagePromptTemplate

# Define the prompt for generating contextual information
anthropic_contextual_retrieval_system_prompt = """<document>
{WHOLE_DOCUMENT}
</document>
Here is the chunk we want to situate within the whole document
<chunk>
{CHUNK_CONTENT}
</chunk>
Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. Answer only with the succinct context and nothing else."""

# ... (rest of the prompt template code remains the same)</code>
Nach dem Login kopieren

Schritt 3: LLM -Initialisierung

Wählen Sie ein LLM (OpenAIs GPT-4O wird hier verwendet):

<code>import os
from langchain_openai import ChatOpenAI

# Load environment variables
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

# Initialize the model instance
llm_model_instance = ChatOpenAI(
    model="gpt-4o",
)</code>
Nach dem Login kopieren

Schritt 4: Kettenerstellung

Verbinden Sie die Eingabeaufforderung und LLM:

<code>from langchain.output_parsers import StrOutputParser

# Chain the prompt with the model instance
contextual_chunk_creation = anthropic_contextual_retrieval_final_prompt | llm_model_instance | StrOutputParser()</code>
Nach dem Login kopieren

Schritt 5: Chunk -Verarbeitung

Generieren Sie den Kontext für jeden Chunk:

<code># Process each chunk and generate contextual information
for test_chunk in test_chunks:
    res = contextual_chunk_creation.invoke({
        "WHOLE_DOCUMENT": input_text,
        "CHUNK_CONTENT": test_chunk
    })
    print(res)
    print('-----')</code>
Nach dem Login kopieren

(Ausgabe ist im ursprünglichen Beispiel gezeigt)

erneut für eine verstärkte Genauigkeit

erneuert das Abruf weiter durch Priorisierung der relevantesten Brocken. Dies verbessert die Genauigkeit und senkt die Kosten. Bei den Tests von Anthropic verringerte das Reranking die Abholfehler von 5,7% auf 1,9%, eine Verbesserung um 67%.

Anthropic's Contextual Retrieval: A Guide With Implementation

Zusätzliche Überlegungen

für kleinere Wissensbasen (& lt; 200.000 Token), einschließlich der gesamten Wissensbasis direkt in der Eingabeaufforderung möglicherweise effizienter als die Verwendung von Abrufsystemen. Außerdem kann die Verwendung eines sofortigen Caching (verfügbar mit Claude) die Kosten erheblich senken und die Reaktionszeiten verbessern.

Schlussfolgerung

Das kontextbezogene Abruf von

Anthropic bietet eine einfache und dennoch leistungsstarke Methode zur Verbesserung von Lappensystemen. Die Kombination von kontextbezogenen Einbettungen, BM25 und Reranking verbessert die Genauigkeit erheblich. Weitere Untersuchungen anderer Abruftechniken werden empfohlen.

Das obige ist der detaillierte Inhalt vonAnthropics Kontextabruf: Ein Leitfaden mit Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage