保姆级教程!手把手教你从零开始基于 Langchain-Chatchat 搭建本地大模型知识库

3,707 阅读5分钟

LangChain-Chatchat 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的 RAG 与 Agent 应用项目,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

本文我们通过先简单介绍 LangChain-Chatchat 的原理,让大家有个大概认知,然后通过手把手一步一步教大家搭建自己的本地大模型知识库,如下所示就是我们的最终成果,相信通过这篇文章,你也能快速搭建自己的本地大模型知识库!

一、Langchain-Chatchat 介绍

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

1、实现原理

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

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

2、功能介绍

最新的 0.3.x 版本功能如下列表所示

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

3、模型框架支持

本项目中已经支持市面上主流的如 GLM-4-Chat 与 Qwen2-Instruct 等新近开源大语言模型和 Embedding 模型,这些模型需要用户自行启动模型部署框架后,通过修改配置信息接入项目,本项目已支持的本地模型部署框架如下:

除上述本地模型加载框架外,项目中也为可接入在线 API 的 One API 框架接入提供了支持,支持包括 OpenAI ChatGPT、Azure OpenAI API、Anthropic Claude、智谱清言、百川 等常用在线 API 的接入使用。

二、从零开始上手

1、软硬件要求

💡 软件方面,本项目已支持在 Python 3.8-3.11 环境中进行使用,并已在 Windows、macOS、Linux 操作系统中进行测试。

💻 硬件方面,因 0.3.0 版本已修改为支持不同模型部署框架接入,因此可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。

2、安装对应库

我们使用 pip 进行 langchain-chatchat 安装,并且采用清华源,具体安装命令如下所示

pip install langchain-chatchat -U -i https://pypi.tuna.tsinghua.edu.cn/simple/

因模型部署框架 Xinference 接入 Langchain-Chatchat 时需要额外安装对应的 Python 依赖库,因此如需搭配 Xinference 框架使用时,需要进行对应的安装:

安装 Chatchat 库,实现模型后处理

pip install "langchain-chatchat[xinference]" -U  -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装 xinference 库,实现模型推理

pip install "xinference[all]" -U -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、xinference

安装完相应的库之后,启动 xinference 以进行模型部署,通过命令行执行

xinference-local --host 0.0.0.0 --port 9997

启动后访问:IP:9997 即可进入 xinference 主界面,如下所示

选择我们需要部署的模型,比如我这里选择 qwen2-instruct 进行部署。填写相应的参数,进行一键部署。第一次部署会下载模型,可以选择国内阿里达摩院通道 modelscope 下载,速度较快

下载完成会自动部署,部署完成后,会展示在 Running 中,可以通过打开模型 UI进行访问

我们还需要安装一个一个向量模型,我们选择 bge-m3 这个向量模型,安装部署如下所示

4、初始化项目配置

从 0.3.1 版本起,Langchain-Chatchat 使用本地 yaml 文件的方式进行配置,用户可以直接查看并修改其中的内容,服务器会自动更新无需重启。

(1)设置 Chatchat 存储配置文件和数据文件的根目录(可选)

若不设置该环境变量,则自动使用当前目录。

# on linux or macos
export CHATCHAT_ROOT=/path/to/chatchat_data

# on windows
set CHATCHAT_ROOT=/path/to/chatchat_data

(2)执行初始化

执行初始化命令,生成配置文件

chatchat init

该命令会执行以下操作:

  • 创建所有需要的数据目录
  • 复制 samples 知识库内容
  • 生成默认 yaml 配置文件

(3)修改配置文件

修改配置模型 model_settings.yaml

# 默认选用的 LLM 名称
 DEFAULT_LLM_MODEL: qwen2-chat

 # 默认选用的 Embedding 名称
 DEFAULT_EMBEDDING_MODEL: bge-m3

# 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型
# 在 `MODEL_PLATFORMS` 中修改对应模型平台信息

修改基础配置文件 basic_settings.yaml

# API 服务器地址。其中 public_host 用于生成云服务公网访问链接(如知识库文档链接)
API_SERVER:
  host: X.x.x.x   # 自己服务器IP
  port: 7861      # 自己配置对应端口

# WEBUI 服务器地址
WEBUI_SERVER:
  host: x.x.x.x   # 自己服务器IP
  port: 8501      # 自己配置对应端口

5、初始化知识库在进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型,执行以下命令进行知识库初始化

chatchat kb -r

出现以下日志即为成功:

----------------------------------------------------------------------------------------------------
知识库名称      :samples
知识库类型      :faiss
向量模型::bge-large-zh-v1.5
知识库路径      :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量      :47
入库文件数      :42
知识条目数      :740
用时            :0:02:29.701002
----------------------------------------------------------------------------------------------------

总计用时        :0:02:33.414425

6、启动项目执行以下命令启动项目

chatchat start -a

默认地址为:IP:8501,进入 chatchat 前端页面,如下所示,我们就可以与它进行对话问答了!

看到这,恭喜你已经在脑海中搭建了自己的本地大模型知识库,心动不如行动,赶紧去动手试试吧,有问题欢迎留言交流!


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流~