はじめに
zChunkは、ZeroEntropy社が開発した、汎用的なセマンティック・チャンキングのためのソリューションを提供する新しいチャンキング戦略です。このストラテジーはLlama-70Bモデルに基づいており、チャンク生成を促すことでドキュメントのチャンキングプロセスを最適化し、情報検索時に高いS/N比が維持されるようにします。zChunkは特に、高精度の検索を必要とするRAG(Retrieval Augmentation Generation)アプリケーションに適しており、複雑なドキュメントを扱う際の従来のチャンキング手法の限界を解決します。zChunk を使用することで、ユーザーはより効果的にドキュメントを意味のあるチャンクに分割することができ、情報検索の精度と効率が向上します。
君の仕事はチャンカーとして行動することだ。
段落」は、入力の至るところに挿入する必要がある。
あなたの目標は、コンテンツを意味的に関連性のあるグループに分けることです。
方法論と LLM OCRの限界:華やかさの下にある文書解析の課題 紹介したPROMPTにはいくつかの共通点がある。
機能一覧
- Llama-70BベースのチャンキングアルゴリズムLlama-70Bモデルを用いた意味チャンキングのためのキューの生成。
- 高S/N比のチャンキングチャンキング戦略を最適化し、検索された情報が高いS/N比を持つようにする。
- 複数のチャンキング戦略固定サイズのチャンキング、埋め込み類似度ベースのチャンキングなど、様々な戦略をサポートします。
- ハイパーパラメータ・チューニング: ハイパーパラメータチューニングパイプラインを提供し、ユーザーが特定のニーズに応じてチャンクサイズやオーバーラップパラメータを調整できるようにします。
- オープンソース完全なオープンソースコードが提供され、ユーザーが自由に使用および変更することができます。
ヘルプの使用
設置プロセス
- クローン倉庫::
git clone https://github.com/zeroentropy-ai/zchunk.git
cd zchunk
- 依存関係のインストール::
pip install -r requirements.txt
使用方法
- 入力ファイルの準備チャンクする文書をテキストファイルとして保存します。
example_input.txt
. - チャンキング・スクリプトの実行::
python test.py --input example_input.txt --output example_output.txt
- 出力ファイルの表示チャンキング結果は
example_output.txt
真ん中だ。
詳細な機能操作の流れ
- チャンキング戦略の選択::
- ナイーブチャンクシンプルな文書には固定サイズのチャンク。
- セマンティックチャンク意味的整合性を維持する必要がある文書のための、埋め込み類似度に基づくチャンキング。
- zチャンク・アルゴリズム複雑な文書に対して、Llama-70Bモデルからのヒントに基づいてチャンクを生成する。
- ハイパーパラメータの調整::
- チャンクサイズこれは、パラメーター
チャンクサイズ
で各チャンクのサイズを設定する。 - オーバーラップ率パラメーター
オーバーラップ率
チャンク間の重複率を設定し、情報の連続性を確保する。
- チャンクサイズこれは、パラメーター
- ハイパーパラメータ・チューニングの実行::
python hyperparameter_tuning.py --input example_input.txt --output tuned_output.txt
このスクリプトは、入力文書に基づいてチャンクサイズとオーバーラップ率を自動的に調整し、最適なチャンキング結果を生成する。
- チャンキングの効果を評価する::
- 提供された評価スクリプトを使ってチャンキング結果を評価し、チャンキング戦略の有効性を確認する。
python evaluate.py --input example_input.txt --output example_output.txt
典型例
チャンク化が必要な合衆国憲法のテキストがあるとする:
原文ママ
第1項
ここに付与されたすべての立法権は、上院および下院で構成される合衆国議会に帰属する。
第2節。
第2項 下院は、2年ごとに各州の人民によって選ばれる議員によって構成されるものとし、各州の選挙人は、選挙人に必要な資格を有するものとする。下院は、数個の州の人民によって2年ごとに選ばれる議員によって構成されるものとし、各州の選挙人は、州議会の最も多数の支部の選挙人に必要な資格を有するものとする。
いかなる者も、25歳に達し、かつ7年間合衆国市民であったことのない者、および選挙されたときに合衆国市民でなかった者は、代表議員になることはできない。選出された時点で、その選出された州の住民であってはならない。
zChunkアルゴリズムによるチャンキング:
- キュー・ワードを選ぶコーパスにない特別なトークン(例えば "パラグラフ")を選択する。
- キューの挿入Llamaにトークンをユーザーメッセージに挿入させる。
SYSTEM_PROMPT(簡略化):
あなたの仕事は、チャンカーとして行動することである。
入力に「セグメント」タグを挿入してください。
あなたの目標は、コンテンツを意味的に関連するグループに分割することです。
- チャンクの生成::
第1項
ここに付与されたすべての立法権は、上院および下院で構成される合衆国議会に帰属する。
第2節。
下院は、2年ごとに複数の州の人民によって選ばれる議員によって構成されるものとし、各州の選挙人は、その職に必要な資格を有するものとする。各州の選挙人は、その職に必要な資格を有しなければならない。
いかなる者も、25歳に達しておらず、かつ7年間米国市民でなかった者であってはならず、また、選挙されるときに、次の各号に掲げる者であってはならない。選出された時点で、その選出された州の住民であってはならない。
このようにして、文書を意味的に関連するブロックに分割し、それぞれを独立して検索できるようにすることで、S/N比と情報検索の精度を向上させることができる。
最適化
- 局所推論Llamaを使えば、パッセージ全体を効率的に処理することができ、チャンクの位置を特定するためにlogprobsを調べることができる。
- 45万文字を処理するのに約15分かかるが、コードを最適化すれば大幅に短縮できる。
ベンチマーキング
- zChunkは、LegalBenchConsumerContractsQAデータセットにおいて、NaiveChunkやセマンティック・チャンキング手法よりも高い検索比率とシグナル比率のスコアを示した。
zChunkアルゴリズムにより、正規表現や手動で作成したルールに頼ることなく、あらゆるタイプのドキュメントを簡単にセグメント化することができ、RAGアプリケーションの効率と精度が向上します。