@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}}
}
🌍 READ THIS IN ENGLISH
📃 LangChain-Chatchat (原 Langchain-ChatGLM)
基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的 RAG 与 Agent 应用项目。
目录
概述
🤖️ 一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
💡 受 GanymedeNil 的项目 document.ai 和 AlexZhangji 创建的 ChatGLM-6B Pull Request 启发,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中可使用 Xinference、Ollama 等框架接入 GLM-4-Chat、 Qwen2-Instruct、 Llama3 等模型,依托于 langchain 框架支持通过基于 FastAPI 提供的 API 调用服务,或使用基于 Streamlit 的 WebUI 进行操作。
✅ 本项目支持市面上主流的开源 LLM、 Embedding 模型与向量数据库,可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
⛓️ 本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的
top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。📺 原理介绍视频
从文档处理角度来看,实现流程如下:
🚩 本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
🌐 AutoDL 镜像 中
0.3.0版本所使用代码已更新至本项目v0.3.0版本。🐳 Docker 镜像将会在近期更新。
🧑💻 如果你想对本项目做出贡献,欢迎移步开发指南 获取更多开发部署相关信息。
功能介绍
0.3.x 版本功能一览
在线:XXXModelWorker
在线:oneapi
所有模型接入均兼容openai sdk
0.3.x 版本的核心功能由 Agent 实现,但用户也可以手动实现工具调用:
想手动选择功能
更多功能和更新请实际部署体验.
已支持的模型部署框架与模型
本项目中已经支持市面上主流的如 GLM-4-Chat 与 Qwen2-Instruct 等新近开源大语言模型和 Embedding 模型,这些模型需要用户自行启动模型部署框架后,通过修改配置信息接入项目,本项目已支持的本地模型部署框架如下:
除上述本地模型加载框架外,项目中也为可接入在线 API 的 One API 框架接入提供了支持,支持包括 OpenAI ChatGPT、Azure OpenAI API、Anthropic Claude、智谱清言、百川 等常用在线 API 的接入使用。
快速上手
pip 安装部署
0. 软硬件要求
💡 软件方面,本项目已支持在 Python 3.8-3.11 环境中进行使用,并已在 Windows、macOS、Linux 操作系统中进行测试。
💻 硬件方面,因 0.3.0 版本已修改为支持不同模型部署框架接入,因此可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。
1. 安装 Langchain-Chatchat
从 0.3.0 版本起,Langchain-Chatchat 提供以 Python 库形式的安装方式,具体安装请执行:
2. 模型推理框架并加载模型
从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API 等。
因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。
这里以 Xinference 举例, 请参考 Xinference文档 进行框架部署与模型加载。
3. 初始化项目配置与数据目录
从 0.3.1 版本起,Langchain-Chatchat 使用本地
yaml文件的方式进行配置,用户可以直接查看并修改其中的内容,服务器会自动更新无需重启。若不设置该环境变量,则自动使用当前目录。
该命令会执行以下操作:
yaml配置文件配置模型(model_settings.yaml)
需要根据步骤 2. 模型推理框架并加载模型 中选用的模型推理框架与加载的模型进行模型接入配置,具体参考
model_settings.yaml中的注释。主要修改以下内容:配置知识库路径(basic_settings.yaml)(可选)
默认知识库位于
CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。配置知识库(kb_settings.yaml)(可选)
默认使用
FAISS知识库,如果想连接其它类型的知识库,可以修改DEFAULT_VS_TYPE和kbs_config。4. 初始化知识库
更多功能可以查看
chatchat kb --help出现以下日志即为成功:
5. 启动项目
出现以下界面即为启动成功:
其它配置
源码安装部署/开发部署
源码安装部署请参考 开发指南
Docker 部署
旧版本迁移
安装部署中的步骤配置运行环境,修改配置文件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发布,推出 Agent 内容,开源项目在Founder Park & Zhipu AI & Zilliz举办的黑客马拉松获得三等奖。2023年12月:Langchain-Chatchat开源项目获得超过 20K stars.2024年6月:Langchain-Chatchat 0.3.0发布,带来全新项目架构。🔥 让我们一起期待未来 Chatchat 的故事 ···
协议
本项目代码遵循 Apache-2.0 协议。
联系我们
Telegram
项目交流群
🎉 Langchain-Chatchat 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。
公众号
🎉 Langchain-Chatchat 项目官方公众号,欢迎扫码关注。
引用
如果本项目有帮助到您的研究,请引用我们: