chatchat-space /Langchain-Chatchat

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain

★ 38,712⑂ 6,254👁 286⑃ 885● 4,262▤ 31◈ 195
PythonApache-2.0Created 2023-03-31
38,712
stars
+1
6,254
forks
286
watchers
885
prs
4,262
issues
31
releases
195
discussions

README

!






🌍 READ THIS IN ENGLISH

📃 LangChain-Chatchat (原 Langchain-ChatGLM)

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的 RAG 与 Agent 应用项目。

---

 目录

 概述
 功能介绍
     0.3.x 功能一览
     已支持的模型推理框架与模型
 快速上手
     pip 安装部署
     源码安装部署/开发部署
     Docker 部署
 项目里程碑
 联系我们

 概述

🤖️ 一种利用 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生成回答。

📺 原理介绍视频

!实现原理图

从文档处理角度来看,实现流程如下:

!实现原理图2

🚩 本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。

🌐 AutoDL 镜像 中 0.3.0
版本所使用代码已更新至本项目 v0.3.0 版本。

🐳 Docker 镜像将会在近期更新。

🧑‍💻 如果你想对本项目做出贡献,欢迎移步开发指南 获取更多开发部署相关信息。

 功能介绍

 0.3.x 版本功能一览

| 功能        | 0.2.x                            | 0.3.x                                                               |
|-----------|----------------------------------|---------------------------------------------------------------------|
| 模型接入      | 本地:fastchat在线:XXXModelWorker | 本地:model_provider,支持大部分主流模型加载框架在线:oneapi所有模型接入均兼容openai sdk |
| Agent     | ❌不稳定                             | ✅针对ChatGLM3和Qwen进行优化,Agent能力显著提升                                    ||
| LLM对话     | ✅                                | ✅                                                                   ||
| 知识库对话     | ✅                                | ✅                                                                   ||
| 搜索引擎对话    | ✅                                | ✅                                                                   ||
| 文件对话      | ✅仅向量检索                           | ✅统一为File RAG功能,支持BM25+KNN等多种检索方式                                    ||
| 数据库对话     | ❌                                | ✅                                                                   ||
| 多模态图片对话     | ❌                                | ✅  推荐使用 qwen-vl-chat                   ||
| ARXIV文献对话 | ❌                                | ✅                                                                   ||
| Wolfram对话 | ❌                                | ✅                                                                   ||
| 文生图       | ❌                                | ✅                                                                   ||
| 本地知识库管理   | ✅                                | ✅                                                                   ||
| WEBUI     | ✅                                | ✅更好的多会话支持,自定义系统提示词...                                               |

0.3.x 版本的核心功能由 Agent 实现,但用户也可以手动实现工具调用:

|操作方式|实现的功能|适用场景|
|-------|---------|-------|
|选中"启用Agent",选择多个工具|由LLM自动进行工具调用|使用ChatGLM3/Qwen或在线API等具备Agent能力的模型|
|选中"启用Agent",选择单个工具|LLM

Top issues

Discussions

Latest release

Langchain-Chatchat v0.3.1 v0.3.1 2024-07-12
重要提示

Langchain-Chatchat v0.3.1 中命令行调用方式发生调整,请依据项目 README 进行操作;知识库的源文件与向量库仍可与前序版本通用,建议参考项目 README.md 中 快速上手 章节内容进行新版本部署。

------

 新增功能

 所有配置项改成 yaml 配置文件,改为命令行执行 chatchat init 初始化项目配置,需要本地文件中修改配置,配置项修改后即时生效,无需重启项目 by @liunux4odoo in https://github.com/chatchat-space/Langchain-Chatchat/pull/4421
 chatchat init 可以直接指定 Xinference API 地址、LLM 模型、Embedding 模型,一步完成知识库初始 by @liunux4odoo in https://github.com/chatchat-space/Langchain-Chatchat/pull/4425
 新增 RAG 对话页面,包含知识库对话、文件对话、搜索引擎对话 by @liunux4odoo @imClumsyPanda in https://github.com/chatchat-space/Langchain-Chatchat/pull/4471
 调整对话界面按钮

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON