Home
Softono
LangGraph-Chatchat

LangGraph-Chatchat

Open source Apache-2.0 Python
181
Stars
31
Forks
9
Issues
6
Watchers
1 year
Last Commit

About LangGraph-Chatchat

LangGraph-Chatchat is an open-source, offline-deployable application project for Retrieval-Augmented Generation and Agent workflows, built on the LangGraph framework and supporting large language models like ChatGLM, GLM-4, Qwen2, and Llama3. Designed as a lightweight microservice for developers, it enables private knowledge base Q&A solutions fully compatible with Chinese scenarios and open-source models. The system processes documents through loading, text segmentation, vectorization, and similarity matching to construct prompts for LLMs. Unlike its predecessor LangChain-Chatchat, this version utilizes LangGraph for constructing asymmetric loops and custom agent graphs, offering superior modularity and observability via LangSmith integration. It supports popular embedding models and vector databases while storing conversation history asynchronously in SQLite or PostgreSQL. The project features a Streamlit-based WebUI, supports Docker and source code deployment, and includes registered tool and graph compone

Platforms

Web Self-hosted

Languages

Python

Links

Generic badge

📃 LangGraph-Chatchat

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


概述

🤖️ 一种利用 LangGraph 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

💡 受 GanymedeNil 的项目 document.aiAlexZhangji 创建的 ChatGLM-6B Pull Request 启发,建立了全流程可使用开源模型实现的本地知识库问答应用。本项目的最新版本中可使用 XinferenceOllama 等框架接入 GLM-4-ChatQwen2-InstructLlama3 等模型,使用基于 Streamlit 的 WebUI 进行操作。

✅ 本项目支持市面上主流的开源 LLM、 Embedding 模型与向量数据库,可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。

⛓️ 本项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。

📺 原理介绍视频

实现原理图

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

实现原理图2

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

🧑‍💻 如果你想对本项目做出贡献,欢迎提交 pr。

项目优势与定位

项目定位

一款面向开发者轻量级的囊括了RAG,Agent等场景的LLM应用微服务.

LangChain-Chatchat 的主要联系与自身特色

  1. LangChain-Chatchat 的联系
  • 开发人员相同, 属于原项目人员新拓展方向
  • RAG 检索逻辑不变
  • 知识库 功能不变
  • 模型和配置架构不变(少量关于 AgentTool 的配置有变化)

ps: 保持这么多的联系的目的: 方便大家在两个项目间平滑切换

  1. LangGraph-Chatchat 的项目特色
  • 背靠 LangChain 生态链, LangGraph 项目活跃, 有向无环图功能强大, 可供开发者根据不同场景定制各种不同的 graph 使用;
  • LangChainagent_executor 过度封装, 可定制性差, 社区目前全力推广 LangGraph;
  • LangGraph 可与 LangSmith 搭配使用, 让 Agent 开发可视化性更强, 更直观;
  • LangChain-Chatchat 的历史消息存在前端管理, LangGraph-Chatchat 历史消息存在 sqlite(默认, 支持异步) 或 PostgreSQL(支持连接池+异步) 中, 方便开发者统一管理(UI 管理待支持);
  • LangGraph-Chatchat 提供了 graph 注册器和 tool 注册器, 并提供了几种 demo 和规范供开发者参考, 开发者可以像组装变形金刚一样开发 graph, 并且也都是异步;
  • LangGraph-Chatchat 对话的全部流程(agentrag)均采用 LangGraph 来构建, 需要模型具备 function call 的能力.
  • LangGraph-Chatchat 计划只保留一个对话接口, 如: /chat, 其他操作全部通过 UI, 如有其他接口需求可随时与开发者讨论.

快速上手

Docker 安装部署 (一定要看)

查看 Docker 安装指南

源码安装部署/开发部署

查看 开发部署指南

旧版本迁移

  • 首先按照 安装部署 中的步骤配置运行环境,修改配置文件
  • Langchain-Chatchat 项目的 knowledge_base 目录拷贝到配置的 DATA 目录下

协议

本项目代码遵循 Apache-2.0 协议。

联系我们

Telegram

Telegram

项目交流群

二维码

🎉 LangGraph-Chatchat 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。

引用

如果本项目有帮助到您的研究,请引用我们:

@software{LangGraph-Chatchat,
    title        = {{LangGraph-Chatchat}},
    author       = {Zhang, Yuehua},
    year         = 2025,
    journal      = {GitHub repository},
    publisher    = {GitHub},
    howpublished = {\url{https://github.com/chatchat-space/LangGraph-Chatchat}}
}