LangChain-Chatchat 实践

1. 说明

比较了几个AI LLM的集成应用工具(比如Quivr, Dify, one-api), 还是LangChain-Chatchat更符合我的需要:

  • 支持私有化部署不同的LLM
  • 知识库支持
  • Api支持
  • 开源免费, 容易二开
相关路径:
条项路径
LangChain-Chatchat 项目/data0/Projects/Langchain-Chatchat
LLM 语言模型保存路径/data0/Projects/LLMs
安装环境:

软件: ubuntu22.04 / python 3.10 /  pip22 

硬件: 虚拟机 i9cpu, 分配16核, 52G内存, 500G硬盘

2. 安装

说明:  没选择docker方案是因为想更了解实现原理及二开需要

2.1 为避免安装时出现 "python setup.py egg_info did not run successfully." 问题
pip install setuptools-scm
pip install seqeval
2.2 资料准备

LangChain-Chatchat: : 用科学方法下载到路径 /data0/Projects/Langchain-Chatchat

LLM语言模型: 用科学方法下载到路径 /data0/Projects/LLMs

名称备注
LangChain-Chatchathttps://github.com/chatchat-space/Langchain-Chatchat.git使用
bge-large-zhhttps://huggingface.co/BAAI/bge-large-zh备用
bge-large-zh-v1.5https://huggingface.co/BAAI/bge-large-zh-v1.5使用
chatglm3-6bhttps://huggingface.co/THUDM/chatglm3-6b使用
2.3 执行

安装依赖库

# 进入目录
$ cd /data0/Projects/Langchain-Chatchat

# 安装全部依赖
$ pip install -r requirements.txt 
$ pip install -r requirements_api.txt
$ pip install -r requirements_webui.txt  

生成配置文件

python copy_config_example.py

修改配置文件, 仅列出修改之处 (因CPU比GPU便宜,选用CPU方式 : 0):

configs/model_config.py

...
MODEL_ROOT_PATH = "/data0/Projects/LLMs"

# 选用的 Embedding 名称
EMBEDDING_MODEL = "bge-large-zh-v1.5"


# Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
# EMBEDDING_DEVICE = "auto"
EMBEDDING_DEVICE = "cpu"

...
# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
# 列表中第一个模型将作为 API 和 WEBUI 的默认模型。
# 在这里,我们使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
# 如果你的显存不足,可使用 Qwen-1_8B-Chat, 该模型 FP16 仅需 3.8G显存。

LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"]
...

MODEL_PATH = {
    "embed_model": {
        "bge-large-zh": "/data0/Projects/LLMs/bge-large-zh",
        "bge-large-zh-v1.5": "/data0/Projects/LLMs/bge-large-zh-v1.5",
    },

    "llm_model": {
        "chatglm3-6b": "/data0/Projects/LLMs/chatglm3-6b",
    },
}

初始化知识库, 如果模型路径不对,会初始化失败,也导不进知识库文件

python init_database.py --recreate-vs

启动

$ python startup.py -a

3. 测试

3.1 LLM对话

几乎拉满性能

3.2 知识库

 

3.3 API 接口

http://ai001.dev.ia:7861/docs

参考

- https://github.com/chatchat-space/Langchain-Chatchat.git

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】ssm旅游景点管理系统设计

现代经济快节奏发展以及不断完善升级的信息化技术,让传统 数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游景点管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

vaspkit 画 Charge-Density Difference

(echo 314;echo $(cat 1))|vaspkit 文件1提前写好使用的CHGCAR路径 SPIN_DW.vasp ../ML2scf/SPIN_DW.vasp ../ML1scf/SPIN_DW.vasp POSite and negative 默认为blue,and 青色 (RGB 30 245 245) 正值:blue 。负值:青色 RGB 30 245 245。 提示&…

LLM Agent智能体综述(万字长文)

前言 🏆🏆🏆在上一篇文章中,我们介绍了如何部署MetaGPT到本地,获取OpenAI API Key并配置其开发环境,并通过一个开发小组的多Agent案例感受了智能体的强大,在本文中,我们将对AI Agent…

C++设计模式|创建型 5.原型模式

1.什么是原型模式? 原型模式⼀种创建型设计模式,该模式的核⼼思想是基于现有的对象创建新的对象,⽽不是从头开始创建。 在原型模式中,通常有⼀个原型对象,它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状…

Mysql数据存储格式分析

一、整体存储逻辑 1.1 Mysql数据存放位置 不同的存储引擎,对Mysql数据的存储是不同的。新建一个test数据库,里面有t1,t2和test5三张表,以Innodb和Myisam存储引擎为例: Innodb存储引擎: .frm文件:与表相…

【Nginx】如何在 Nginx 中阻止来自特定国家的 IP 地址访问

文章目录 前言一、准备工作二、查看 Nginx 服务器都拥有哪些模块2.1 先查看本地nginx是否有ngx_http_geoip2模块2.2 安装nginx并配置ngx_http_geoip2模块2.2.1下载所需版本的nginx到服务器2.2.2 先安装所需依赖2.2.3 解压文件2.2.4 下载ngx_http_geoip2模块2.2.5 编译安装nginx…

解决webstorm没有vue语法提示;webstorm没有代码提示

解决webstorm没有vue语法提示;webstorm没有代码提示 使用webstorm 2023.x 开发vue项目。发现死活没有vue语法提示,即便是npm install、清理缓存。对比其他vue项目却有语法提示,最后发现依赖库被忽略了: 删除掉node_modules 的忽略…

国外IP代理免费试用技巧

随着互联网的普及,人们越来越依赖于网络来获取信息、进行交流和娱乐。国外IP代理就成了利器之一。在本文中,我们将探讨如何免费使用国外IP代理。 一、了解国外IP代理的原理 国外IP代理,简单来说,就是通过连接到位于国外的代理服务…

linux 环境下 分布式文件搭建fastDFS

1.软件信息 地址:happyfish100 (YuQing) GitHub 1.fastdfs-master.zip 2.fastdfs-nginx-module-master.zip 3.libfastcommon-master.zip 4.libserverframe-master.zip yum install make cmake gcc gcc-c perl 2.安装libfastcommon unzip libfastcommon-mast…

怎么转换音频?看这3款音频转换器

随着数字媒体的发展,音频文件在我们的日常生活中占据了越来越重要的地位。有时候在不同的应用场景里,无论是音乐、语音还是其他类型的音频内容,我们都需要对其进行转换以满足不同的需求。 本文将为您介绍3款常用的音频转换器,帮助…

代码随想录训练营Day31:动态规划3:0-1背包

1.0-1背包基础 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 1.1动态规划五部曲 确定dp数组以及下标的含义:dp[i][j] 表示…

sql操作、发送http请求和邮件发送 全栈开发之路——后端篇(2)

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏)

RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏) 文章目录 RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏)电路配置i2c1设备树创建驱动编写…

什么是50etf期权?期权的三级交易权限是什么?

今天期权懂带你了解什么是50etf期权?期权的三级交易权限是什么?期权三级交易权限,作为股票期权交易中的最高级别权限,赋予了投资者更广泛、更灵活的交易选择和策略。 什么是50etf期权? ETF期权是指在支付一定额度的权…

如何让机器理解人类语言?Embedding技术详解

如何让机器理解人类语言?Embedding技术详解 文章目录 如何让机器理解人类语言?Embedding技术详解介绍什么是词嵌入?什么是句子嵌入?句子嵌入模型实现句子嵌入的方法值得尝试的句子嵌入模型 句子嵌入库实践Step 1Step 2Step 3 Doc2…

SwiftUI中三大渐变色的介绍

在SwiftUI中,渐变色是一种常用的视觉效果,用于创建平滑过渡的颜色变化。通过使用渐变色,我们可以实现丰富多彩的界面设计,增强用户体验。 1. 渐变色的种类和用途 种类: 线性渐变(Linear Gradient&#x…

oracle多条重复数据,取最新的

1、原理讲解-可直接看2 筛选出最新的 SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (PARTITION BY LOCALAUTHID ORDER BY LASTUPDATETIME DESC) AS rn FROM USER_LOCALAUTH_STATE t ) t WHERE t.rn 1; 解释: 这个序号是基于[LOCALAUTHID]字段进行分…

计算机vcruntime140.dll找不到如何修复,分享5种靠谱的修复教程

当您在运行某个应用程序或游戏时遇到提示“找不到vcruntime140.dll”,这通常意味着系统中缺少了Visual C Redistributable for Visual Studio 2015或更高版本的一个重要组件。这个错误通常发生在运行某些程序时,系统无法找到所需的动态链接库文件。小编将…

ASP.NET医药进销存系统

摘 要 目前,大中型城市的多数药品店已经实现了商品管理、客户管理、销售管理及销售管理等的信息化和网络化,提高了管理效率。但是,在大多数小药品店,药品店管理仍然以传统人工管理为主,特别是在药品的采购、销售、库…

电商核心技术揭秘56:客户关系管理与忠诚度提升

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘相关系列文章合集(3) 文章目录 引言客户关系管理(CRM)的重要性提升顾客体验数据驱…