本文目标:摆设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版本开始,必要通过常见的大模型推理框架举行模型加载,如Xinference、Ollama、LocalAI、FastChat、One 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
复制代码 使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
复制代码 设置chatchat环境变量
设置数据目录,实时生效:
export CHATCHAT_ROOT=/data/xxx/chatchat
永久生效,修改~/.bash_profile文件:
- bash
- 代码解读
- vi ~/.bash_profile
- # 在文件最后,添加下面语句
- export CHATCHAT_ROOT=/data/xxx/chatchat
复制代码 假如开发所用的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 启动服务。
复制代码 初始化后,在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
复制代码 /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
复制代码 初始化知识库
初始化知识库,会把"/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
复制代码 启动项目
启动项目可以使用下面命令:
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
复制代码 启动乐成后,在浏览器上打开日记最后的url,留意将0.0.0.0更换为服务器ip。
推理服务使用如下:
rag使用如下:
知识库管理中,可以看到我们刚刚初始化知识库时加载的数据:
怎样系统的去学习AI大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多履历和知识值得分享给大家,也可以通过我们的能力和履历解答大家在人工智能学习中的很多困惑,以是在工作繁忙的情况下照旧对峙各种整理和分享。
但苦于知识流传途径有限,很多互联网行业朋友无法得到精确的资料得到学习提拔,故此将并将重要的 AI大模型资料 包罗AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们假如有必要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
|