LangChain-Chatchat本地搭建部署

news2024/12/22 17:54:44

文章目录

  • 前言
  • 一、安装部署
    • 1.软硬件要求
    • 2. 安装 Langchain-Chatchat
    • 3.安装Xinference
    • 4.遇到的问题
      • 问题1:Failed building wheel for llama-cpp-python
      • 问题2:Failed building wheel for pynini
      • 问题3:运行xinference错误
  • 二、初始化项目配置并运行
    • 1.执行初始化
    • 2.运行xinference
    • 3.部署模型
      • 1.从xinference中下载模型部署
      • 2.添加本地模型部署
      • 3.添加向量模型
    • 4.修改Chatchat配置文件
      • 1.配置模型(model_settings.yaml)
      • 2.配置知识库路径(basic_settings.yaml)(可选)
      • 2.基础配置文件(basic_settings.yaml)(可选)
    • 5.初始化知识库
    • 6.启动项目


前言

本文是基于LangChain-Chatchat0.3.1进行搭建的。

LangChain-Chatchat (原 Langchain-ChatGLM)

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的 RAG 与 Agent 应用项目。

一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。

GitHub地址:https://github.com/chatchat-space/Langchain-Chatchat

一、安装部署

1.软硬件要求

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

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

注意事项:
从 0.3.0 版本起,Langchain-Chatchat 提供以 Python 库形式的安装方式。Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,涉及到的模型种类包括 LLM、Embedding、Reranker 及后续会提供支持的多模态模型等,均改为支持市面常见的各大模型推理框架接入,如 Xinference、Ollama、LocalAI、FastChat、One API 等。

注意我这里是使用的0.3.1版本

电脑配置要求:
至少需要:32G内存、24G以上显存。本人亲测。

2. 安装 Langchain-Chatchat

1.使用conda创建虚拟环境

#创建虚拟环境
conda create -n chatchat python=3.10

conda activate chatchat

使用Python 库的形式安装

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

3.安装Xinference

Xinference官网:https://inference.readthedocs.io/zh-cn/latest/getting_started/installation.html
在这里插入图片描述

#创建xinference虚拟环境

conda create -n xinference python=3.10

conda activate xinference

#安装Xinference
pip install "xinference[all]"

4.遇到的问题

问题1:Failed building wheel for llama-cpp-python

Failed building wheel for llama-cpp-python
Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based projects

解决方案:
根据系统选择官方编译后的whl下载进行离线安装。
官方网址
Releases · abetlen/llama-cpp-python (github.com)

在这里插入图片描述

cp310指的是python版本。根据自己的版本和操作系统选择

安装

pip install llama_cpp_python-0.2.90-cp310-cp310-linux_x86_64.whl 

问题2:Failed building wheel for pynini

ERROR: Failed building wheel for pynini
ERROR: Failed to build installable wheels for some pyproject.toml based projects (pynini)

解决方案

conda install -c conda-forge pynini=2.1.5

问题3:运行xinference错误

OSError: libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory
RuntimeError: Failed to load shared library ‘/root/miniconda3/envs/xinference/lib/python3.10/site-packages/llama_cpp/lib/libllama.so’: libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory

解决方案

#查询libcuda.so.文件位置
sudo find /usr/ -name 'libcuda.so.*'

在这里插入图片描述
创建软连接

#/usr/local/cuda-12.1/compat/libcuda.so.1 为你本机地址
ln -s /usr/local/cuda-12.1/compat/libcuda.so.1 /lib/libc.musl-x86_64.so.1

二、初始化项目配置并运行

1.执行初始化

#创建一个目录名字为 chat-demo
mkdir chat-demo
#进入目录
cd chat-demo/
#执行初始化
chatchat init

该命令会执行以下操作:

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

出现如下信息就证明初始化成功了
在这里插入图片描述

目录结构如下:

在这里插入图片描述

  • basic_settings.yaml 服务器基本配置信息
  • kb_settings.yaml 知识库相关配置
  • model_settings.yaml 模型配置项
  • prompt_settings.yaml Prompt提示词 模板
  • tool_settings.yaml Agent 工具配置项

2.运行xinference

# linux下运行 可以指定host和port
xinference-local --host 0.0.0.0 --port 9997

运行结果如下
在这里插入图片描述
访问127.0.0.1:9997
在这里插入图片描述

3.部署模型

1.从xinference中下载模型部署

选择我们需要部署的模型,比如我这里选择Qwen2进行部署。填写相应的参数,进行一键部署。第一次部署会下载模型,可以选择国内通道modelscope下载,速度较快。
在这里插入图片描述
在这里插入图片描述
此时可以返回终端查看模型下载进度,下载完成会自动部署。部署完成后,会展示在Running中,可以通过打开模型UI进行访问。
在这里插入图片描述
在这里插入图片描述

2.添加本地模型部署

点击Register Model 填写相应的信息
在这里插入图片描述
在这里插入图片描述

3.添加向量模型

在这里插入图片描述

4.修改Chatchat配置文件

1.配置模型(model_settings.yaml)

DEFAULT_EMBEDDING_MODEL、DEFAULT_EMBEDDING_MODEL改为自己的模型名字

# 默认选用的 LLM 名称
DEFAULT_LLM_MODEL: glm4 # 这里改为我们自己的模型名称

# 默认选用的 Embedding 名称
DEFAULT_EMBEDDING_MODEL: bge-m3  # 这里改为我们自己的模型名称

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

2.配置知识库路径(basic_settings.yaml)(可选)

默认知识库位于 项目地址/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

2.基础配置文件(basic_settings.yaml)(可选)

# 各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host
# Windows 下 WEBUI 自动弹出浏览器时,如果地址为 "0.0.0.0" 是无法访问的,需要手动修改地址栏
# API 服务器地址。其中 public_host 用于生成云服务公网访问链接(如知识库文档链接)
API_SERVER:
  host: 0.0.0.0
  port: 7861
  public_host: 127.0.0.1
  public_port: 7861

# WEBUI 服务器地址
WEBUI_SERVER:
  host: 0.0.0.0
  port: 8501

5.初始化知识库

进行知识库初始化前,请确保已经启动模型推理框架及对应 embedding 模型,且已按照上述步骤完成模型接入配置。

运行命令初始化知识库

chatchat kb -r

等待一会出现如下信息就是运行成功了。

在这里插入图片描述

6.启动项目

运行命令启动项目

chatchat start -a

启动成功。控制台输出结果:
在这里插入图片描述
在浏览器访问http://0.0.0.0:8501
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2135866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解软件测试的概念

本文我们来了解软件测试 的一些基本概念。同时需要记住衡量软件测试结果的依据—需求; 1. 需求的概念 满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。(其实就是客户想要软…

摩尔信使MThings逻辑控制实例——交通灯

摩尔信使MThings提供了强大的数据配置和逻辑控制功能,可为用户带来一种高效且直观的方式进行管理和控制交通灯系统。与传统的PLC(可编程逻辑控制器)相比,MThings的界面更加用户友好,使得即使是非专业的用户也能够轻松地…

在 Mac 中设置环境变量

目录 什么是环境变量,为什么它们重要?什么是环境变量?举个例子 如何查看环境变量如何设置和修改环境变量1. 临时设置环境变量2. 永久设置环境变量3. 修改现有环境变量 环境变量在开发中的应用在 Node.js 项目中使用环境变量在 Python 项目中使…

Certificate has expired(npm 安装strapi)

报错信息 解决方法 1、清空缓存,有时,损坏的缓存会导致连接问题 npm cache clean --force 2、切换到淘宝镜像源的 npm 注册表 npm config set registry https://registry.npmmirror.com/ 执行这两步后就可以执行自己想要安装的东西了,我是在执…

Uniapp + Vue3 + Vite +Uview + Pinia 实现购物车功能(最新附源码保姆级)

Uniapp Vue3 Vite Uview Pinia 实现购物车功能(最新附源码保姆级) 1、效果展示2、安装 Pinia 和 Uview3、配置 Pinia4、页面展示 1、效果展示 2、安装 Pinia 和 Uview 官网 https://pinia.vuejs.org/zh/getting-started.html安装命令 cnpm install pi…

云轴科技ZStack 获鲲鹏应用创新大赛2024上海赛区决赛一等奖

9月13日,鲲鹏应用创新大赛2024上海赛区决赛成功举办。经评委专家从方案创新性、技术领先性、商业前景以及社会价值四个维度严格评审,云轴科技ZStack参赛作品《ZStack鲲鹏原生开发方案》荣获上海赛区企业赛——原生开发赛道(互联网&#xff09…

AI大模型系统实战:挑战与应用多领域,人工智能大模型的实际应用场景

AI大模型系统实战:挑战与应用多领域,人工智能大模型的实际应用场景 人工智能的新浪潮中,大模型系统已成为技术革新的重要驱动力。它们以其强大的学习能力和广泛的应用场景,正在重新定义我们与机器交互的方式。本文将深入探讨AI大模…

VS 如何显示构建的时间

Cherno 构建 Hazel 的时候会显示构建时间 VS -> Tools -> Options -> Projects and Solution -> VC Project Settings

UGit:腾讯自研的Git客户端新宠

UGit 是一款专门针对腾讯内部研发环境特点量身定制的 Git 客户端,其目标在于大幅提升开发效率以及确保团队协作的高度流畅性。UGit 能够良好地支持 macOS 10.11 及以上版本、Apple Silicon 以及 Win64 位系统。 可以下载体验一把。 https://ugit.qq.com/zh/index.…

GIS可视化软件:地理信息与遥感领域中的洞察之眼

在地理信息与遥感技术的广阔天地中,可视化软件如同一双洞察世界的明眸,将复杂的数据编织成生动、直观的画卷,为我们揭示地球的奥秘与城市的律动。本文将深入挖掘其技术核心、应用实例、未来趋势,探讨可视化软件如何为地理信息与遥…

电能质量监测装置和防孤岛装置在特斯拉工厂分布式光伏项目的应用

摘要:全球对可再生能源的关注增加,推动了分布式光伏发电系统的普及。这些系统因环保和灵活性而受到青睐,有助于解决能源和环境问题。电能质量在线监测装置和防孤岛保护装置在这些项目中至关重要。监测装置实时跟踪电压和电流,保障…

切换淘宝最新镜像源npm详细讲解

​ 大家好,我是程序员小羊! 前言: 在中国大陆,npm(Node Package Manager)的默认源由于网络限制,速度可能较慢。为了解决这个问题,淘宝提供了一个镜像源,它同步了 npm 的…

连接数据库(以MySQL为例)

文章目录 前言一、数据库是什么?二、连接步骤 1.手动导入驱动包2.连接数据库总结 前言 面对应用程序的开发,普遍需要保存用户的海量数据。保存粮的库叫粮库,保存水的库叫水库,那么保存数据的库自然叫数据库。有了数据库&#xff0…

Vue的slot插槽(默认插槽、具名插槽、作用域插槽)

目录 1. slot插槽1.1 默认插槽1.2 具名插槽1.3 作用域插槽 1. slot插槽 作用:让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式,适用于父组件向子组件传递数据 1.1 默认插槽 Category.vue: 定义一个插槽。…

先楫HPM6750 Windows下VSCode开发环境配置

用的是EVKmini,ft2232作为调试器jtag接口调试 启动start_gui.exe 以hello_world为例,更改一下build path,可以generate并使用gcc compile 最后会得到这些 点击start_gui里面的命令行,用命令行启动vscode 新建.vscode文件夹&…

html+css网页设计 旅游网站首页1个页面

htmlcss网页设计 旅游网站首页1个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xff…

C++速通LeetCode简单第10题-翻转二叉树

递归法: class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) {return nullptr;}TreeNode* left invertTree(root->left);TreeNode* right invertTree(root->right);root->left right;root->right left;return roo…

位段、枚举、联合

位段 在一个结构体中以位(最小单位)为单位来指定其成员所占的内存长度。位段成员名后面有一个冒号,冒号后有一个数字(这个数字是小于等于这个成员所占的位)。 typedef struct S {char a : 2;//8char b : 8;//8char c …

基于学习功能聚合的英语口语学习APP

项目介绍 本系统提供文章及朗读的发布、学生跟读及自动评测等功能,促进英语口语学习。 主要包括: 文章朗读:发布文章内容及相应的朗读录音,设定打卡要求,并提供播放功能; 文章跟读:打卡,提供朗读音频播放功能,熟悉后进行跟读,自动…

[苍穹外卖]-11数据可视化接口开发

ECharts Apache ECharts是一款基于JavaScript的数据可视化图表库, 提供直观, 生动,可交互, 可定制的数据可视化图表 入门案例: 使用Echarts, 前端关注图表的配置, 不同的配置影响展示的效果, 后端关注图表所需要的数据格式 <!DOCTYPE html> <html><head>&l…