chat-with-your-doc是一个演示应用程序,它利用Chatgpt/GPT-4的功能和Langchain的功能使用户能够与他们的文档聊天。该存储库设置并运行应用程序所需的代码库,指令和资源。
该项目的主要目标是简化与文档的互动,并使用自然语言提取有价值的信息。该项目是使用Langchain和GPT-4/Chatgpt构建的,为用户提供平稳自然的对话体验,并支持Azure OpenAI Services和OpenAI

Azure OpenAI Services和OpenAI
建议在Ubuntu而不是Centos/Debian安装。请参阅第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/activate安装脱牙:
pip install -r requirements.txt在这个项目中,我们正在支持OpenAI和Azure OpenAI服务的API。有一些环境变量对于两个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在目录中放入一个名为surface的一个矢量存储中,则可以运行:
$ python chat_cli.py ingest --path " ./data/source_documents/*.pdf " --name surface请注意,该路径应用双引号封闭,以避免外壳扩展。
此命令将启动交互式聊天,文档作为向量存储中的外部知识库。您可以选择要加载的知识库进行聊天。

数据/源_document目录中已提供了有关Surface的两个示例文档,并已将存储在数据/vector_store中的默认向量存储index中摄入。您可以运行以下命令与文档聊天:
$ python chat_cli.py chat或者,您可以指定矢量存储以进行聊天:
$ python chat_cli.py chat --name surface利用Langchain来快速构建与Azure GPT-4相互作用的工作流程。在此特定用例中使用了ConversationalRetrievalChain来支持聊天历史记录。您可以参考此链接以获取更多详细信息。
对于chaintype ,默认情况下使用的stuff 。有关更多详细信息,请参阅此链接
chat-with-your-doc是根据MIT许可发布的。有关更多详细信息,请参见LICENSE文件。