Langchain-Chatchat
基于开源大模型的私有知识库问答与 Agent 应用平台,支持离线部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于开源大模型的私有知识库问答与 Agent 应用平台,支持离线部署
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一个法律顾问,手头有上千份合同文档,想让 AI 助手帮你快速检索某一条款的历史谈判记录;或者你是一名科研人员,想让大模型基于你实验室积累的内部报告回答专业问题。直接把这些文档丢给 ChatGPT?上下文窗口塞不下,而且涉及隐私数据更是不敢上传。
Langchain-Chatchat 正是为解决这个「最后一公里」问题而生的开源项目。它让开源大语言模型(如 Qwen、ChatGLM、Llama)能够「读懂」你本地的私有文档,实现真正私有化部署的 RAG(检索增强生成)和 Agent 智能体应用。截至 2025 年,该项目已获得超过 3.8 万颗 GitHub Stars,成为中文开源 LLM 应用领域的标杆项目。
Langchain-Chatchat 的故事始于 2023 年 4 月。早期它叫 Langchain-ChatGLM,灵感来源于清华团队发布的 ChatGLM-6B 开源模型和 GanymedeNil 的 document.ai 项目。最初的代码量很小,核心逻辑就是:把文档切成小块、向量化、存入向量数据库、检索最相关的片段、拼进 prompt 喂给大模型——这是 RAG 最朴素也最核心的范式。
随着 ChatGLM-6B 在中文开发者社区的爆火,这个项目迅速积累了第一批用户。2023 年 8 月,项目正式更名为 Langchain-Chatchat,扩展支持 FastChat 推理框架;2023 年 10 月引入 Agent 功能并在黑客松中获得三等奖;2023 年 12 月 Stars 突破 2 万。2024 年 6 月发布的 0.3.0 版本是项目的重要转折点——团队重构了底层架构,从单一 FastChat 模式升级为支持 Xinference、Ollama、LocalAI 等多个推理框架的插件化架构,并大幅增强了 Agent 能力。
项目的维护团队 chatchat-space 持续活跃,截至 2025 年初已有超过 2471 次提交,6.2k 个 Fork,Apache-2.0 开源协议,是真正经过社区验证的成熟项目。
如果把大语言模型比作一个知识渊博但「离线」的专家,那么 Langchain-Chatchat 就是给这个专家配备的私人图书馆管理员。
这个管理员负责三件事:
第一,整理书籍(文档处理)。你上传的 PDF、Word、Markdown 文件,会被自动分块、清洗、去除噪声,转换成可以被机器理解的文本片段。Langchain-Chatchat 支持多种分块策略,包括按段落、按长度、按语义等,确保每块内容的完整性和信息密度。
第二,建立索引(向量化)。管理员不是按标题归档,而是把每块内容翻译成一段「数字指纹」——也就是 Embedding 向量,相似的文档会有相似的向量。这些向量被存入向量数据库(支持 FAISS、Milvus 等),检索时用问句的向量在数据库中找到最相似的 N 个片段。
第三,递送资料(增强生成)。当用户提问时,管理员先在图书馆中检索相关片段,然后将问题 + 相关片段作为上下文一起递给大模型,大模型基于这些「一手资料」生成回答。这就是 RAG 的核心流程。

图1:Langchain-Chatchat 0.3.0 版本界面,支持多会话管理和 Agent 工具调用
如果说 0.2.x 版本还是一个「聪明点的搜索引擎」,0.3.x 版本则真正进化为一个多功能的 Agent 应用平台。这次升级带来了质的飞跃:
Agent 能力大幅增强:0.3.x 版本对 ChatGLM3 和 Qwen 系列模型进行了专门的 Agent 优化,支持自动工具调用。用户可以配置多个工具(知识库检索、搜索引擎、ArXiv 文献搜索、数据库查询、文生图等),让大模型自主决定调用哪个工具完成任务。这种「规划-执行-反馈」的 Agent 循环,使系统能够处理远比简单问答更复杂的任务链。
多框架统一接入:新版本引入了 model_provider 架构,通过统一抽象层同时支持 Xinference、LocalAI、Ollama、FastChat 等主流推理框架。每个框架都通过 OpenAI 兼容的 API 接口接入,这意味着上层代码无需改动,只需修改配置就能切换底层模型。Xinference 还支持 GPTQ、GGML、vLLM、TensorRT 等多种推理加速引擎,覆盖了从消费级 GPU 到专业计算卡的硬件需求。
统一的 File RAG 能力:0.2.x 版本的文档对话只能做向量检索,0.3.x 统一为 File RAG 功能,支持 BM25(传统关键词检索)+ KNN(向量检索)的混合检索方式,对代码和表格类文档的检索效果明显提升。此外新增了 ArXiv 文献对话、Wolfram 数学查询、图片生成等工具扩展。
多模态支持:支持 Qwen-VL 等视觉语言模型,可以上传图片进行基于图片内容的问答。

图2:Streamlit WebUI 界面,支持本地知识库管理和模型配置
从代码结构来看,Langchain-Chatchat 采用了清晰的三层分离架构:
前端层:基于 Streamlit 构建 WebUI,提供交互友好的对话界面、文件上传、知识库管理等功能。同时提供 FastAPI 后端服务,支持通过 HTTP API 与外部系统集成。
核心逻辑层:位于 libs/chatchat-server/chatchat/ 目录下,封装了 RAG Pipeline(文档加载→分块→向量化→检索→生成)和 Agent 执行引擎。所有核心逻辑通过 Langchain 框架实现,充分利用 Langchain 的 LCEL(LangChain Expression Language)链式调用能力。
模型接入层:通过 model_provider 抽象层对接不同推理框架,统一暴露 OpenAI 兼容接口。这种设计使得项目能够快速跟进新模型和推理框架的更新,而无需修改上层代码。
项目采用 Poetry 进行依赖管理,Python 版本要求 3.8-3.11,不支持 3.12。Langchain 作为核心依赖,配合 LangChain 社区生态(langchain-community、langchain-huggingface 等)实现各模块功能。
Langchain-Chatchat 提供了三种部署方式,覆盖从新手到高级用户的不同需求层次:
pip 一键安装(推荐新手):一条命令 pip install langchain-chatchat 即可完成基础安装,另有 [xinference] 等可选扩展。如需使用 Streamlit WebUI,再加一条 chatchat init 初始化配置,chatchat start -a 启动服务。整个过程不依赖 Docker,适合在已有 Python 环境的机器上快速体验。
Docker Compose(推荐生产环境):项目根目录提供了 docker/docker-compose.yaml,将 Chatchat 服务和 Xinference 推理服务打包在一起,通过 host 网络模式实现本地模型推理。项目维护者明确推荐使用 Docker 方式部署,因为可以避免 Python 环境依赖冲突。docker-compose 包含两个核心服务:xinference(模型推理后端)和 chatchat-server(主服务),开箱即用。
源码开发部署(面向贡献者):通过 Git 克隆仓库后,用 Poetry 安装开发依赖,具体流程参考 docs/contributing/README_dev.md。这种方式适合需要自定义修改代码或为项目贡献 PR 的开发者。
部署的核心前置条件是一块 NVIDIA GPU(推荐 RTX 3090 或 4090 及以上,显存 16GB+),因为大模型的推理需要足够的显存支持。当然,项目也支持 CPU 模式运行——如果你愿意接受极慢的推理速度的话。
作为一个社区驱动的开源项目,Langchain-Chatchat 也有其局限性:
GPU 门槛依然存在:尽管项目做了大量工程优化,但大模型推理的本质决定了它很难在纯 CPU 环境下有良好体验。对于没有 GPU 的用户,项目的实用价值大打折扣。
版本迭代快,学习成本高:0.3.x 版本进行了架构重构,配置文件格式和 API 设计与 0.2.x 有较大差异。升级过程中部分用户反映存在配置迁移问题,尤其是从旧版本升级时需要仔细核对文档。
RAG 的固有局限:RAG 虽然解决了大模型的上下文长度问题,但其检索质量直接决定了回答质量。当文档结构复杂(如多表格、多图片混合)时,分块策略的选择对效果影响很大,目前项目提供的自动分块策略并非对所有文档类型都是最优解。
Agent 能力依赖模型本身:项目的 Agent 功能对底层大模型的能力有强依赖——只有具备函数调用(Function Calling)能力的模型(如 Qwen2、ChatGLM3 及以上版本)才能充分发挥 Agent 优势。使用较弱的模型时,Agent 模式的表现会明显下降。
Langchain-Chatchat 的意义远超项目本身。它代表了中文开源社区在 LLM 应用落地层面的积极探索。
首先,它降低了私有化部署的门槛。在 Langchain-Chatchat 出现之前,在中国开发者群体中搭建一个类似系统需要大量拼接 Langchain 文档、处理各种兼容性问题。项目通过预置配置和自动化脚本,将这个过程缩短到几十分钟。
其次,它验证了「插件化架构」在 LLM 应用层的可行性。0.3.x 版本支持的多个推理框架共存模式,为同类项目提供了参考模板——应用层不应与推理框架强绑定,而应通过标准 API 接口实现解耦。
最后,它推动了 RAG 技术在中文场景的实践积累。项目中积累的分块策略、Embedding 模型选择、检索策略配置等经验,对整个中文 RAG 生态都有参考价值。截至 2025 年,该项目 Star 曲线依然保持稳定增长,说明市场对这类工具的需求持续旺盛。
如果你正在寻找一个经过大量用户验证、支持中文场景、可私有化部署的 RAG + Agent 开源框架,Langchain-Chatchat 依然是目前最值得关注的选择之一。