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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入学习指针2

前言 hello,我又来了,今天有我继续带领大家深入的学习指针,通过上次的学习,我们已经了解到了指针的基本概念,指针如何使用,指针使用的益处,以及一些相关的概念,那今天我们就继续深入的学习&am…

BOM部分

一,概述 二,Windows对象常见的事件 1.窗口加载事件 上面那个是会等页面都加载完了,在进行函数的调用或者触发事件,如(图像,文本,css,js等),所以那个声明可以…

可道云teamOS企业网盘实用插件介绍:实时在线流程图编辑与分享,用在线流程图打造数字化工作流程

在使用企业网盘用于日常办公的情况下,有一些实用的在线小工具能为团队效率和协作带来一定的提升。 今天要给大家介绍的可道云teamOS的在线画流程图,是很值得介绍的一个在线工具。 在线流程图:直观展示,高效便捷 以往我们想要梳理…

Ajax 学习

文章目录 1. 前置知识1.1 ajax 介绍1.2 XML 简介 2. AJAX 学习2.1 AJAX基础学习(1)AJAX的特点(2)AJAX 初体验(3)服务端响应json 数据 2.2 IE 缓存问题2.3 请求超时和网络异常2.4 手动取消请求2.5 重复请求2…

原子学习笔记3——点亮 LED

一、应用层操控设备的两种方式 应用层如何操控底层硬件,同样也是通过文件 I/O 的方式来实现,设备文件便是各种硬件设备向应用层提供的一个接口,应用层通过对设备文件的 I/O 操作来操控硬件设备,譬如 LCD 显示屏、串口、按键、摄像…

nestjs封装一个响应体

封装一个DTO // response.dto.tsimport {CallHandler,ExecutionContext,Injectable,NestInterceptor, } from "nestjs/common"; import { FastifyReply } from "fastify"; import { Observable } from "rxjs"; import { map } from "rxjs/…

数据分离和混淆矩阵的学习

1.明确意义 通过训练集建立模型的意义是对新的数据进行准确的预测(测试集的准度高才代表good fit); 2.评估流程 3.单单利用准确率accuracy进行模型评估的局限性 模型一:一共1000个数据(分别为900个1和100个0&#x…

搜索引擎的设计与实现(三)

目录 5 系统详细实现 5.1实现环境配置 5.2功能实现 5.2.1 建立索引 5.2.2 文件搜索实现 5.2.3 数据库的连接配置 5.2.4 数据库搜索实现 5.2.5 后台数据编辑实现 前面内容请移步 搜索引擎的设计与实现(二) 免费源代码&毕业设计论文 搜索…

8.基于鱼鹰优化算法(OOA)优化VMD参数(OOA-VMD)

代码原理 鱼鹰优化算法(Osprey Optimization Algorithm, OOA)是一种基于仿生学原理的启发式优化算法,它模拟了鱼鹰觅食的行为,通过调整搜索空间中的个体位置来优化目标函数。 鱼鹰优化算法可参考:鱼鹰优化算法(Ospre…

企业运维背后的故事:TASKCTL带你了解日常工作与技术演进

今天,作为一名经验丰富、从业多年经常与运维人员打交道的人,我想与大家聊聊运维的日常工作、部门协调以及未来发展,希望能为即将转行或正在从事运维工作的你,提供一些新的视角和启发。 运维的日常工作:挑战与乐趣并存 …

ConfigError: Main class ‘XXX’ doesn’t exist in the workspace.Vscode

前言 唉,又是被Vscode折磨的一个晚上,本想好好写点代码的,却被一个个小问题搞得团团转,服了。 错误原因分析 正如标题所示,这是扩展“Java->debug”抛出的一个错误,意思是这个“XXX”主类不在工作区内…

【35分钟掌握金融风控策略27】贷中风控策略与客户运营体系

目录 贷中风控策略与客户运营体系 贷中风控日标 贷中风控数据源 贷中风控策略与客户运营体系 贷中是风控的第二道防线,贷中阶段风控的重点工作就是存量客户风控及运营。在当下,新客市场趋于饱和且获客成本越来越高,所以,在做好…