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

程序学到昏 2024-10-18 15:31:05 阅读 95

在这里插入图片描述

本文目标:部署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实现原理如下图所示,过程包括:

加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 向量存储问句向量化 -> 在文本向量中匹配出与问句向量最相似的 <code>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…

二、创建环境

下载源码

可以去前面提到的源码链接所在网址下载源码,也可以直接使用下面命令下载源码:

<code>git clone https://github.com/chatchat-space/Langchain-Chatchat.git

conda环境

如果conda未设置国内的下载源,可以先设置为清华源。

查看conda已配置的下载源:

conda config --show-sourcecode> 设置为清华源(也可以设置为阿里等其他源,方便下载): 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 ?

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

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

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

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

目标:了解AI大模型的基本概念、发展历程和核心原理。内容

L1.1 人工智能简述与大模型起源L1.2 大模型与通用人工智能L1.3 GPT模型的发展历程L1.4 模型工程

- L1.4.1 知识大模型

- L1.4.2 生产大模型

- L1.4.3 模型工程方法论

- L1.4.4 模型工程实践L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

目标:掌握AI大模型API的使用和开发,以及相关的编程技能。内容

L2.1 API接口

- L2.1.1 OpenAI API接口

- L2.1.2 Python接口接入

- L2.1.3 BOT工具类框架

- L2.1.4 代码示例L2.2 Prompt框架

- L2.2.1 什么是Prompt

- L2.2.2 Prompt框架应用现状

- L2.2.3 基于GPTAS的Prompt框架

- L2.2.4 Prompt框架与Thought

- L2.2.5 Prompt框架与提示词L2.3 流水线工程

- L2.3.1 流水线工程的概念

- L2.3.2 流水线工程的优点

- L2.3.3 流水线工程的应用L2.4 总结与展望

阶段3:AI大模型应用架构实践

目标:深入理解AI大模型的应用架构,并能够进行私有化部署。内容

L3.1 Agent模型框架

- L3.1.1 Agent模型框架的设计理念

- L3.1.2 Agent模型框架的核心组件

- L3.1.3 Agent模型框架的实现细节L3.2 MetaGPT

- L3.2.1 MetaGPT的基本概念

- L3.2.2 MetaGPT的工作原理

- L3.2.3 MetaGPT的应用场景L3.3 ChatGLM

- L3.3.1 ChatGLM的特点

- L3.3.2 ChatGLM的开发环境

- L3.3.3 ChatGLM的使用示例L3.4 LLAMA

- L3.4.1 LLAMA的特点

- L3.4.2 LLAMA的开发环境

- L3.4.3 LLAMA的使用示例L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。内容

L4.1 模型私有化部署概述L4.2 模型私有化部署的关键技术L4.3 模型私有化部署的实施步骤L4.4 模型私有化部署的应用场景

学习计划:

阶段1:1-2个月,建立AI大模型的基础知识体系。阶段2:2-3个月,专注于API应用开发能力的提升。阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。阶段4:4-5个月,专注于高级模型的应用和部署。

这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【<code>保证100%免费】

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。