AI

Langchain-Chatchat:开源知识库问答系统与 LLM 集成

Langchain-Chatchat 是一个基于 LangChain 和 ChatGLM 的开源知识库问答系统,支持本地文档检索与 RAG 流水线。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
Langchain-Chatchat:开源知识库问答系统与 LLM 集成

组织积累了大量内部文档——技术手册、政策文件、研究论文和操作指南。一直以来的挑战是如何将这些静态知识转化为可对话查询的形式。Langchain-Chatchat 提供了一个开源解决方案,将 LangChain 编排框架与 ChatGLM 对话式 AI 结合,实现基于文档的问答功能。

该项目主要由中国 AI 开发社区打造,托管于 GitHub 上的 chatchat-space 组织,在希望部署私有知识库问答系统的企业和个人中获得了大量关注。该项目通过在普通硬件上即可运行的自托管替代方案,消除了对 OpenAI 的 GPT 或企业 SaaS 知识平台等商业服务的依赖。

系统架构遵循一个定义明确的 RAG 流水线:文档被摄入、分块、嵌入并存储在向量数据库中。当用户提出问题时,系统会检索最相关的文档块,并将其作为上下文传递给 LLM,由 LLM 生成基于事实的回答。与直接对专业领域使用原始 LLM 查询相比,这种方法大幅降低了幻觉风险。


Langchain-Chatchat 中的 RAG 流水线如何工作?

Langchain-Chatchat 中的检索增强生成流水线是其驱动问答能力的核心引擎。了解其各个阶段是有效部署系统的关键。

graph TD
    A[上传文档] --> B[文档解析\nPDF / Word / Txt / MD]
    B --> C[文本分块\n滑动窗口分割]
    C --> D[嵌入生成\nbge / text2vec / m3e]
    D --> E[(向量数据库\nFAISS / Milvus / Chroma)]
    F[用户提问] --> G[问题嵌入]
    G --> H[相似度搜索]
    E --> H
    H --> I[上下文组装\nTop-K 区块]
    I --> J[LLM 答案生成\nChatGLM / Qwen / API]
    J --> K[基于事实的回答]

流水线从文档摄入开始,文件被解析为原始文本。然后文本使用可配置的策略进行分割——滑动窗口、递归字符分割或语义分割。每个区块使用 BGE、text2vec 或 M3E 等模型转换为密集向量嵌入。这些嵌入存储在向量数据库中,查询时用户问题被嵌入并针对此索引进行搜索,以找到最相关的内容。


支持哪些文档格式和语言?

Langchain-Chatchat 旨在支持广泛的文档格式,以处理真实世界的企业内容。

文档类型支持格式解析引擎
Office 文档PDF、DOCX、XLSX、PPTXPyMuPDF、python-docx、openpyxl
网页格式HTML、Markdown、reStructuredTextBeautifulSoup、markdown 解析器
纯文本TXT、CSV、JSON、YAML内置文本解析器
代码Python、JS、Java 等语言感知分割器
图片PNG、JPG、TIFF通过 PaddleOCR 或 Tesseract 进行 OCR

系统内置支持多语言内容,在中文和英文文档处理上表现尤为出色。可用的嵌入模型包含针对不同语言优化检索准确度的语言特定变体。


多模型架构如何工作?

Langchain-Chatchat 支持多个模型协同工作,每个模型在流水线中扮演不同的角色。

模型角色示例模型用途
LLM 后端ChatGLM3、Qwen、Baichuan根据上下文生成答案
嵌入模型BGE-Large、text2vec、M3E将文本转换为向量嵌入
重排序器BGE-Reranker、Cohere对检索到的区块进行重排序以提高准确度
在线 API 备用OpenAI、文心、通义本地 GPU 不足时使用云端模型

重排序阶段对于生产部署尤其重要。在初始向量搜索检索到一组候选区块后,重排序模型会对每个区块与问题的相关性进行评分,并剔除不相关的结果。这种两阶段检索策略显著提高了答案质量。


有哪些部署选项?

Langchain-Chatchat 提供灵活的部署方式,以适应不同的硬件预算。

部署模式硬件需求用户规模
仅 CPU8+ GB 内存小型团队、实验用途
单 GPU1x NVIDIA 16GB+ VRAM中型团队、生产环境
多 GPU2x+ NVIDIA A100大型企业、高吞吐量
API 模式不需要本地 GPU依赖云端、快速设置

仅 CPU 模式对于数千页以下的文档集出乎意料地实用,使没有专用 GPU 资源的团队也能使用。对于较大的知识库和较低的延迟需求,GPU 部署则变得不可或缺。


常见问题

什么是 Langchain-Chatchat? Langchain-Chatchat 是一个开源的知识库问答系统,结合 LangChain 与 ChatGLM 实现本地文档检索与回答。用户可以上传文档并根据文档内容提出问题,系统通过完整的检索增强生成流水线来回答。

Langchain-Chatchat 支持哪些 LLM? Langchain-Chatchat 以 ChatGLM 系列模型为主要后端,同时支持其他开源 LLM,包括 Qwen、Baichuan 以及各种 API 型模型。系统采用模块化的模型抽象层设计,可轻松切换不同的 LLM 后端。

文档处理是如何工作的? 文档通过一个包含文档解析、文本分块、嵌入生成和向量存储的流水线进行处理。支持的格式包括 PDF、Word、Excel、Markdown、纯文本以及具备 OCR 支持的图片。分块后的内容会被索引到向量数据库中,以便在查询时进行高效的相似度搜索。

可以完全离线运行吗? 可以,Langchain-Chatchat 支持使用本地 LLM 和本地嵌入模型的完全离线部署。这使其非常适合具有严格数据隐私要求的企业环境,因为数据无需离开本地网络。

支持哪些向量数据库? Langchain-Chatchat 支持多种向量数据库后端,包括 FAISS(默认)、Milvus、Chroma 和 PostgreSQL 搭配 pgvector。用户可以根据规模和性能需求选择最合适的后端。


延伸阅读

TAG
CATEGORIES