当前位置:   article > 正文

【LLM大模型】Langchain-Chatchat 源码部署测试

langchain-chatchat

在这里插入图片描述

本文目标:部署LangChain-Chatchat,并利用部署框架Xinference,实现模型推理页面服务、实现rag。

前言

LangChain-Chatchat是“利用 langchain 思想实现的基于本地知识库的问答应用”。
LangChain-Chatchat(后文简写为chatchat)源码:github.com/chatchat-sp…
Xinference源码:github.com/xorbitsai/i…
服务器系统版本:Ubuntu 20.04.6 LTS
服务器架构:x86-64

LangChain-Chatchat实现原理如下图所示,过程包括:

  • 加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 向量存储
  • 问句向量化 -> 在文本向量中匹配出与问句向量最相似的 top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt中 -> 提交给 LLM生成回答。 在这里插入图片描述
    从文档处理角度来看,实现流程如下: 在这里插入图片描述

一、部署Xinference

chatchat从0.3.0版本开始,需要通过常见的大模型推理框架进行模型加载,如XinferenceOllamaLocalAIFastChatOne API等。
本文使用Xinference进行框架部署与模型加载。
为避免依赖冲突,chatcaht和Xinference需要放在不同的python虚拟环境中,本文使用conda环境,即将chatchat和Xinference放在不同的conda环境中运行。

部署Xinference并启动llm模型和embedding模型见文章:juejin.cn/post/739728…

二、创建环境

下载源码

可以去前面提到的源码链接所在网址下载源码,也可以直接使用下面命令下载源码:
git clone https://github.com/chatchat-space/Langchain-Chatchat.git

conda环境

如果conda未设置国内的下载源,可以先设置为清华源。
查看conda已配置的下载源:
conda config --show-source 设置为清华源(也可以设置为阿里等其他源,方便下载): conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

创建conda环境:
conda create -n chatchat python=3.11
激活环境:
conda activate chatchat

poetry

chatchat自0.3.0版本开始,使用poetry进行环境管理。我们也按照推荐的来部署。
前面已经激活了“chatchat”环境,可以通过命令行前面是否有“(chatchat)”标识,来判断当前conda环境。
pip下载前,也可以配置pip国内下载源,如果已经配置过可以忽略下面命令pip配置命令。
pip查看下载源:
pip config get global.index-url
pip配置清华源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装poetry:
pip install poetry
安装后,可以查看安装的poetry版本信息:

arduino
 代码解读

pip list  # 列出pip安装库版本信息,可以看到下面三个库即版本号

poetry               1.8.3
poetry-core          1.9.0
poetry-plugin-export 1.8.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

使poetry使用virtualenv python environment:
poetry config virtualenvs.prefer-active-python true
查看刚刚poetry设置的信息,输入下面命令打印“true”就说明设置成功:
poetry config virtualenvs.prefer-active-python

使用poetry安装与源码和依赖
进入之前下载源码目录。

bash
 代码解读

cd Langchain-Chatchat/libs/chatchat-server/
poetry install --with lint,test -E xinference

# 安装完成后,可以查看下安装版本信息
pip list  # 下面列出几个包信息以作参考

langchain                   0.1.17
langchain-chatchat          0.3.1.3         /data/xxx/Langchain-Chatchat/libs/chatchat-server
poetry                      1.8.3
xinference-client           0.13.3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

设置chatchat环境变量

设置数据目录,实时生效:
export CHATCHAT_ROOT=/data/xxx/chatchat
永久生效,修改~/.bash_profile文件:

bash
 代码解读

vi ~/.bash_profile
# 在文件最后,添加下面语句
export CHATCHAT_ROOT=/data/xxx/chatchat
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果开发所用的IDE需要指定项目源代码根目录,可将该目录设为源代码根目录(Langchain-Chatchat/libs/chatchat-server/)

三、初始化并启动

初始化

初始化项目配置文件和数据目录:
cd libs/chatchat-server
python chatchat/cli.py init
或使用chatchat初始化也可:
chatchat init
初始化成功,有以下日志打印:

kotlin
 代码解读

2024-07-31 11:44:54.195 | SUCCESS  | __main__:init:47 - 开始初始化项目数据目录:/data/xxx/chatchat
2024-07-31 11:44:54.195 | SUCCESS  | __main__:init:49 - 创建所有数据目录:成功。
2024-07-31 11:44:54.197 | SUCCESS  | __main__:init:52 - 复制 samples 知识库文件:成功。
2024-07-31 11:44:54.217 | SUCCESS  | __main__:init:54 - 初始化知识库数据库:成功。
2024-07-31 11:44:54.472 | SUCCESS  | __main__:init:66 - 生成默认配置文件:成功。
2024-07-31 11:44:54.472 | SUCCESS  | __main__:init:67 - 请先检查确认 model_settings.yaml 里模型平台、LLM模型和Embed模型信息已经正确
2024-07-31 11:44:54.472 | SUCCESS  | __main__:init:76 - 执行 chatchat kb -r 初始化知识库,然后 chatchat start -a 启动服务。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

初始化后,在chatchat数据目录,会有以下文件(夹)生成:

bash
 代码解读

ls /data/xxx/chatchat;
basic_settings.yaml  data  kb_settings.yaml  model_settings.yaml  prompt_settings.yaml  tool_settings.yaml

ls /data/xxx/chatchat/data;
knowledge_base  logs  media  nltk_data  temp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

/data/xxx/chatchat内的几个yaml文件,就是项目的配置文件,之后需要根据实际使用修改配置信息。

修改配置信息

咱们前面用xinference加载了“qwen2-instruct-7b”、“bge-large-zh-v1.5”,下面修改配置时,也按照这些信息填。
修改model_settings.yaml文件:

yaml
 代码解读

vi model_settings.yaml  # 修改下面参数

# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: qwen2-instruct-7b

# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5

# 在`MODEL_PLATFORMS`中修改模型平台信息
    platform_name: xinference
    platform_type: xinference
    api_base_url: http://127.0.0.1:9997/v1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

初始化知识库

初始化知识库,会把"/data/xxx/chatchat/knowledge_base/samples/content/"目录下的文件加载,如果不需要这些数据,可以适当删除里面的文件。
chatchat kb -r
初始化时,可以看到日志”正在将 samples/xxx 添加到向量库“,所有文件添加完后,会有下面日志打印,表明知识库初始化完成:

sql
 代码解读

2024-07-31 13:52:11.640 | INFO     | chatchat.server.knowledge_base.kb_cache.faiss_cache:save:40 - 已将向量库 ('samples', 'bge-large-zh-v1.5') 保存到磁盘

----------------------------------------------------------------------------------------------------
知识库名称	:samples
知识库类型	:faiss
向量模型:	:bge-large-zh-v1.5
知识库路径	:/data/xxx/chatchat/data/knowledge_base/samples
文件总数量	:12
入库文件数	:12
知识条目数	:755
用时		:0:00:50.146988
----------------------------------------------------------------------------------------------------

总计用时	:0:00:50.161681
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

启动项目

启动项目可以使用下面命令:
chatchat start -a
也可以后台启动,这样窗口断开不影响项目运行,推荐后台启动:
nohup chatchat start -a > chatchat_cli.log 2>&1 &
观察启动日志:

bash
 代码解读

tail -n 100 -f chatchat_cli.log

# 可以看到下面url信息,说明启动成功
  You can now view your Streamlit app in your browser.

  URL: http://0.0.0.0:8501
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

启动成功后,在浏览器上打开日志最后的url,注意将0.0.0.0替换为服务器ip。
推理服务使用如下: 在这里插入图片描述
rag使用如下: 在这里插入图片描述
知识库管理中,可以看到我们刚刚初始化知识库时加载的数据: 在这里插入图片描述

如何系统的去学习AI大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1009613
推荐阅读
相关标签