これを英語で読んでください
LangChain-Chatchat (旧 Langchain-ChatGLM)
ChatGLM などの大規模な言語モデルや Langchain などのアプリケーション フレームワークに基づいており、オフラインで展開できるオープン ソースの RAG およびエージェント アプリケーション プロジェクトです。
概要
機能紹介
0.3.x 機能の概要
サポートされているモデル推論フレームワークとモデル
すぐに始めましょう
pip のインストールとデプロイメント
ソースコードのインストールと展開/開発展開
Docker のデプロイメント
プロジェクトのマイルストーン
お問い合わせ
?️ langchain のアイデアを使用して実装されたローカルのナレッジ ベースに基づく質問と回答のアプリケーション。目標は、中国語のシナリオとオープン ソース モデルに適しており、オフラインで実行できるナレッジ ベースの質問と回答のソリューションを構築することです。
GanymedeNil のプロジェクト document.ai と Alex Zhangji が作成した ChatGLM-6B プル リクエストからインスピレーションを受け、プロセス全体を通じてオープン ソース モデルを使用して実装できるローカル ナレッジ ベース Q&A アプリケーションが確立されました。このプロジェクトの最新バージョンでは、Xinference や Ollama などのフレームワークを使用して、GLM-4-Chat、Qwen2-Instruct、Llama3 などのモデルにアクセスでき、langchain フレームワークに依存して、提供される API を介してサービスの呼び出しをサポートします。 FastAPI を使用するか、Streamlit に基づいた WebUI を使用して操作します。
✅ このプロジェクトは、市場で主流のオープンソース LLM、埋め込みモデル、ベクトル データベースをサポートし、すべてのオープンソースモデルのオフライン プライベート展開を実現できます。同時に、このプロジェクトは OpenAI GPT API の呼び出しもサポートしており、今後もさまざまなモデルやモデル API へのアクセスを拡大していきます。
⛓️ このプロジェクトの実装原理は、ファイルの読み込み -> テキストの読み取り -> テキストの分割 -> テキストのベクトル化 -> 質問のベクトル化 -> 最も類似したテキスト ベクトルのtop k
のマッチングを含むプロセスです。質問ベクトルtop k
-> 一致したテキストがコンテキストとしてprompt
に追加され、質問 -> LLM
に送信されて回答が生成されます。
原理紹介ビデオ
文書処理の観点から見ると、実装プロセスは次のとおりです。
? このプロジェクトには微調整やトレーニングのプロセスは含まれていませんが、微調整やトレーニングを使用してこのプロジェクトの効果を最適化できます。
? AutoDL イメージのバージョン0.3.0
で使用されていたコードが、このプロジェクトのバージョンv0.3.0
に更新されました。
? Docker イメージは近い将来更新される予定です。
?? このプロジェクトに貢献したい場合は、開発ガイドにアクセスして、開発と展開に関する詳細情報を入手してください。
関数 | 0.2.x | 0.3.x |
---|---|---|
モデルアクセス | ローカル: ファストチャット オンライン: XXXModelWorker | ローカル: model_provider、最も主流のモデル読み込みフレームワークをサポート オンライン: oneapi すべてのモデルのアクセスは openai SDK と互換性があります |
エージェント | ❌不安定 | ✅ChatGLM3 および Qwen 用に最適化され、エージェントの機能が大幅に向上 |
LLM の会話 | ✅ | ✅ |
ナレッジベースの会話 | ✅ | ✅ |
検索エンジンの会話 | ✅ | ✅ |
ファイル会話 | ✅ベクトル検索のみ | ✅File RAG機能に統合され、BM25+KNNなどの複数の検索方法をサポート |
データベースダイアログ | ❌ | ✅ |
マルチモーダルピクチャダイアログ | ❌ | ✅ qwen-vl-chat の使用をお勧めします |
ARXIV文学対話 | ❌ | ✅ |
ウルフラムの会話 | ❌ | ✅ |
ヴィンセントの絵 | ❌ | ✅ |
ローカルナレッジベース管理 | ✅ | ✅ |
ウェブUI | ✅ | ✅ より優れたマルチセッションサポート、カスタマイズされたシステムプロンプトワード... |
バージョン 0.3.x のコア機能はエージェントによって実装されますが、ユーザーがツール呼び出しを手動で実装することもできます。
動作モード | 実装された機能 | 該当するシナリオ |
---|---|---|
「エージェントを有効にする」にチェックを入れて複数のツールを選択します | LLMによる自動ツール呼び出し | ChatGLM3/QwenやオンラインAPIなどのエージェント機能を備えたモデルを使用する |
「エージェントを有効にする」にチェックを入れ、ツールを 1 つ選択します | LLM はツールパラメータのみを解析します | 使用されているモデル エージェントの機能は平均的であり、ツールをうまく選択できません。機能を手動で選択したいと考えています。 |
「エージェントを有効にする」のチェックを外し、ツールを 1 つ選択します | エージェント機能を使用せずに、パラメータを手動で入力してツールを呼び出します。 | 使用されているモデルにはエージェント機能がありません |
ツールのチェックを外して画像をアップロードします | 絵会話 | qwen-vl-chat などのマルチモーダル モデルを使用する |
さらに多くの機能やアップデートについては、実際の導入を体験してください。
このプロジェクトは、GLM-4-Chat や Qwen2-Instruct など、市場で主流となっている最近のオープンソースの大規模言語モデルと埋め込みモデルをすでにサポートしています。これらのモデルでは、ユーザーが自分でモデル デプロイメント フレームワークを開始し、ファイルを変更してプロジェクトにアクセスする必要があります。このプロジェクトでサポートされているローカル モデル デプロイメント フレームワークは次のとおりです。
モデル展開フレームワーク | シンファレンス | ローカルAI | オラマ | ファストチャット |
---|---|---|---|---|
OpenAI API インターフェースの調整 | ✅ | ✅ | ✅ | ✅ |
推論エンジンを高速化する | GPTQ、GGML、vLLM、TensorRT、mlx | GPTQ、GGML、vLLM、TensorRT | GGUF、GGML | vLLM |
アクセスモデルタイプ | LLM、埋め込み、再ランク、テキストから画像への変換、ビジョン、オーディオ | LLM、埋め込み、再ランク、テキストから画像への変換、ビジョン、オーディオ | LLM、テキストから画像への変換、ビジョン | LLM、ビジョン |
関数呼び出し | ✅ | ✅ | ✅ | / |
さらなるプラットフォームのサポート (CPU、メタル) | ✅ | ✅ | ✅ | ✅ |
異種混合 | ✅ | ✅ | / | / |
クラスタ | ✅ | ✅ | / | / |
運用ドキュメントのリンク | ドキュメント | LocalAI ドキュメント | オラマのドキュメント | ファストチャットのドキュメント |
利用可能なモデル | Xinference はすでにモデルをサポートしています | LocalAI はすでにモデルをサポートしています | Ollama はすでにモデルをサポートしています | FastChat はすでにモデルをサポートしています |
前述のローカル モデル読み込みフレームワークに加えて、このプロジェクトは、OpenAI ChatGPT、Azure OpenAI API、Anthropic Claude、Zhipu Qingyan、Baichuan、およびその他の一般的に使用されるオンライン API を含むオンライン API への One API フレームワーク アクセスのサポートも提供します。使用。
注記
Xinference のローカル モデルのロードについて: Xinference の組み込みモデルは自動的にダウンロードされます。ローカルにダウンロードしたモデルをロードするには、Xinference サービスを開始した後、プロジェクトの tools/model_loaders ディレクトリでstreamlit run xinference_manager.py
を実行します。ページのプロンプト: モデルを指定するだけでローカル パスを設定します。
? ソフトウェアに関しては、このプロジェクトは Python 3.8 ~ 3.11 環境での使用をサポートしており、Windows、macOS、および Linux オペレーティング システムでテストされています。
? ハードウェアに関しては、バージョン 0.3.0 はさまざまなモデル展開フレームワークへのアクセスをサポートするように変更されているため、CPU、GPU、NPU、MPS などのさまざまなハードウェア条件下で使用できます。
バージョン 0.3.0 以降、Langchain-Chachat は Python ライブラリの形式でインストール方法を提供します。具体的なインストールについては、次を実行してください。
pip install langchain-chatchat -U
重要
使用する Python ライブラリが最新バージョンであることを確認するには、公式の Pypi ソースまたは Tsinghua ソースを使用することをお勧めします。
注記
モデル デプロイメント フレームワーク Xinference では、Langchain-Chachat に接続するときに、対応する Python 依存関係ライブラリの追加インストールが必要となるため、Xinference フレームワークで使用する場合は、次のインストール方法を使用することをお勧めします。
pip install "langchain-chatchat[xinference]" -U
バージョン 0.3.0 以降、Langchain-Chatchat は、ユーザーが入力したローカル モデル パスに基づいてモデルを直接読み込まなくなりました。関連するモデルの種類には、LLM、埋め込み、リランカー、および将来サポートされるマルチモーダル モデルが含まれます。などは、Xinference、Ollama、LocalAI、FastChat、One API など、市場で一般的に入手可能な主要なモデル推論フレームワークへのアクセスをサポートするように変更されました。
したがって、Langchain-Chachat プロジェクトを開始する前に、まずモデル推論フレームワークを実行し、必要なモデルをロードするようにしてください。
ここでは Xinference を例として取り上げます。フレームワークの展開とモデルの読み込みについては、Xinference のドキュメントを参照してください。
警告
依存関係の競合を回避するには、Langchain-Chachat と Xinference などのモデル デプロイメント フレームワークを、conda、venv、virtualenv などの異なる Python 仮想環境に配置してください。
バージョン 0.3.1 以降、Langchain-Chachat は設定にローカルyaml
ファイルを使用し、コンテンツを直接表示および変更できるようになり、サーバーは再起動せずに自動的に更新されます。
Chatchat が設定ファイルとデータ ファイルを保存するルート ディレクトリを設定します (オプション)
# Linux または macosexport の場合 CHATCHAT_ROOT=/path/to/chatchat_data # Windows の場合 set CHATCHAT_ROOT=/path/to/chatchat_data
この環境変数が設定されていない場合は、現在のディレクトリが自動的に使用されます。
初期化を実行する
チャットチャットの初期化
このコマンドは次のことを行います。
必要なデータ ディレクトリをすべて作成する
サンプルのナレッジベースコンテンツをコピーする
デフォルトのyaml
設定ファイルを生成する
設定ファイルを変更する
モデルを構成する (model_settings.yaml)
ステップ 2 で選択したモデル推論フレームワークに従って、モデル アクセスの設定を実行する必要があります。モデル推論フレームワークとモデルのロード、およびロードされたモデルの詳細については、 model_settings.yaml
のコメントを参照してください。主に以下の内容を修正します。
# デフォルトの LLM 名 DEFAULT_LLM_MODEL: qwen1.5-chat # デフォルトの埋め込み名 DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # `LLM_MODEL_CONFIG` の `llm_model, action_model` のキーを対応する LLM モデルに変更します# `MODEL_PLATFORMS`内の対応するモデルプラットフォーム情報を変更します。
ナレッジベースのパス (basic_settings.yaml) を構成する (オプション)
デフォルトのナレッジ ベースはCHATCHAT_ROOT/data/knowledge_base
にあります。ナレッジ ベースを別の場所に配置する場合、または既存のナレッジ ベースに接続する場合は、ここで対応するディレクトリを変更できます。
# ナレッジ ベースのデフォルトのストレージ パス KB_ROOT_PATH: D:chatchat-testdataknowledge_base # データベースのデフォルトのストレージ パス。 sqlite を使用する場合は DB_ROOT_PATH を直接変更できますが、他のデータベースを使用する場合は SQLALCHEMY_DATABASE_URI を直接変更してください。 DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # ナレッジベース情報データベース接続 URI SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
ナレッジベースの構成 (kb_settings.yaml) (オプション)
FAISS
ナレッジ ベースがデフォルトで使用されます。他のタイプのナレッジ ベースに接続する場合は、 DEFAULT_VS_TYPE
およびkbs_config
変更できます。
警告
ナレッジ ベースを初期化する前に、モデル推論フレームワークと対応するembedding
モデルが開始されていること、および上記の手順 3に従ってモデル アクセス構成が完了していることを確認してください。
チャットチャットkb -r
その他の機能については、 chatchat kb --help
を参照してください。
成功を示す次のログが表示されます。
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
注記
ナレッジベースの初期化に関するよくある質問
この問題は、新しく作成された仮想環境でよく発生し、次の方法で確認できます。
from unstructured.partition.auto import partition
ステートメントがスタックして実行できない場合は、次のコマンドを実行できます。
pip uninstall python-magic-bin# アンインストールされたパッケージのバージョンを確認します pip install 'python-magic-bin=={version}'
次に、このセクションの手順に従ってナレッジ ベースを再作成します。
チャットチャット開始 -a
次のインターフェイスが表示されたら、起動は成功です。
警告
chatchat で設定されるデフォルトのリスニング アドレスDEFAULT_BIND_HOST
は 127.0.0.1 であるため、他の IP からアクセスすることはできません。
マシン IP (Linux システムなど) を介してアクセスする必要がある場合は、 basic_settings.yaml
でリスニング アドレスを 0.0.0.0 に変更する必要があります。
データベース会話の設定については、ここでデータベース会話の設定手順を参照してください。
ソース コードのインストールと展開については、開発ガイドを参照してください。
docker pull チャットイメージ/チャットチャット:0.3.1.3-93e2c87-20240829 docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 # 国内ミラー
重要
強く推奨: docker-compose デプロイメントを使用します。詳細については、README_docker を参照してください。
0.3.x の構造は大幅に変更されているため、ドキュメントに従って再デプロイすることを強くお勧めします。次のガイドは 100% の互換性と成功を保証するものではありません。必ず重要なデータを事前にバックアップしてください。
まず、安装部署
の手順に従って、オペレーティング環境を構成し、構成ファイルを変更します。
0.2.x プロジェクトのKnowledge_base ディレクトリを構成されたDATA
ディレクトリにコピーします。
2023年4月
: Langchain-ChatGLM 0.1.0
がリリースされ、ChatGLM-6B モデルに基づくローカル ナレッジ ベースの質問と回答がサポートされました。
2023年8月
: Langchain-ChatGLM
Langchain-Chatchat
に名前変更され、バージョン0.2.0
がリリースされました。モデル読み込みソリューションとしてfastchat
使用され、より多くのモデルとデータベースがサポートされました。
2023年10月
: Langchain-Chatchat 0.2.5
がリリースされ、エージェント コンテンツが開始され、オープンソース プロジェクトはFounder Park & Zhipu AI & Zilliz
が開催したハッカソンで 3 位を獲得しました。
2023年12月
: Langchain-Chatchat
オープンソース プロジェクトは20,000 個を超えるスターを獲得しました。
2024年6月
: Langchain-Chatchat 0.3.0
がリリースされ、新しいプロジェクト構造が導入されました。
今後のチャットストーリーもお楽しみに…
このプロジェクトのコードは、Apache-2.0 プロトコルに従っています。
? Langchain-Chachat プロジェクト WeChat コミュニケーション グループ。このプロジェクトにも興味がある場合は、グループ チャットに参加してディスカッションや交換に参加してください。
? Langchain-Chachat プロジェクトの公式公開アカウントです。QR コードをスキャンしてフォローしてください。
このプロジェクトがあなたの研究に役立つ場合は、私たちを引用してください:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }