AI Personal Learning
und praktische Anleitung
Ressource Empfehlung 1

Agentisches Chunking: KI-Agenten-gesteuerte semantische Textverknüpfung

Einführung

Im Anwendungsbereich von Large Language Models (LLMs), insbesondere im Bereich der retrieval-gestützten Generierung (RAG) spielt das Chunking von Texten eine entscheidende Rolle. Die Qualität des Text Chunking steht in direktem Zusammenhang mit der Gültigkeit der Kontextinformationen, die wiederum die Genauigkeit und Vollständigkeit der von LLM generierten Antworten beeinflussen. Herkömmliche Text-Chunking-Methoden, wie z. B. das Chunking von Zeichen mit fester Größe und die rekursive Textsegmentierung, zeigen ihre inhärenten Grenzen auf, z. B. können sie in der Mitte eines Satzes oder einer semantischen Einheit abbrechen, was zu Kontextverlust und semantischer Inkohärenz führt. In diesem Beitrag werden wir uns mit einer intelligenteren Chunking-Strategie, dem Agentic Chunking, beschäftigen, die darauf abzielt, den menschlichen Beurteilungsprozess zu imitieren, um semantisch kohärente Textabschnitte zu erstellen und so die Leistung von RAG-Systemen deutlich zu verbessern. Darüber hinaus werden detaillierte Code-Beispiele bereitgestellt, um den Lesern den Einstieg zu erleichtern.

Referenzlektüre:Einfache, effektive RAG-Retrieval-Strategie: sparse + dense Hybrid-Suche und -Umordnung sowie Verwendung von "cue caching" zur Generierung von dokumentenrelevantem Gesamtkontext für Textabschnitte.


 

Was ist Agentic Chunking?

Agentisches Chunking ist ein hochmoderner LLM-basierter Chunking-Ansatz, der das menschliche Verständnis und Urteilsvermögen bei der Textsegmentierung nachahmt und darauf abzielt, semantisch kohärente Textabschnitte zu erzeugen. Die Kernidee besteht darin, sich auf die "agierenden" Elemente im Text zu konzentrieren, wie z. B. Zeichen, Organisationen usw., und Sätze, die sich auf diese agierenden Elemente beziehen, zu sinnvollen semantischen Einheiten zusammenzufassen.

Kerngedanken: Das Wesen des Agentic Chunking besteht darin, dass es sich nicht einfach auf die Anzahl der Zeichen oder vordefinierte Trennzeichen verlässt, um Text aufzuteilen. Stattdessen werden die semantischen Verständnisfähigkeiten des LLM genutzt, um semantisch eng verwandte Sätze zu Chunks zusammenzufassen, selbst wenn diese Sätze im Originaltext nicht zusammenhängend sind. Dieser Ansatz erfasst die innere Struktur und die semantischen Assoziationen des Textes genauer.

 

Warum brauchen Sie Agentic Chunking?

Herkömmliche Text-Chunking-Methoden haben einige schwer zu ignorierende Einschränkungen:

  • Chunking von Zeichen in fester Größe:
    • Bei diesem Ansatz wird der Text mechanisch in Blöcke mit einer vordefinierten festen Länge aufgeteilt. Dies kann dazu führen, dass zwischen Zeichen in der Mitte eines Satzes oder sogar innerhalb von Wörtern abgeschnitten wird, was die semantische Integrität des Textes stark beeinträchtigt.
    • Dabei wird die eigentliche Struktur des Dokuments, wie Überschriften, Listen usw., vollständig ignoriert, was zu Chunking-Ergebnissen führt, die nichts mit der logischen Struktur des Dokuments zu tun haben.
    • Eine willkürliche Segmentierung kann auch dazu führen, dass ansonsten nicht zusammenhängende Themen im selben Textblock vermischt werden, was die kontextuelle Kohärenz weiter beeinträchtigt.
  • Rekursive Textaufteilung:
    • Die rekursive Textsegmentierung stützt sich auf vordefinierte hierarchische Trennzeichen wie Absätze, Sätze, Wörter usw. zur Segmentierung.
    • Dieser Ansatz ist möglicherweise nicht in der Lage, komplexe Dokumentstrukturen, wie z. B. mehrstufige Überschriften, Tabellen usw., effektiv zu behandeln, was zu einem Verlust von Strukturinformationen führt.
    • Es ist immer noch möglich, dass in der Mitte von semantischen Einheiten wie Absätzen oder Aufzählungslisten abgeschnitten wird, was die semantische Integrität beeinträchtigt.
    • Entscheidend ist, dass es der rekursiven Textsegmentierung auch an einem tiefgreifenden Verständnis der Semantik des Textes mangelt, da sie sich bei der Segmentierung nur auf die Oberflächenstruktur stützt.
  • Semantisches Chunking:
    • Beim semantischen Chunking wird versucht, Sätze auf der Grundlage der Ähnlichkeit ihrer Einbettungsvektoren zu gruppieren, um so semantisch relevante Chunks zu erstellen.
    • Wenn sich jedoch Sätze innerhalb eines Absatzes in ihrer Semantik erheblich unterscheiden, kann das semantische Chunking diese Sätze fälschlicherweise in verschiedene Chunks einordnen, was zu einer Beeinträchtigung der Kohärenz innerhalb des Absatzes führt.
    • Darüber hinaus erfordert das semantische Chunking in der Regel eine große Anzahl von Ähnlichkeitsberechnungen, insbesondere bei der Verarbeitung großer Dokumente, wodurch die Rechenkosten erheblich steigen.

Agentic Chunking überwindet die Einschränkungen der oben genannten traditionellen Methoden durch die folgenden Vorteile:

  • Semantische Kohärenz: Agentic Chunking ist in der Lage, semantisch aussagekräftigere Textabschnitte zu generieren, was die Genauigkeit beim Auffinden relevanter Informationen erheblich verbessert.
  • Kontexterhaltung: Die kontextuelle Kohärenz innerhalb von Textblöcken bleibt besser erhalten, wodurch LLM genauere und kontextbezogene Antworten generieren kann.
  • Flexibilität: Die Agentic Chunking-Methode zeichnet sich durch ein hohes Maß an Flexibilität aus, da sie sich an Dokumente unterschiedlicher Länge, Struktur und Inhaltstypen anpassen kann und somit ein breiteres Spektrum an Anwendungen ermöglicht.
  • Robustheit: Agentic Chunking verfügt über einen perfekten Schutz- und Fallback-Mechanismus, der selbst bei ungewöhnlich komplexer Dokumentenstruktur oder LLM-Leistungseinschränkungen die Effektivität und Stabilität des Chunking gewährleistet.

 

Wie Agentic Chunking funktioniert

Der Arbeitsablauf des Agentic Chunking besteht aus den folgenden Hauptschritten:

  • Mini-Chunk-Erstellung:
    • Erstens verwendet Agentic Chunking eine rekursive Textsegmentierungstechnik, um das Eingabedokument zunächst in kleinere Mikrochunks zu unterteilen. Die Größe jedes Mikrochunks kann zum Beispiel auf etwa 300 Zeichen begrenzt werden.
    • Während des Segmentierungsprozesses achtet Agentic Chunking besonders darauf, dass Miniatur-Chunks nicht in der Mitte eines Satzes abgeschnitten werden, um die grundlegende semantische Integrität zu wahren.
  • Markierung von Mini-Chunks:
    • Anschließend wird jedem Mikroblock eine eindeutige Markierung hinzugefügt. Diese Markierung hilft LLM, die Grenzen der einzelnen Mikroblöcke bei der nachfolgenden Verarbeitung zu identifizieren.
    • Es ist wichtig anzumerken, dass das LLM den Text eher auf der Grundlage der Token Er ist jedoch gut darin, strukturelle und semantische Muster im Text zu erkennen. Die Markierung von Mikroblöcken hilft dem LLM, Blockgrenzen zu erkennen, auch wenn er die Zeichen nicht genau zählen kann.
  • LLM-unterstützte Chunk-Gruppierung:
    • Legen Sie dem LLM das markierte Dokument zusammen mit den spezifischen Anweisungen vor.
    • An diesem Punkt besteht die Aufgabe des LLM darin, eine eingehende Analyse der Abfolge von Miniaturbrocken durchzuführen und sie auf der Grundlage der semantischen Verwandtschaft zu größeren, semantisch kohärenteren Textbrocken zu kombinieren.
    • Während des Gruppierungsprozesses können Einschränkungen, wie z. B. die maximale Anzahl der in jedem Block enthaltenen Mikroblöcke, festgelegt werden, um die Größe der Blöcke entsprechend den tatsächlichen Anforderungen zu steuern.
  • Chunk-Montage:
    • Kombinieren Sie die vom LLM ausgewählten Mikroblöcke, um die endgültige Ausgabe des Agentic Chunking zu bilden - einen Textblock.
    • Um diese Textblöcke besser verwalten und nutzen zu können, können jedem Block relevante Metadaten hinzugefügt werden, wie z. B. die Quellenangaben des Originaldokuments, die Indexposition des Textblocks im Dokument usw.
  • Chunk-Überlappung zur Erhaltung des Kontexts:
    Um die Kohärenz des Kontexts zwischen den Blöcken zu gewährleisten, überschneidet sich der endgültig generierte Block in der Regel bis zu einem gewissen Grad mit den vorangehenden und nachfolgenden Mikroblöcken. Dieser Überschneidungsmechanismus hilft LLM, die Kontextinformationen bei der Verarbeitung benachbarter Textblöcke besser zu verstehen und eine Informationsfragmentierung zu vermeiden.
  • Leitplanken und Rückfallmechanismen:
    • Block Size Limit: Erzwingt die Festlegung einer maximalen Blockgröße, die sicherstellt, dass die generierten Textblöcke immer innerhalb der Eingabelänge des LLM liegen, um Probleme durch zu lange Eingaben zu vermeiden.
    • Context Window Management: Bei sehr langen Dokumenten, deren Länge die LLM-Kontextfenstergrenze überschreitet, kann Agentic Chunking diese auf intelligente Weise in mehrere überschaubare Teile aufteilen und in Batches verarbeiten, um eine effiziente und effektive Verarbeitung zu gewährleisten.
    • Validierung: Nachdem das Chunking abgeschlossen ist, führt Agentic Chunking auch einen Validierungsprozess durch, um zu bestätigen, dass alle Mikrochunks korrekt in den endgültigen Textblock aufgenommen wurden, damit keine Informationen fehlen.
    • Rückgriff auf rekursives Chunking: Wenn die LLM-Verarbeitung fehlschlägt oder aus irgendeinem Grund nicht verfügbar ist, kann Agentic Chunking auf herkömmliche rekursive Text-Chunking-Methoden zurückgreifen und so sicherstellen, dass die grundlegende Chunking-Funktionalität in allen Fällen gewährleistet ist.
    • Parallele Verarbeitung: Agentic Chunking unterstützt parallele Verarbeitung Modus, durch den Einsatz von Multi-Threading und andere Technologien, können Sie erheblich beschleunigen die Verarbeitungsgeschwindigkeit des Textes Chunking, vor allem bei der Verarbeitung von großen Dokumenten, wenn der Vorteil ist mehr offensichtlich.

 

Anwendungen von Agentic Chunking

Die Agentic Chunking-Technologie hat ein großes Potenzial für die Anwendung in einer Reihe von Bereichen:

1. verbessertes Lernen

  • Definition und Erläuterung: Agentic RAG optimiert den Lernprozess, indem es komplexe Informationen in überschaubare Einheiten zerlegt und so das Verständnis und die Merkfähigkeit der Lernenden verbessert. Dieser Ansatz legt besonderes Augenmerk auf die "agenturischen" Elemente eines Textes (z.B. Charaktere, Organisationen). Indem die Informationen um diese Kernelemente herum organisiert werden, ist die agenturische RAG in der Lage, kohärentere und zugänglichere Lerninhalte zu schaffen.
  • Rolle im Lernprozess: Agentische RAG-Frameworks spielen eine immer wichtigere Rolle in modernen Bildungsmethoden. Durch den Einsatz intelligenter Agenten, die auf der RAG-Technologie basieren, können Pädagogen die Inhalte flexibler auf die individuellen Bedürfnisse der verschiedenen Lernenden zuschneiden.
  • Anwendungen im Bildungswesen: Immer mehr Bildungseinrichtungen nutzen die Technologie von Agentic RAG, um ihre Lehrstrategien zu erneuern, ansprechende und personalisierte Lehrpläne zu entwickeln und die Lehr- und Lernergebnisse zu verbessern.
  • Auswirkungen auf das Engagement der Schüler: Agentic Chunking steigert die Konzentration, die Motivation und das Interesse der Schüler am Lernen, indem es Informationen in klar strukturierten, leicht verständlichen Textblöcken präsentiert.
  • Effektive Mustererkennung: Eine eingehende Analyse und Identifizierung effektiver Muster beim Einsatz von Agentic RAG-Systemen im Bildungsbereich ist für die kontinuierliche Optimierung von Bildungsergebnissen unerlässlich.

2. verbesserte Informationsspeicherung

  • Kognitive Prozesse: Die agentische RAG-Technologie macht sich die natürliche Tendenz der menschlichen kognitiven Prozesse zunutze, Informationen zu organisieren und zu verknüpfen, um das Behalten von Informationen zu verbessern. Das Gehirn zieht es vor, Daten in überschaubaren Einheiten zu organisieren, was den Prozess des Abrufens und Erinnerns von Informationen erheblich vereinfacht.
  • Verbesserter Gedächtnisabruf: Durch die Konzentration auf die "handelnden" Elemente des Textes (z. B. Personen oder Organisationen) sind die Lernenden in der Lage, den Lernstoff leichter mit ihrem vorhandenen Wissensschatz zu verknüpfen und so die gelernten Informationen besser abzurufen und zu festigen.
  • Langfristige Strategien zur Wissenserhaltung: Die Integration der Agentic RAG-Technologie in die tägliche Lernpraxis hilft bei der Entwicklung effektiver Strategien für kontinuierliches Lernen und Wissensakkumulation, die eine langfristige Wissenserhaltung und -entwicklung ermöglichen.
  • Praktische Anwendungen: In Bereichen wie Bildung und Unternehmensschulung kann die Präsentation der Inhalte von Agentic RAG an die Bedürfnisse bestimmter Zielgruppen angepasst werden, um Informationen optimal zu vermitteln und aufzunehmen.

3. effiziente Entscheidungsfindung

  • Geschäftsanwendungen: In der Geschäftswelt revolutioniert das Agentic RAG System das Entscheidungsparadigma von Geschäftsführern, indem es einen strukturierten Rahmen für die Entscheidungsfindung bietet. Es bietet einen Rahmen, der die Wissenschaft der strategischen Planung und der operativen Effizienz erheblich verbessert.
  • Entscheidungsrahmen: Agentic RAG ist in der Lage, komplexe Geschäftsdaten und -informationen in kleinere, besser handhabbare Teile zu zerlegen, was den Entscheidungsträgern im Unternehmen hilft, sich auf die Schlüsselelemente zu konzentrieren, sich nicht in der Masse der Informationen zu verlieren und die Entscheidungseffizienz zu verbessern.
  • Vorteile für Unternehmensleiter: Agentic RAG hilft Unternehmensleitern, ein tieferes Verständnis für Markttrends und Kundenbedürfnisse zu erlangen und damit eine genauere Entscheidungshilfe für strategische Anpassungen und Marktreaktionen zu erhalten.
  • Schritte zur Umsetzung:
    • Identifizieren Sie die wichtigsten Geschäftsbereiche, in denen die Agentic RAG-Technologie einen Mehrwert für Ihr Unternehmen schaffen kann.
    • Entwicklung einer maßgeschneiderten Implementierung von Agentic RAG, die in hohem Maße auf die strategischen Ziele der Organisation abgestimmt ist.
    • Schulung des Personals in der Anwendung des Agentic RAG-Systems, um sicherzustellen, dass das System wirksam umgesetzt und angewendet werden kann.
    • Überwachen Sie kontinuierlich den Betriebseffekt des Agentic RAG-Systems und passen Sie die Optimierungsstrategie entsprechend der tatsächlichen Anwendungssituation an, um eine maximale Systemleistung zu gewährleisten.

 

Vorteile des Agentic Chunking

  • Semantische Kohärenz: Agentic Chunking erzeugt semantisch bedeutsamere Textabschnitte und verbessert so die Genauigkeit der abgerufenen Informationen erheblich.
  • Kontexterhaltung: Agentic Chunking erhält effektiv die kontextuelle Kohärenz innerhalb von Textblöcken aufrecht, was es LLMs ermöglicht, genauere und kontextualisierte Antworten zu generieren.
  • Flexibilität: Agentic Chunking zeigt eine hervorragende Flexibilität bei der Anpassung an Dokumente unterschiedlicher Länge, Struktur und Inhaltsart.
  • Robustheit: Agentic Chunking verfügt über eingebaute Schutz- und Fallback-Mechanismen, die einen stabilen Systembetrieb auch im Falle von Anomalien in der Dokumentenstruktur oder Leistungseinschränkungen des LLM gewährleisten.
  • Anpassungsfähigkeit: Agentic Chunking lässt sich nahtlos in verschiedene LLMs integrieren und unterstützt eine fein abgestimmte Optimierung für spezifische Anwendungsanforderungen.

 

Agentic Chunking in Aktion

  • Verringerung falscher Annahmen um 92%: Das Manko herkömmlicher Chunking-Methoden ist, dass ungenaues Chunking zu falschen Annahmen des KI-Systems führen kann. Agentic Chunking reduziert solche Fehler erfolgreich um sage und schreibe 92%.
  • Verbesserte Vollständigkeit der Antworten: Agentic Chunking verbessert die Vollständigkeit der Antworten erheblich, so dass die Benutzer umfassendere und genauere Antworten erhalten und die Benutzererfahrung deutlich verbessert wird.

 

Implementierung von Agentic Chunking (Python-Beispiel)

Dieser Abschnitt enthält ein Beispiel für die Implementierung von Agentic Chunking Python-Code auf der Grundlage des Langchain-Frameworks sowie eine detaillierte Schritt-für-Schritt-Erklärung des Codes, um den Lesern einen schnellen Einstieg zu ermöglichen.

Voraussetzung:

  • Stellen Sie sicher, dass die Python-Bibliotheken Langchain und OpenAI installiert sind:pip install langchain openai
  • Konfigurieren Sie den OpenAI-API-Schlüssel.

Beispiel-Code:

from langchain_core.prompts importieren ChatPromptTemplate
von langchain_openai importieren ChatOpenAI
from langchain_core.pydantic_v1 importieren BaseModel, Feld
from langchain importieren Hub
# 1. Text-Vorschlag
# Beispieltext
text = """
Am 20. Juli 1969 betrat der Astronaut Neil Armstrong den Mond.
Er leitete die Apollo-11-Mission der NASA.
Als er die Mondoberfläche betrat, sagte Armstrong: "Das ist ein kleiner Schritt für den Menschen, ein großer Sprung für die Menschheit".
Später hisste er die amerikanische Flagge.
Die Mission war ein Erfolg.
"""
# Holen Sie die propositionalisierte Prompt-Vorlage von Langchain Hub
obj = hub.pull("wfh/vorschlags-indexing")
# Verwendung des GPT-4o-Modells
llm = ChatOpenAI(model="gpt-4o")
# Definieren des Pydantic-Modells zur Extraktion von Sätzen
class Sentences(BaseModel).
sentences: list[str]
# LLM mit strukturierten Ausgaben erstellen
extraction_llm = llm.with_structured_output(Sentences)
# Erstellen einer Satz-Extraktionskette
extraktion_kette = obj | extraktion_llm
# Text in Absätze aufteilen (zur Vereinfachung des Beispiels wird in diesem Artikel davon ausgegangen, dass der Eingabetext nur einen Absatz enthält; die eigentliche Anwendung kann mit Texten mit mehreren Absätzen umgehen)
Absätze = [Text]
sätze = []
for p in paragraphs.
sentences = extraction_chain.invoke(p)
sätze.extend(sätze.sätze)
print("Sätze:", sätze)
# 2. LLM-Agent erstellen
# Definieren Sie das Chunk-Metadatenmodell
class ChunkMeta(BaseModel).
title: str = Field(description="Der Titel des Chunks.")
summary: str = Field(description="Die Zusammenfassung des Chunks.")
# LLM für die Erstellung der Zusammenfassung und des Titels (hier können Modelle mit niedrigeren Temperaturen verwendet werden)
summary_llm = ChatOpenAI(Temperatur=0)
# LLM für die Blockzuweisung
allocation_llm = ChatOpenAI(Temperatur=0)
# Wörterbuch zum Speichern der erstellten Textblöcke
chunks = {}
# 3. funktionen zum Erstellen neuer Chunks
def create_new_chunk(chunk_id, vorschlag):
summary_prompt_template = ChatPromptTemplate.from_messages(
[
(
"system".
"Erzeuge eine neue Zusammenfassung und einen Titel basierend auf den Vorschlägen.",
),
(
"user".
"Vorschläge:{Vorschläge}", ), ("Benutzer", "Benutzer", "Vorschläge:{Vorschläge}", (
),
]
)
summary_chain = summary_prompt_template | summary_llm
chunk_meta = summary_chain.invoke(
{
"vorschläge": [vorschläge], {
}
)
chunks[chunk_id] = {
"chunk_id": chunk_id, # add chunk_id
"Zusammenfassung": chunk_meta.summary,
"title": chunk_meta.title, "propositions": [propositions]: chunk_meta.
"vorschläge": [vorschläge],
}
return chunk_id # return chunk_id
# 4. funktionen zum Hinzufügen von Vorschlägen zu einem bestehenden chunk
def add_proposition(chunk_id, proposition).
summary_prompt_template = ChatPromptTemplate.from_messages(
[
(
"system".
"Wenn die aktuelle_Zusammenfassung und der Titel für die Vorschläge noch gültig sind, gib sie zurück.
"Wenn nicht, generiere eine neue Zusammenfassung und einen Titel basierend auf den Vorschlägen.",
),
(
"user".
"current_summary:{current_summary}\ncurrent_title:{current_title}\npropositions:{propositions}", ), ( "current_summary:{current_summary}\ncurrent_title:{current_title}\npropositions}", (
),
]
)
summary_chain = summary_prompt_template | summary_llm
chunk = chunks[chunk_id]
current_summary = chunk["summary"]
current_title = chunk["Titel"]
current_propositions = chunk["propositions"]
all_propositions = current_propositions + [proposition]
chunk_meta = summary_chain.invoke(
{
"aktuelles_Zusammenfassung": aktuelles_Zusammenfassung,
"current_title": current_title,
"vorschläge": all_propositions,
}
)
chunk["summary"] = chunk_meta.summary
chunk["Titel"] = chunk_meta.Titel
chunk["propositions"] = all_propositions
# 5: Kernlogik des Agenten
def find_chunk_and_push_proposition(proposition): class ChunkID(BaseModel): class ChunkID(BaseModel): class ChunkID(BaseModel).
class ChunkID(BaseModel).
chunk_id: int = Field(description="Die Chunk-ID.")
allocation_prompt = ChatPromptTemplate.from_messages(
[
(
"system".
"Sie haben die Chunk-IDs und die Zusammenfassungen."
"Finde den Chunk, der am besten mit dem Vorschlag übereinstimmt."
" "Finde den Chunk, der am besten mit dem Vorschlag übereinstimmt. " "Wenn kein Chunk übereinstimmt, gib eine neue Chunk-ID zurück. "
" "Wenn kein Chunk übereinstimmt, gib eine neue Chunk-ID zurück.", " "Gib nur die Chunk-ID zurück.",
), " "Finde den Chunk, der am besten mit dem Vorschlag übereinstimmt.
" "Gib nur die Chunk-ID zurück.", ), (
"user", "proposition:{proposition:{chunk id.", ), (
"proposition:{proposition}\nchunks_summaries:{chunks_summaries}", ), ("user", ("user", "chunk_summaries", "chunk_summaries",
), .
]
)
allocation_chain = allocation_prompt | allocation_llm.with_structured_output(ChunkID)
chunks_summaries = {
chunk_id: chunk["summary"] for chunk_id, chunk in chunks.items()
}
# Anfängliche Chunks können leer sein, wodurch location_chain.invoke einen Fehler meldet
wenn nicht chunks_summaries.
# Wenn keine Chunks vorhanden sind, erstellen Sie direkt einen neuen Chunk
nächster_chunk_id = 1
create_new_chunk(next_chunk_id, proposition)
return
best_chunk_id = allocation_chain.invoke(
{"vorschlag": vorschlag, "chunks_summaries": chunks_summaries}
).chunk_id
if best_chunk_id nicht in chunks.
# Wenn die zurückgegebene chunk_id nicht existiert, erstellen Sie einen neuen chunk
next_chunk_id = max(chunks.keys(), default=0) + 1 if chunks else 1
create_new_chunk(next_chunk_id, proposition)
sonst.
add_proposition(best_chunk_id, proposition)
# Iterieren Sie durch die Liste der Vorschläge und teilen Sie sie in Stücke
for i, vorschlag in enumerate(vorschläge):
find_chunk_and_push_proposition(proposition)
# Drucken des letzten Satzes
print("\nEndgültige Chunks:")
for chunk_id, chunk in chunks.items():
print(f "Chunk {chunk_id}:")
print(f" Titel: {chunk['Titel']}")
print(f" Zusammenfassung: {chunk['summary']}")
print(f" Thesen: {Stück['Thesen']}")
print("-" * 20)

Code-Erläuterung:

  • Propositionalisierung:
    • Das Codebeispiel verwendet zunächst hub.pull("wfh/proposal-indexing"), um eine vordefinierte propositionalisierte Eingabeaufforderungsvorlage aus dem Langchain Hub zu laden.
    • Als nächstes wurde die LLM-Instanz mit ChatOpenAI(model="gpt-4o") initialisiert, wobei das GPT-4o-Modell für eine bessere Leistung gewählt wurde.
    • Definieren Sie das pydantische Modell Sentences für das strukturierte Parsing der vom LLM ausgegebenen Liste von Sätzen.
    • Konstruiert eine Verbindungskette zwischen der Prompt-Vorlage und der LLM extraction_chain.
    • Um das Beispiel zu vereinfachen, geht dieser Artikel davon aus, dass der Eingabetext nur einen Absatz enthält, die eigentliche Anwendung kann mehrere Textabsätze verarbeiten. Code wird der Beispieltext in eine Liste von Absätzen unterteilt werden.
    • Schleife über den Absatz und Verwendung von extraction_chain, um den Absatz in eine Liste von Aussagen umzuwandeln.
  • Erstellen Sie den LLM-Agenten:
    • Definieren Sie das pydantische Modell ChunkMeta und legen Sie die Struktur der Blockmetadaten (Titel und Zusammenfassung) fest.
    • Erstellen Sie zwei Instanzen von LLM, summary_llm und allocation_llm. summary_llm wird verwendet, um die Zusammenfassung und den Titel eines Textblocks zu erstellen, während allocation_llm dafür zuständig ist, zu bestimmen, in welchen bestehenden Block ein Vorschlag eingefügt werden soll, oder einen neuen Block zu erstellen.
    • Initialisiert das Chunks-Wörterbuch, das zum Speichern der erstellten Textblöcke verwendet wird.
  • create_new_chunk Funktion:
    • Die Funktion akzeptiert chunk_id und proposition als Eingabeparameter.
    • Ausgehend von den Vorschlägen werden der Titel und die Zusammenfassung des Blocks mit summary_prompt_template und summary_llm erstellt.
    • und speichert den neuen Block im Chunks-Wörterbuch.
  • Funktion add_proposition:
    • Die Funktion nimmt auch chunk_id und proposition als Eingabe.
    • Ruft vorhandene Blockinformationen aus dem Chunks-Wörterbuch ab.
    • Aktualisiert die Liste der Vorschläge für den aktuellen Block.
    • Neubewertung und Aktualisierung von Blocktiteln und Zusammenfassungen.
    • und aktualisieren die Metadaten des entsprechenden Blocks im Chunks-Wörterbuch.
  • Funktion find_chunk_and_push_proposition (Kernlogik des Agenten):
    • Definieren Sie das pydantische Modell ChunkID zum Parsen von Block-IDs für die LLM-Ausgabe.
    • Erzeugt ein allocation_prompt, das den LLM anweist, den vorhandenen Block zu finden, der dem aktuellen Vorschlag am besten entspricht, oder eine neue Block-ID zurückzugeben.
    • Erstellen Sie allocation_chain, indem Sie die Prompt-Vorlage und allocation_llm verbinden.
    • Erzeugt das Wörterbuch chunks_summaries, in dem die ID und die Zusammenfassungsinformationen für vorhandene Blöcke gespeichert werden.
    • Wenn das Chunk-Wörterbuch leer ist (d.h. es gibt noch keine Textabschnitte), wird direkt ein neuer Abschnitt erstellt.
    • Verwenden Sie allocation_chain, um LLM aufzurufen, um die ID des am besten passenden Blocks zu erhalten.
    • Wenn die von LLM zurückgegebene chunk_id nicht im chunks-Wörterbuch enthalten ist, was darauf hindeutet, dass ein neuer Textchunk erstellt werden muss, wird die Funktion create_new_chunk aufgerufen.
    • Wenn die zurückgegebene chunk_id bereits im chunks-Wörterbuch vorhanden ist, was bedeutet, dass der aktuelle Vorschlag zu einem bestehenden Textblock hinzugefügt werden soll, rufen Sie die Funktion add_proposition auf.
  • Hauptschleife:
    • Schleife über die Liste von Vorschlägen.
    • Für jeden Vorschlag wird die Funktion find_chunk_and_push_proposition aufgerufen, und der Vorschlag wird dem entsprechenden Textblock zugeordnet.
  • Ergebnisse der Ausgabe:
    • Endgültige Ausgabe des generierten Textblocks, einschließlich Titel, Zusammenfassung und Liste der enthaltenen Vorschläge.

Hinweise zur Verbesserung des Codes:

  • Verbessern Sie die Funktion find_chunk_and_push_proposition, indem Sie die Funktion create_new_chunk direkt aufrufen, wenn das chunks-Wörterbuch leer ist, um mögliche Fehler zu vermeiden.
  • In der Funktion create_new_chunk wird dem Wörterbuch chunks[chunk_id] ein Schlüssel-Wert-Paar chunk_id hinzugefügt, um die Block-ID explizit zu erfassen.
  • Die Optimierung der next_chunk_id-Generierungslogik verbessert die Robustheit der ID-Generierungslogik und gewährleistet eine korrekte ID-Generierung in verschiedenen Szenarien.

 

Bauen vs. Kaufen

Obwohl das Agentic Chunking nur ein Teil des KI-Agenten-Workflows ist, ist es entscheidend für die Erzeugung semantisch kohärenter Textabschnitte. Es hat Vor- und Nachteile, eine eigene Agentic Chunking-Lösung zu entwickeln, anstatt eine Standardlösung zu kaufen:

Vorteile des Selbstbaus:

  • Hoher Grad an Kontrolle und Anpassung: Die selbst erstellte Lösung ermöglicht es den Nutzern, tiefgreifende Anpassungen an ihre spezifischen Bedürfnisse vorzunehmen, von der Gestaltung der Eingabeaufforderung bis zur Optimierung der Algorithmen, die alle perfekt zu den tatsächlichen Anwendungsszenarien passen.
  • Präzises Targeting: Unternehmen können die am besten geeignete Text-Chunking-Strategie für eine optimale Leistung auf der Grundlage ihrer einzigartigen Datenmerkmale und Anwendungsanforderungen anpassen.

Nachteile des Selbstbaus:

  • Hohe Entwicklungskosten: Der Aufbau einer eigenen Agentic Chunking-Lösung erfordert spezielle Kenntnisse der Technologie zur Verarbeitung natürlicher Sprache und eine erhebliche Investition von Entwicklungszeit, was kostspielig ist.
  • Unvorhersehbarkeit des Verhaltens von LLMs: Das Verhalten von LLMs ist manchmal schwer vorherzusagen und zu kontrollieren, was eine technische Herausforderung für selbstgebaute Lösungen darstellt.
  • Laufende Wartungskosten: Generative KI-Technologie entwickelt sich schnell weiter, und selbst entwickelte Lösungen erfordern laufende Investitionen in Wartung und Updates, um mit dem Tempo der technologischen Entwicklung Schritt zu halten.
  • Herausforderungen in der Produktion: Es ist eine Sache, in der Prototyping-Phase gute Ergebnisse zu erzielen, aber es gibt immer noch erhebliche Herausforderungen, wenn es darum geht, Agentic Chunking-Lösungen mit hohen Genauigkeitsraten von 99% oder höher in die Produktion zu bringen.

 

Zusammenfassungen

Agentic Chunking ist eine leistungsstarke Text-Chunking-Technik, die das menschliche Verständnis und Urteilsvermögen nachahmt, um semantisch kohärente Textabschnitte zu erstellen und so die Leistung von RAG-Systemen erheblich zu verbessern. Agentic Chunking überwindet viele der Einschränkungen traditioneller Text-Chunking-Methoden und ermöglicht es LLM, genauere, vollständigere und kontextualisierte Antworten zu generieren.

Dieser Artikel hilft dem Leser, das Funktionsprinzip und die Implementierung von Agentic Chunking anhand von detaillierten Codebeispielen und schrittweisen Erklärungen zu verstehen. Zugegeben, die Implementierung von Agentic Chunking erfordert ein gewisses Maß an technischer Investition, aber die Leistungsverbesserung und der Anwendungswert, den es mit sich bringt, sind offensichtlich. Agentic Chunking ist zweifelsohne eine effektive technische Lösung für jene Anwendungsszenarien, die große Mengen an Textdaten verarbeiten müssen und hohe Leistungsanforderungen an RAG-Systeme stellen.

ZUKÜNFTIGE TRENDS: Zukünftige Richtungen für Agentic Chunking können sein:

  • Tiefe Integration mit Graphdatenbanken, Aufbau von Wissensgraphen und Weiterentwicklung der Graph Structure-based Retrieval Enhanced Generation (Graph RAG) Technologie, um eine tiefere Wissensgewinnung und -nutzung zu erreichen.
  • Kontinuierliche Optimierung des LLM-Hint-Engineerings und des Instruktionsdesigns, um die Genauigkeit und die Verarbeitungseffizienz des Text Chunking weiter zu verbessern.
  • Entwicklung intelligenter Strategien zur Zusammenführung und Aufteilung von Textblöcken, um komplexere und vielfältigere Dokumentstrukturen effektiv zu bewältigen und die Vielseitigkeit von Agentic Chunking zu verbessern.
  • Aktive Erforschung der Anwendung von Agentic Chunking in einem breiteren Spektrum von Bereichen, wie z. B. intelligente Textzusammenfassung, hochwertige maschinelle Übersetzung usw., um die Anwendungsgrenzen zu erweitern.
Inhalt 1
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Agentisches Chunking: KI-Agenten-gesteuerte semantische Textverknüpfung

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)