Langchain-Chatchat(原 langchain-ChatGLM)是一个开源、可离线部署的知识库问答应用,基于 Langchain 框架与 ChatGLM、Qwen、Llama 等大语言模型实现。项目旨在建立一套对中文场景与开源模型支持友好、可完全离线运行的 RAG(检索增强生成)与 Agent 应用解决方案。
【用途】 项目主要用于构建基于本地知识库的问答系统。用户可以将文档资料导入知识库,系统通过检索增强生成的方式,利用大语言模型回答与文档内容相关的问题。此外,0.3.x 版本也支持 Agent 功能,可通过 Agent 实现更复杂的任务处理。
【主要能力】
- 支持主流开源 LLM、Embedding 模型与向量数据库,可实现全部使用开源模型离线私有部署。
- 支持接入 Xinference、Ollama、LocalAI、FastChat、One API 等模型推理框架。
- 支持 GLM-4-Chat、Qwen2-Instruct、Llama3 等新近开源大语言模型和 Embedding 模型,模型需用户自行启动模型部署框架后通过修改配置信息接入。
- 支持在线 API 接入,包括 OpenAI ChatGPT、Azure OpenAI API、Anthropic Claude、智谱清言、百川等常用在线 API。
- 提供基于 FastAPI 的 API 调用服务,以及基于 Streamlit 的 WebUI 操作界面。
- 从 0.3.0 版本起提供 Python 库形式的安装方式。
- 默认使用 FAISS 知识库,可修改配置连接其他类型知识库。
- 支持在 Python 3.8-3.11 环境中使用,并已在 Windows、macOS、Linux 操作系统中测试。
- 因 0.3.0 版本支持不同模型部署框架接入,可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。
【使用方式】
- 安装部署:可通过 pip 安装、源码安装部署/开发部署或 Docker 部署。从 0.3.0 版本起提供 Python 库形式安装。
- 模型接入:从 0.3.0 版本起,项目不再根据用户输入的本地模型路径直接加载模型,而是改为支持市面常见的各大模型推理框架接入。启动项目前需先运行模型推理框架并加载所需模型。建议将 Langchain-Chatchat 和模型部署框架放在不同的 Python 虚拟环境中以避免依赖冲突。
- 配置:从 0.3.1 版本起使用本地 yaml 文件进行配置,用户可直接查看并修改,服务器自动更新无需重启。主要配置文件包括 model_settings.yaml(配置默认 LLM、Embedding 模型及模型平台信息)、basic_settings.yaml(配置知识库路径、数据库路径、监听地址等)、kb_settings.yaml(配置知识库类型)。
- 初始化知识库:进行知识库初始化前,需确保已启动模型推理框架及对应 embedding 模型,并完成模型接入配置。可使用 chatchat kb 命令进行知识库操作。
- 启动:配置完成后可启动服务,通过 WebUI 或 API 进行操作。默认监听地址为 127.0.0.1,如需通过其他 IP 访问,需将监听地址修改为 0.0.0.0。
【适用场景】 适用于需要基于本地知识库进行问答的场景,尤其是对数据隐私和离线部署有要求的场景,如企业内部知识库、文档问答系统等。项目对中文场景与开源模型支持友好,适合中文用户使用。
【限制与说明】
- 项目未涉及微调、训练过程,但可利用微调或训练对项目效果进行优化。
- 0.3.x 版本结构改变较大,升级时建议按照文档重新部署,并提前备份重要数据。
- 模型需用户自行启动模型部署框架后通过修改配置接入。
- 部分功能可能需要额外安装依赖库,如搭配 Xinference 框架使用时需安装对应 Python 依赖。
- 如果遇到知识库初始化时卡住的问题,可尝试执行相关命令后重新创建知识库。
- 数据库对话配置有专门说明,需另行参考。
- 项目代码遵循 Apache-2.0 协议。
项目历史:2023 年 4 月发布 0.1.0 版本,支持基于 ChatGLM-6B 模型的本地知识库问答;2023 年 8 月改名为 Langchain-Chatchat,发布 0.2.0 版本,使用 fastchat 作为模型加载方案;2023 年 10 月发布 0.2.5 版本,推出 Agent 内容;2023 年 12 月获得超过 20K stars;2024 年 6 月发布 0.3.0 版本,带来全新项目架构。