chat-with-your-docチャットは、ChatGPT/GPT-4とLangchainの機能を活用して、ユーザーがドキュメントとチャットできるようにするデモアプリケーションです。このリポジトリは、アプリケーションのセットアップと実行に必要なコードベース、指示、およびリソースをホストします。
このプロジェクトの主な目標は、ドキュメントとの相互作用を簡素化し、自然言語を使用して貴重な情報を抽出することです。このプロジェクトは、LangchainとGPT-4/ChatGptを使用して構築され、 Azure OpenAI ServicesとOpenAI両方をサポートして、スムーズで自然な会話エクスペリエンスをユーザーに提供します

Azure OpenAI ServicesとOpenAI両方をサポートします
Centos/Debianの代わりにUbuntuにインストールすることをお勧めします。問題#12を参照してください
Chat-with-your-docを始めるには、次の手順に従ってください。
git clone https://github.com/linjungz/chat-with-your-doc.gitchat-with-your-docに変更してください。 cd chat-with-your-doc仮想環境を作成します:
python3 -m venv .venv
source .venv/bin/activatedepenanciesのインストール:
pip install -r requirements.txtこのプロジェクトでは、OpenaiとAzure OpenaiサービスのAPIの両方をサポートしています。 2つのAPIで一般的な環境変数がいくつかありますが、一部は一意です。次の表には、サポートされているすべてのenv varを示します。
| 環境変数 | Azure Openaiサービス | Openai |
|---|---|---|
| openai_api_base | ✅ | |
| openai_api_key | ✅ | ✅ |
| openai_gpt_deployment_name | ✅ | |
| openai_embedding_deployment_name | ✅ | ✅ |
| chat_model_name | ✅ | |
| request_timeout | ✅ | ✅ |
| vectordb_path | ✅ | ✅ |
| 温度 | ✅ | ✅ |
| chunk_size | ✅ | ✅ |
| chunk_overlap | ✅ | ✅ |
.envを作成し、ファイル内の環境変数を設定します。 OPENAI_API_BASE=https://your-endpoint.openai.azure.com
OPENAI_API_KEY=your-key-here
OPENAI_GPT_DEPLOYMENT_NAME=your-gpt-deployment-name
OPENAI_EMBEDDING_DEPLOYMENT_NAME=your-embedding-deployment-name
GPTおよび埋め込みの展開名を見つけることができます。
.envを作成し、ファイルに環境変数を設定します。 OPENAI_API_KEY=your-key-here
CHAT_MODEL_NAME="gpt-4-0314"
これにより、 Streamlitに基づいてアプリケーションが初期化され、デフォルトのWebブラウザでユーザーインターフェイスが開きます。これで、ドキュメントをアップロードして知識ベースを作成し、それとの会話を開始できます。
$ streamlit run chat_web_st.py --server.address ' 0.0.0.0 '
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.
You can now view your Streamlit app in your browser.
URL: http://0.0.0.0:8501 ` ` `Gradioを使用して構築された以前のWeb UIは非推奨であり、もはや維持されていないことに注意してください。 chat_web.pyファイルにコードを見つけることができます。
CLIアプリケーションは、 ingestとchatコマンドの両方をサポートするために構築されています。 Python Library typer 、コマンドラインインターフェイスの構築に使用されます。
このコマンドは、ドキュメントを入力として受け取り、テキストを分割し、埋め込みを生成し、ベクターストアのFAISSにストアを保存します。ベクターストアは、後でチャットに使用するためにローカルに保管されます。

たとえば、すべてのPDFをディレクトリ内のすべてのPDFSをsurfaceという名前の1つのベクトルストアに入れたい場合は、次のことを実行できます。
$ python chat_cli.py ingest --path " ./data/source_documents/*.pdf " --name surfaceシェルの拡張を避けるために、パスは二重引用符で囲まれるべきであることに注意してください。
このコマンドは、ベクターストアの外部ナレッジベースとしてドキュメントを使用して、インタラクティブなチャットを開始します。チャット用にロードする知識ベースを選択できます。

Surfaceに関する2つのサンプルドキュメントがデータ/source_documentディレクトリに提供されており、既にデータ/vector_storeに保存されているデフォルトのベクトルストアindexに摂取されています。次のコマンドを実行して、ドキュメントとのチャットを開始できます。
$ python chat_cli.py chatまたは、チャット用にロードするベクトルストアを指定することもできます。
$ python chat_cli.py chat --name surfaceLangchainは、Azure GPT-4と対話するワークフローをすばやく構築するために活用されています。 ConversationalRetrievalChainは、この特定のユースケースでチャット履歴をサポートするために使用されます。詳細については、このリンクを参照できます。
chaintypeの場合、デフォルトではstuffが使用されます。詳細については、このリンクを参照してください
chat-with-your-doc MITライセンスの下でリリースされます。詳細については、 LICENSEファイルを参照してください。