IncarnaMind: マルチドキュメントの会話型チャットをサポート
オリジナルの GitHubStore GitHubStore
収録作品 #AIアプリ 73
プロジェクトの説明
IncarnaMind を使用すると、GPT (アーキテクチャ プロファイル) などの大規模言語モデル (LLM) を使用して個人ドキュメント (PDF、TXT) とチャットできます。OpenAI は最近、GPT モデルの微調整 API を開始しましたが、基本的な事前トレーニング済みモデルに新しいデータを学習させることができず、応答が真実であるかのような錯覚を起こしやすい可能性があります。スライディング ウィンドウ ブロック メカニズムと Emsemble Retriever を活用することで、グラウンド トゥルース ドキュメント内の粒度の細かい情報と粗粒度の情報を効率的にクエリして、LLM を強化できます。
Langchain と Chroma DB を利用しています。
解決された課題
-
固定ブロッキング: 当社のスライディング ウィンドウ ブロッキング テクノロジーは、時間、計算能力、パフォーマンスの点でバランスの取れたソリューションを提供します。
-
精度とセマンティクス: 小さなチャンクではきめ細かい情報の取得が可能ですが、大きなチャンクでは粗いデータに焦点が当てられます。埋め込みベースの手法と BM25 手法を利用して、ハイブリッド検索手法を実装します。
-
単一ドキュメントの制限: IncarnaMind は複数ドキュメントのクエリをサポートし、一度に 1 ドキュメントという障壁を打ち破ります。
-
安定性: 異なる LLM 間で安定した解析を保証するために、エージェントの代わりにチェーンを使用します。
建築
高レベルのアーキテクチャ
スライディングウィンドウのブロック
主な特徴
-
アダプティブ チャンキング: テキスト チャンクのサイズと位置を動的に調整して、検索拡張生成 (RAG) を改善します。
-
マルチドキュメントの会話型 QA: 複数のドキュメントにわたる単純なマルチホップ クエリを同時に実行します。
-
ファイルの互換性: PDF および TXT ファイル形式をサポートします。
-
LLM モデルの互換性: OpenAI GPT および Anthropic Claude モデルをサポートします。
使い始める
1. インストール
インストールは簡単で、いくつかのコマンドを実行するだけです
1.0。前提条件
-
3.8 ≤ Python < 3.11 (Conda あり)
-
OpenAI API キーまたは Anthropic Claude API キー
-
そしてもちろん、あなた自身のファイルも。
1.1. リポジトリのクローンを作成する
git clone https://github.com/junruxiong/IncarnaMind
cd IncarnaMind
1.2.インストール
Conda 仮想環境を作成する
conda create -n IncarnaMind python=3.10
起動する
conda activate IncarnaMind
すべての要件をインストールする
pip install -r requirements.txt
configparser.ini ファイルに API キーを設定します。
[tokens]
OPENAI_API_KEY = sk-(replace_me)
and/or
ANTHROPIC_API_KEY = sk-(replace_me)
(オプション) configparser.ini ファイルにカスタム パラメータを設定します。
[parameters]
PARAMETERS 1 = (replace_me)
PARAMETERS 2 = (replace_me)
...
PARAMETERS n = (replace_me)
2. 使用方法
2.1. ファイルをアップロードして処理する
すべてのファイル (パフォーマンスを最大化するために、各ファイルに正しい名前を付けてください) を /data ディレクトリに配置し、次のコマンドを実行してすべてのデータを抽出します: (このコマンドを実行する前に、/data ディレクトリ内のサンプル ファイルを削除できます)
python docs2db.py
2.2.実行
会話を開始するには、次のコマンドを実行します。
python main.py
2.3. チャットして質問する
待機スクリプトでは、以下に示すように入力が必要です。
Human:
2.4. その他
チャットを開始すると、システムは IncarnaMind.log ファイルを自動的に生成します。ログを編集する場合は、configparser.ini ファイルで編集します。
[logging]
enabled = True
level = INFO
filename = IncarnaMind.log
format = %(asctime)s [%(levelname)s] %(name)s: %(message)s
プロジェクトリンク
https://github.com/junruxiong/IncarnaMind