Allgemeine Einführung
zChunk ist eine neuartige Chunking-Strategie, die von ZeroEntropy entwickelt wurde, um eine Lösung für allgemeines semantisches Chunking zu bieten. Die Strategie basiert auf dem Llama-70B-Modell, das den Chunking-Prozess eines Dokuments optimiert, indem es zur Chunk-Generierung auffordert und so sicherstellt, dass beim Informationsabruf ein hohes Signal-Rausch-Verhältnis beibehalten wird. zChunk eignet sich besonders für RAG-Anwendungen (Retrieval Augmentation Generation), die einen hochpräzisen Abruf erfordern, und löst die Einschränkungen herkömmlicher Chunking-Methoden beim Umgang mit komplexen Dokumenten. Mit zChunk können Benutzer Dokumente effektiver in sinnvolle Abschnitte (Chunks) unterteilen und so die Genauigkeit und Effizienz der Informationsabfrage verbessern.
Ihre Aufgabe ist es, als Chunker zu agieren.
Sie sollten den "Absatz" während der gesamten Eingabe einfügen.
Ihr Ziel ist es, den Inhalt in semantisch relevante Gruppierungen aufzuteilen.
Methodik und Grenzen der LLM OCR: Herausforderungen beim Parsen von Dokumenten hinter dem Glamour Die genannten PROMPTs haben einige Gemeinsamkeiten.
Funktionsliste
- Llama-70B-basierter Chunking-AlgorithmusGenerierung von Stichwörtern für semantisches Chunking unter Verwendung des Llama-70B-Modells.
- Chunking mit hohem Signal-Rausch-VerhältnisOptimieren Sie die Chunking-Strategie, um sicherzustellen, dass die abgerufenen Informationen ein hohes Signal-Rausch-Verhältnis aufweisen.
- Mehrere Chunking-StrategienUnterstützt verschiedene Strategien wie Chunking mit fester Größe, Chunking auf der Grundlage von Einbettung und Ähnlichkeit, usw.
- Hyperparameter-AbstimmungBietet eine Pipeline zur Abstimmung von Hyperparametern, mit der die Benutzer Chunk-Größen und Überlappungsparameter entsprechend ihren spezifischen Anforderungen anpassen können.
- offene QuelleVollständig offener Quellcode wird zur Verfügung gestellt und kann vom Benutzer frei verwendet und verändert werden.
Hilfe verwenden
Ablauf der Installation
- Klon-Lager::
git clone https://github.com/zeroentropy-ai/zchunk.git
cd zchunk
- Installation von Abhängigkeiten::
pip install -r anforderungen.txt
Verwendung
- Vorbereiten der EingabedateiSpeichern Sie das zu chunkende Dokument als Textdatei, z.B.
beispiel_eingabe.txt
. - Das Chunking-Skript ausführen::
python test.py --Eingabe Beispiel_Eingabe.txt --Ausgabe Beispiel_Ausgabe.txt
- Anzeigen der Ausgabedatei: Die Chunking-Ergebnisse werden in der Datei
Beispiel_Ausgabe.txt
Mitte.
Detaillierte Funktionsabläufe
- Auswahl einer Chunking-Strategie::
- NaiveChunkFestgelegte Größe von Chunks für einfache Dokumente.
- SemanticChunkChunking: Chunking auf der Grundlage von Einbettungsähnlichkeit für Dokumente, die ihre semantische Integrität bewahren müssen.
- zChunk-AlgorithmusGenerierung von Chunks auf der Grundlage von Hinweisen aus dem Llama-70B-Modell für komplexe Dokumente.
- Anpassung von Hyperparametern::
- StückchengrößeDies kann durch Einstellung des Parameters
chunk_size
um die Größe der einzelnen Chunks festzulegen. - Überlappungsverhältnis: über den Parameter
Überlappungsverhältnis
Legen Sie den Prozentsatz der Überlappung zwischen den Chunks fest, um die Kontinuität der Informationen zu gewährleisten.
- StückchengrößeDies kann durch Einstellung des Parameters
- Hyperparameter-Abstimmung durchführen::
python hyperparameter_tuning.py --input beispiel_input.txt --output tuned_output.txt
Das Skript passt die Chunk-Größe und das Überlappungsverhältnis automatisch an das Eingabedokument an, um optimale Chunking-Ergebnisse zu erzielen.
- Bewertung der Chunking-Effekte::
- Bewerten Sie die Chunking-Ergebnisse mithilfe des mitgelieferten Bewertungsskripts, um die Wirksamkeit der Chunking-Strategie sicherzustellen.
python evaluate.py --input beispiel_input.txt --output beispiel_output.txt
typisches Beispiel
Angenommen, wir haben einen Text der US-Verfassung, der gechunked werden muss:
Ursprünglicher Text:
Abschnitt. 1.
Alle hierin gewährten gesetzgebenden Befugnisse werden einem Kongress der Vereinigten Staaten übertragen, der aus einem Senat und einem Repräsentantenhaus besteht.
Abschnitt. 2.
Das Repräsentantenhaus setzt sich aus Mitgliedern zusammen, die jedes zweite Jahr vom Volk der einzelnen Staaten gewählt werden, und die Wahlmänner in jedem Staat müssen die für Wahlmänner erforderlichen Qualifikationen besitzen. Das Repräsentantenhaus setzt sich aus Mitgliedern zusammen, die jedes zweite Jahr vom Volk der einzelnen Staaten gewählt werden, und die Wähler in jedem Staat müssen die Qualifikationen besitzen, die für die Wähler des zahlreichsten Teils der staatlichen Legislative erforderlich sind.
Keine Person soll ein Repräsentant sein, die nicht das Alter von fünfundzwanzig Jahren erreicht hat und seit sieben Jahren Bürger der Vereinigten Staaten ist, und die wenn er gewählt wird, kein Einwohner des Staates ist, in dem er gewählt wird.
Chunking unter Verwendung des zChunk-Algorithmus:
- Stichwörter auswählenWählen Sie ein spezielles Token (z.B. "Absatz"), das nicht im Korpus enthalten ist.
- Stichwörter einfügen: Llama soll das Token in die Benutzernachricht einfügen.
SYSTEM_PROMPT (vereinfacht):
Ihre Aufgabe ist es, als Chunker zu agieren.
Sie sollen "Segment"-Tags in die Eingabe einfügen.
Ihr Ziel ist es, den Inhalt in semantisch verwandte Gruppen zu unterteilen.
- Chunks generieren::
Abschnitt. 1.
Alle hierin gewährten gesetzgebenden Befugnisse werden einem Kongress der Vereinigten Staaten übertragen, der aus einem Senat und einem Repräsentantenhaus besteht.
Abschnitt. 2.
Das Repräsentantenhaus setzt sich aus Mitgliedern zusammen, die alle zwei Jahre vom Volk der einzelnen Staaten gewählt werden, wobei die Wähler in jedem Staat die für das Amt erforderlichen Qualifikationen besitzen müssen. Die Wahlmänner in den einzelnen Staaten müssen die für das Amt erforderlichen Qualifikationen besitzen, die für die Wahlmänner des zahlreichsten Teils der staatlichen Legislative erforderlich sind.
Keine Person darf ein Abgeordneter sein, die nicht das Alter von fünfundzwanzig Jahren erreicht hat und seit sieben Jahren Bürger der Vereinigten Staaten ist, und die wenn er gewählt wird, kein Einwohner des Staates ist, in dem er gewählt wird.
Auf diese Weise können wir Dokumente in semantisch verwandte Blöcke unterteilen, die unabhängig voneinander abgerufen werden können, wodurch sich das Signal-Rausch-Verhältnis und die Genauigkeit des Informationsabrufs verbessern.
Optimierung
- Mit Local Inference Llama können ganze Passagen effizient verarbeitet und Logprobs untersucht werden, um die Lage der Chunks zu bestimmen.
- Die Verarbeitung von 450.000 Zeichen dauert etwa 15 Minuten, kann aber durch eine Optimierung des Codes erheblich verkürzt werden.
Benchmarking
- zChunk hat eine höhere Retrieval Ratio und Signal Ratio als NaiveChunk und semantische Chunking-Methoden auf dem LegalBenchConsumerContractsQA-Datensatz.
Mit dem zChunk-Algorithmus können wir auf einfache Weise jede Art von Dokument segmentieren, ohne auf reguläre Ausdrücke oder manuell erstellte Regeln angewiesen zu sein, was die Effizienz und Genauigkeit von RAG-Anwendungen verbessert.