尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Langchain-Chatchat本地部署完整指南

Langchain-Chatchat本地部署完整指南
📅 发布时间:2026/6/19 17:50:24

本地化大模型落地实战:手把手构建安全可控的私有知识库问答系统

在企业级 AI 应用日益普及的今天,一个核心矛盾逐渐浮现:如何让强大的大语言模型(LLM)既能理解专业领域的私有知识,又能确保敏感数据不出内网?许多团队尝试过将文档上传到云端 API 进行问答,但很快面临合规风险和信息泄露隐患。这时候,本地部署的 RAG(检索增强生成)系统就成了最优解。

Langchain-Chatchat 正是这样一个开源利器——它不依赖任何外部服务,所有文本解析、向量嵌入、语义检索和答案生成都在本地完成。你可以把它想象成一个“AI 助理”,只读你允许它看的文件,回答也完全由你自己掌控。最近我在一台 CentOS 7 + A100 显卡的服务器上完成了全流程部署,踩了几个坑,也总结出一套零失败的操作路径,现在毫无保留地分享出来。

整个过程其实可以归结为三个关键动作:搭环境、起模型、连系统。下面我们一步步来看。


首先明确实验环境配置,这是稳定运行的基础:

  • 操作系统:CentOS 7 或 Ubuntu 20.04(推荐后者)
  • GPU:NVIDIA A100 / V100 / A40(至少 24GB 显存,用于加载 7B 级别模型)
  • CUDA 版本:12.2
  • Python 版本:3.10
  • 包管理工具:Conda(强烈建议使用清华源加速)

为什么要用 Conda?因为我们要同时运行两个独立的服务:一个是xinference负责模型推理,另一个是langchain-chatchat处理业务逻辑。两者对依赖包版本要求不同,混在一起极易引发冲突。所以第一步就是创建两个干净的虚拟环境:

# 安装 Miniconda 后执行 conda create -n chatchat python=3.10 conda create -n xinference python=3.10

安装完成后激活主环境:

conda activate chatchat

接下来安装langchain-chatchat主体框架,并指定使用xinference作为后端支持:

pip install -U "langchain-chatchat[xinference]"

这条命令会自动拉取一系列关键组件:
-langchain:处理链式调用的核心引擎
-fastapi和gradio:提供 Web 接口和前端界面
-sentence-transformers:本地加载 embedding 模型所必需
- 各类文档解析库(pypdf, python-docx, openpyxl 等),覆盖企业常见格式

然后切换到xinference环境,部署模型服务端:

conda activate xinference pip install -U xinference pip install sentence-transformers # 即使从 ModelScope 下载也需要这个包

💡 小贴士:sentence-transformers是后续加载 BGE 中文嵌入模型的关键,别漏装。


现在进入最关键的一步:把大模型真正“跑起来”。这里我们采用Xorbits Inference(简称 xinference)作为本地模型服务平台。它的优势非常明显:
- 支持从 HuggingFace 和ModelScope(魔搭)双平台下载模型
- 自动完成量化、分片、GPU 分布式加载
- 提供标准 RESTful 接口,兼容 OpenAI 协议
- 带图形化控制台,操作直观

启动服务前,先设置模型源为 ModelScope(国内访问更快):

conda activate xinference XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997

参数说明:
---host 0.0.0.0:允许局域网其他设备访问
---port 9997:Web 控制台和 API 监听端口
-XINFERENCE_MODEL_SRC=modelscope:优先从阿里云魔搭社区拉取模型

服务启动成功后,在浏览器打开http://<你的IP>:9997,就能看到简洁的管理页面。

在控制台点击 “Launch Model” → “LLM”,准备加载通义千问 Qwen2-7B-Instruct 模型。这是一款经过指令微调的中文对话模型,在问答任务中表现优异。填写以下配置:

字段值
Model TypeLLM
Model Nameqwen2-instruct
Size in GB15 (FP16) 或 8 (Int4 量化)
QuantizationInt4(显存紧张时必选)
Replica1
GPU idx0(根据实际显卡编号调整)

点击 “Launch” 后,系统会自动从 ModelScope 下载权重。首次加载时间较长(约 10~30 分钟,取决于网络),完成后状态变为 “Running”。

接着部署中文 Embedding 模型bge-large-zh-v1.5。它是目前中文语义匹配效果最好的开源向量模型之一。切换到 “Embedding Models” 标签页,点击 “Launch Model”,填入:

字段值
Model Namebge-large-zh-v1.5
Dimension1024
Max Length512
Devicecuda

启动后可通过 curl 测试接口是否正常工作:

curl http://localhost:9997/v1/embeddings \ -H "Content-Type: application/json" \ -d '{"model": "bge-large-zh-v1.5", "input": "什么是人工智能?"}'

如果返回一串浮点数数组,说明 embedding 服务已就绪。


回到chatchat环境,开始对接系统。首先设定项目根目录并初始化配置:

conda activate chatchat export CHATCHAT_ROOT=/home/LLM/langchain-chatchat chatchat init

第一次执行可能会提示 “未找到 model_settings.yaml”,没关系,这是预期行为,稍后我们会手动补全。

该命令会在指定路径下生成完整的目录结构:

langchain-chatchat/ ├── configs/ │ ├── model_settings.yaml │ └── settings.yaml ├── data/ │ ├── samples/ │ └── nltk_data/ ├── knowledge_base/ │ └── samples/ └── web_ui/

接下来编辑configs/model_settings.yaml,这是整个系统的“中枢神经”,决定了模型连接方式和地址。内容如下:

DEFAULT_LLM_MODEL: qwen2-instruct DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 LOCAL_MODEL_SERVING: true LLM_MODEL_CONFIG: qwen2-instruct: model_name: qwen2-instruct server_type: xinference host: 127.0.0.1 port: 9997 EMBEDDING_MODEL_CONFIG: bge-large-zh-v1.5: model_name: bge-large-zh-v1.5 server_type: xinference host: 127.0.0.1 port: 9997

有几个细节必须注意:
-server_type必须写成xinference,否则会尝试本地加载导致失败
-host和port要与前面启动的 xinference 服务一致
- 模型名称必须完全匹配Xinference 中注册的名称(包括大小写)

改完之后再运行一次chatchat init,警告就会消失。

还有一个容易被忽略但极其重要的步骤:下载 NLTK 资源包。Langchain-Chatchat 在做文本分句、词性标注时依赖这些预训练资源,但不会自动下载。

需要手动获取两个核心组件:

  1. punkt 分词器
    下载地址:https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip
    解压路径:$CHATCHAT_ROOT/data/nltk_data/tokenizers/punkt

  2. averaged_perceptron_tagger 词性标注器
    下载地址:https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/taggers/averaged_perceptron_tagger.zip
    解压路径:$CHATCHAT_ROOT/data/nltk_data/taggers/averaged_perceptron_tagger

最终目录结构应为:

data/nltk_data/ └── tokenizers/ └── punkt/ ├── english.pickle └── ... └── taggers/ └── averaged_perceptron_tagger/ ├── averaged_perceptron_tagger.pickle └── ...

这一步不做,后续可能出现“SentenceTokenizer not found”之类的错误。


一切就绪后,就可以导入你的私有知识了。将待检索的文档放入knowledge_base/samples/content/目录,支持格式包括:

  • .txt,.pdf
  • .docx,.pptx,.xlsx
  • .md

然后执行知识库重建命令:

chatchat kb -r

系统会自动完成:
1. 文档读取与清洗(去除水印、页眉页脚)
2. 文本切块(默认 chunk_size=250,overlap=50)
3. 使用bge-large-zh-v1.5编码为向量
4. 存入 FAISS 向量数据库(默认存储于本地)

等待进度条走完,表示知识已成功向量化。

最后启动 Web 服务:

chatchat start -a
  • -a表示绑定所有 IP 地址,允许远程访问
  • 默认端口为8501(基于 Gradio)

浏览器访问http://<你的IP>:8501,即可进入交互界面。


实测环节来了。选择“samples”知识库,输入问题:

“Langchain-Chatchat 支持哪些文档格式?”

系统迅速返回:

“Langchain-Chatchat 支持 TXT、PDF、Word(.docx)、Excel(.xlsx)、PowerPoint(.pptx)和 Markdown(.md)等多种文档格式,所有内容均在本地解析和处理,保障数据隐私。”

更令人惊喜的是,它还能支持多轮对话和上下文理解。比如追问:

“那 Excel 文件里的表格也能识别吗?”

回答:

“是的,系统会提取 .xlsx 文件中的每个 sheet 并转换为纯文本,保留行列结构信息,可用于后续检索。”

点击答案旁的[1]图标,还能直接跳转到原文出处,实现可追溯的回答机制。


回过头看,这套方案之所以能顺利跑通,关键在于解决了几个高频痛点:

  • 模型连不上?检查model_settings.yaml中的server_type是否正确设为xinference,且端口与服务一致。
  • 文档解析失败?很可能是缺了 NLTK 资源包,务必手动补全。
  • 回答驴唇不对马嘴?确认 embedding 模型是否为中文优化版(如bge-large-zh),英文模型在中文任务上表现很差。
  • 显存爆了?尝试使用 Int4 量化模型,或升级到更高显存卡。

Langchain-Chatchat 的模块化设计让它非常灵活。未来我还会探索更多组合方式,比如用 Ollama 替代 xinference,或者接入 FastGPT 构建企业级知识中台。更重要的是,这种“本地闭环”的架构思路,正在成为金融、医疗、法律等高合规行业落地大模型的标准范式。

如果你也在寻找一条既强大又安全的大模型落地路径,不妨试试这条路。代码完全开源,文档清晰,社区活跃,最重要的是——你的数据,永远留在你手里。

📌 GitHub 项目地址:https://github.com/chatchat-space/Langchain-Chatchat
📘 官方文档:https://chatchat.readthedocs.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

  • strstr以函数实现
  • ComfyUI API使用指南:高效稳定的绘图接口
  • Excalidraw模板系统:预设与自定义实践

最新新闻

  • 从零到一:Jetlinks物联网平台服务器部署实战与避坑指南
  • (转)一次ANSYS EM 2023R1 “Request name electronics_desktop does not exist in the licensing pool.“的离谱解决记录
  • 面试被问“你的缺点是什么”,90%的应届生都答错了!(附满分话术)
  • Spring Cloud Alibaba 最佳实践:基于 Spring Boot 4.0 的完整微服务示例项目
  • 三步掌握AI斗地主:如何用DouZero智能助手提升你的游戏胜率
  • 2026山东大学项目实训个人博客(六)

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号