从零到一玩转 Langchain-Chatchat:4 步搭起私有化本地知识库问答
【免费下载链接】Langchain-ChatchatLangchain-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项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat
手里压着一堆产品手册、工作笔记或者行业资料,想直接"问"它们,又不想把文档传到任何云端服务里。Langchain-Chatchat 就是干这件事的:一套基于 Langchain 与 ChatGLM、Qwen、Llama 等开源大语言模型的本地知识库问答系统,你喂文档、它答题,模型跑在本地,整条链路可以完全离线。
这篇文章写给完全没碰过它的你。不需要懂向量库,照着走一遍,就能得到一个"只根据你自己的文档回答"的问答系统。
先看清它到底在做什么
原理一句话就够:你的文档被切成小段、转成向量存起来;你提问时,系统先从向量库捞出最相关的几段,连同问题一起塞进提示词,再交给大模型作答。所以答案出自你的文档,而不是模型的"记忆"。
动手前,先确认两件事 ⚠️
- Python 版本在 3.8 到 3.11 之间,Windows、macOS、Linux 均可
- 没有独立显卡也能跑,只是模型选小一点;有 8G 以上显存则能流畅跑主流的 7B 模型
特别提醒一个容易踩的坑:Langchain-Chatchat 和模型推理框架请各用各的虚拟环境,混装最容易出依赖冲突,这也是大部分"莫名报错"的源头。
里程碑一 · 搭好骨架:安装与初始化
先把本体装进来:
pip install langchain-chatchat -U如果你打算搭配 Xinference 框架加载模型,多装一份附加依赖:
pip install "langchain-chatchat[xinference]" -U成功标志:终端最后显示Successfully installed langchain-chatchat-...,全程没有ERROR。
接下来指定数据要落在哪里(不设置就默认放在当前目录),然后跑初始化:
# Linux / macOS export CHATCHAT_ROOT=/path/to/chatchat_data # Windows set CHATCHAT_ROOT=C:\chatchat_data chatchat init这一条命令会建好数据目录、复制内置的 samples 示例知识库,并落下一批带默认值的 yaml 文件。成功标志:指定目录下多了config/和data/,config 里躺着model_settings.yaml、basic_settings.yaml、kb_settings.yaml三个文件。
现在先别改它们,等模型启动后只动其中两个字段。
里程碑二 · 接入大脑:用 Xinference 拉起来模型
Langchain-Chatchat 自己不去加载模型,而是通过模型推理框架与模型"通话"。这里以 Xinference 为例:跨平台、模型库全。
pip install "xinference[all]" xinference -H 0.0.0.0成功标志:浏览器打开 http://127.0.0.1:9997 能看到 Xinference 的模型管理页面。
在页面上启动两个模型:
- 一个 LLM,比如
qwen1.5-7b-chat或 GLM-4 系列 - 一个 Embedding 模型,比如
bge-large-zh-v1.5——它是"向量化器",建知识库离不开它
首次启动会自动下载模型文件,耐心等。注意记下列表里显示的模型 uid(ID),马上要用。
然后打开model_settings.yaml,把这两行改成你启动的模型 uid:
DEFAULT_LLM_MODEL: qwen1.5-chat DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5同文件里LLM_MODEL_CONFIG的 llm_model、action_model 以及MODEL_PLATFORMS的平台信息也要同步指向你的模型。文件内自带中文注释,照注释改即可;保存后无需重启,配置会自动刷新。
里程碑三 · 喂上知识:一次性建好向量库 🔍
现在到了最见成效的一步。先确认 Xinference 里 Embedding 模型还在运行,然后执行重建:
chatchat kb -r内置 samples 知识库有 47 个文件,CPU 上需要几分钟。跑完会看到一份类似这样的报表:
知识库名称 :samples 知识库类型 :faiss 向量模型 :bge-large-zh-v1.5 文件总数量 :47 入库文件数 :42 知识条目数 :740成功标志:知识条目数是非零数字,说明文档确实进了向量库。
如果卡住了:Windows 下卡死不动,多半是
python-magic-bin依赖的问题,先pip uninstall python-magic-bin再装回兼容版本pip install "python-magic-bin==0.4.14",然后重跑chatchat kb -r即可。
向量库建好后,日常管理都在 WebUI 里做:上传新文档、调整切分参数、按源文件重建,一个页面全搞定。
里程碑四 · 跑通闭环:启动服务打开 WebUI
chatchat start -a成功标志:终端打印出http://127.0.0.1:8501开头的本地地址,浏览器打开就是 Langchain-Chatchat 主界面。
想从别的机器用 IP 访问的话,把
basic_settings.yaml里的DEFAULT_BIND_HOST改成0.0.0.0,默认的 127.0.0.1 只允许本机访问。
不想逐项装依赖的,可以跳过上面全部步骤直接用 Docker Compose 一键拉起,参考 Docker 部署指引。
第一次实测:问一个只有文档能答的问题
点左侧"对话"入口,把模式切换成"知识库问答",选中samples知识库,输入"用一句话介绍Prompt工程"。
回答下方会挂着一个可展开的"知识库匹配结果",出处标得明明白白——哪篇文档、哪一段,这就是它和普通闲聊最直观的区别:答案是从你的文档里"读"出来的。
如果回答是"根据已知信息无法回答该问题",说明问题超出了知识库范围。这是设计使然,反而是好事:它不瞎编。
不止问答:还能往哪走
闭环跑通之后,顺手看看它的边界。
- Agent 工具调用:对话页勾选"启用Agent"再挑几个工具(天气查询、网络检索等),模型会自己规划调用
- 数据库对话:接上数据库让模型用 SQL 作答,配置说明见 数据库对话配置
- 多模态:接入 qwen-vl-chat 这类视觉模型,图片也能问
配置项细节、开发部署等更深入的内容,可以看项目内的 配置说明 与开发指南。
系统跑起来了,文档也进库了,第一个"只有你的文档能答"的问题有了出处——接下来,换成你自己的文档,问你的问题。
【免费下载链接】Langchain-ChatchatLangchain-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项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考