【大模型学习】利用最新版Langchain-Chatchat搭建个人知识库问答LLM
如果存在此选项,则使用它。修改配置文件,需要根据步骤2. 模型推理框架并加载模型中选用的模型推理框架与加载的模型进行模型接入配置,具体参考model_settings.yaml中的注释。默认知识库位于CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。-i, --incremental:本地文件夹中
一、相关环境
参考链接:https://github.com/chatchat-space/Langchain-Chatchat
langchain-ChatGLM 版本:v0.3.1
操作系统及版本: Windows11
Python 版本: 3.10
搭建方案:
-
设计功能
-
选择框架和模型
-
收集数据
-
将数据Embeddings存入向量数据库
-
设计Prompt模板让LLM指令遵循
-
验证迭代
-
前后端搭建
大模型应用开发思路
二、搭建过程
2.1 环境配置
搭建一个虚拟环境,这步不是必须的,如果你之前就已经有了可以忽略:
conda create -n chat python=3.10 -y
拉取ChatChat的代码:
https://github.com/chatchat-space/Langchain-Chatchat.git
安装chatchat的环境:
pip install "langchain-chatchat[xinference]" -U
使用模型推理框架并加载模型,这里用到的是Xinference。
注意:为避免依赖冲突,请将 Langchain-Chatchat 和模型部署框架如 Xinference 等放在不同的 Python 虚拟环境中,比如 conda, venv, virtualenv 等。
因此建议新建一个虚拟环境:
conda create -n xinf python=3.10 -y
Xinference 可以安装在 Linux、Windows 和 macOS 上。要使用 Xinference 运行模型,需要安装与打算服务的模型类型相对应的后端,可以用pip命令完成。
如果打算提供所有受支持的模型,则可以使用单个命令安装所有必要的依赖项:
pip install "xinference[all]"
如果只想要安装个简单的,Transformers支持大多数最先进的模型的推理。它是 PyTorch 格式模型的默认后端:
pip install "xinference[transformers]"
2.2 启动推理框架和下载模型
在本地运行 Xinference,这里有个细节要注意,Windows中不能直接使用0.0.0.0启动服务,需要给出本地IP地址,不然会报错:
xinference-local --host 127.0.0.1 --port 9997
终端启动
打开的页面
本次的LLM模型选择是GLM-chat4:
选择GLM-chat4
选择下载内容
下载权重
终端就会开始下载模型权重了。
Embeddings模型选择的是bge-large-zh-v1.5,选择后一样就可以开始下载了
bge-large-zh-v1.5
2.3 配置chatchat
现在打开chatchat:
设置 Chatchat 存储配置文件和数据文件的根目录,在文件夹中新建一个chatchat_data文件夹:
chatchat_data文件夹
# on linux or macos
export CHATCHAT_ROOT=/path/to/chatchat_data
# on windows
set CHATCHAT_ROOT=/path/to/chatchat_data
若不设置该环境变量,则自动使用当前目录。
执行初始化:
chatchat init
该命令会执行以下操作:
-
创建所有需要的数据目录
-
复制 samples 知识库内容
-
生成默认 yaml 配置文件
数据库中的内容
初始化成功
修改配置文件,需要根据步骤2. 模型推理框架并加载模型中选用的模型推理框架与加载的模型进行模型接入配置,具体参考model_settings.yaml中的注释。主要修改以下内容:
# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: qwen1.5-chat
# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5
# 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型
# 在 `MODEL_PLATFORMS` 中修改对应模型平台信息
配置知识库路径(basic_settings.yaml),这步可以不做,如果你就是用前面配置好的数据库地址。
默认知识库位于CHATCHAT_ROOT/data/knowledge_base,如果你想把知识库放在不同的位置,或者想连接现有的知识库,可以在这里修改对应目录即可。
# 知识库默认存储路径
KB_ROOT_PATH: D:\chatchat-test\data\knowledge_base
# 数据库默认存储路径。如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。
DB_ROOT_PATH: D:\chatchat-test\data\knowledge_base\info.db
# 知识库信息数据库连接URI
SQLALCHEMY_DATABASE_URI: sqlite:///D:\chatchat-test\data\knowledge_base\info.db
配置知识库(kb_settings.yaml)(可选):
默认使用 FAISS 知识库,如果想连接其它类型的知识库,可以修改 DEFAULT_VS_TYPE 和 kbs_config。
支持的数据文件类型很多,包括PDF、TXT、MP4、CSV、MD等,但是要注意放置到对应的文件夹下面:
直接将文件放在这些文件夹内即可
2.4 初始化知识库
进行知识库初始化前,请确保已经启动模型推理框架及对应embedding模型(也就是Xinference框架要启动着),且已按照上述步骤3完成模型接入配置。
chatchat kb -r
数据处理中
出现这个就说明已经加载好了
更多功能可以查看:
chatchat kb --help
-
-r, --recreate:重新创建矢量存储。如果存在此选项,则使用它。已将文档文件复制到内容文件夹,但矢量存储尚未填充或DEFAUL_VS_TYPE/DEFAUL_EMBEDING_MODEL已更改。
-
--create-table:如果不存在,则创建空表。
-
--clear-table:创建空表,或在重新创建矢量存储之前删除数据库表。
-
-u, --db-update:数据库中存在文件的矢量存储更新。如果要重新创建矢量存储,请使用此选项。文件存在于数据库中,跳过文件存在于本地文件夹。
-
-i, --incremental:本地文件夹中存在文件的增量更新矢量存储,数据库中不存在。如果您希望逐步创建矢量,请使用此选项。
-
--trim-db:删除本地数据库中不存在的文档文件夹中的文档。用于删除用户在文件浏览器中删除的文档文件。
-
--trim-folder: 删除本地文件夹中不存在的文档文件数据库。用于释放本地磁盘空间,删除未使用的文档文件。
-
-n, --kb-name TEXT:指定要操作的知识库名称。默认值为KB_ROOT_PATH中存在的所有文件夹。
-
-e, --embed-model TEXT:指定嵌入模型。
-
--import-from-db TEXT:从指定的sqlite数据库导入表。
-
--help:显示此消息并退出。
2.5 启动项目
chatchat start -a
主页面
三、遇到的问题
3.1 peer closed connection without sending complete message body (incomplete chunked read)
解决方案:
pip install openai==0.28.1
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)