AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

zChunk: eine generische semantische Chunking-Strategie basierend auf Llama-70B

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 ein hohes Signal-Rausch-Verhältnis während des Informationsabrufs 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.

zChunk: eine generische semantische Chunking-Strategie auf der Grundlage von Llama-70B-1

 

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

Einbauverfahren

  1. Klon-Lager::
   git clone https://github.com/zeroentropy-ai/zchunk.git
cd zchunk
  1. Installation von Abhängigkeiten::
   pip install -r requirements.txt

Verwendung

  1. Vorbereiten der EingabedateiSpeichern Sie das zu chunkende Dokument als Textdatei, z.B.example_input.txt.
  2. Das Chunking-Skript ausführen::
   python test.py --input example_input.txt --output example_output.txt
  1. Anzeigen der Ausgabedatei: Die Chunking-Ergebnisse werden in der Dateiexample_output.txtMitte.

Detaillierte Funktionsabläufe

  1. 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.
  2. Anpassung von Hyperparametern::
    • StückchengrößeDies kann durch Einstellung des Parameterschunk_sizeum die Größe der einzelnen Chunks festzulegen.
    • Überlappungsverhältnis: über den Parameteroverlap_ratioLegen Sie den Prozentsatz der Überlappung zwischen den Chunks fest, um die Kontinuität der Informationen zu gewährleisten.
  3. Hyperparameter-Abstimmung durchführen::
   python hyperparameter_tuning.py --input example_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.

  1. Bewertung der Auswirkungen von Chunking::
    • Bewerten Sie die Chunking-Ergebnisse mithilfe des mitgelieferten Bewertungsskripts, um die Wirksamkeit der Chunking-Strategie sicherzustellen.
   python evaluate.py --input example_input.txt --output example_output.txt

typisches Beispiel

Angenommen, wir haben einen Text der US-Verfassung, der gechunked werden muss:

Ursprünglicher Text:

Section. 1.
All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives.
Section. 2.
The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.
No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.

Chunking unter Verwendung des zChunk-Algorithmus:

  1. Stichwörter auswählenWählen Sie ein spezielles Token (z.B. "Absatz"), das nicht im Korpus enthalten ist.
  2. Stichwörter einfügen: Llama soll das Token in die Benutzernachricht einfügen.
   SYSTEM_PROMPT (简化版):
你的任务是作为一个分块器。
你应该在输入中插入“段”标记。
你的目标是将内容分成语义相关的组。
  1. Chunks generieren::
   Section. 1.
All legislative Powers herein granted shall be vested in a Congress of the United States, which shall consist of a Senate and House of Representatives.段
Section. 2.
The House of Representatives shall be composed of Members chosen every second Year by the People of the several States, and the Electors in each State shall have the Qualifications requisite for Electors of the most numerous Branch of the State Legislature.段
No Person shall be a Representative who shall not have attained to the Age of twenty five Years, and been seven Years a Citizen of the United States, and who shall not, when elected, be an Inhabitant of that State in which he shall be chosen.段

Auf diese Weise können wir Dokumente in semantisch zusammenhängende Blöcke unterteilen, von denen jeder unabhängig abgerufen werden kann, 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 jede Art von Dokument problemlos segmentieren, ohne auf reguläre Ausdrücke oder manuell erstellte Regeln zurückgreifen zu müssen, was die Effizienz und Genauigkeit von RAG-Anwendungen verbessert.

Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " zChunk: eine generische semantische Chunking-Strategie basierend auf Llama-70B
de_DEDeutsch