Langchain-Chatchat学习

news2024/11/28 21:44:31

参考:Langchain-Chatchat + 阿里通义千问Qwen 保姆级教程 | 次世代知识管理解决方案 - 知乎 (zhihu.com)

中文LLM生态观察

模型

就开源的部分而言,从一开始的MOSS[1] ChatGLM[2] ChatGLM2 [3] 到后来的 baichan [4] 基于LLama2 微调的 中文LLama2 [5] 再到最近开源的 通义千问 Qwen [6] 。 至于更多模型和相关评分榜单可以看一直在维护更新模型汇总的文章。

参考:大语言模型汇总索引帖(持续更新) - 知乎 (zhihu.com)

基于langchain的智能助手

其中比较突出的,之前我觉得是ChatGLM系列 ,不过现在我认为是最近开源的 Qwen 通义千问。
各家都有一个比较好的做法就是去适配一套和OpenAI gpt3.5一致的API 方便大家在测试和搭建不同模型时快速的切换,减少大量阅读接口文档的时间。

通义千问干脆直接默认API部署代码做成OpenAI API 格式

生态

除了大语言模型本身,相关的基建生态也是我们需要持续关注的。 其中最出名的当属基于相当于LLM应用中间件的 LLama Index 、 Langchain框架 和 AIGC时代数据持久化层的 各大向量数据库。

  1. 使用 FastChat 提供开源 LLM 模型的 API,以 OpenAI API 接口形式接入,提升 LLM 模型加载效果;
  2. 使用 langchain 中已有 Chain 的实现,便于后续接入不同类型 Chain,并将对 Agent 接入开展测试;
  3. 使用 FastAPI 提供 API 服务,全部接口可在 FastAPI 自动生成的 docs 中开展测试,且所有对话接口支持通过参数设置流式或非流式输出;
  4. 使用 Streamlit 提供 WebUI 服务,可选是否基于 API 服务启动 WebUI,增加会话管理,可以自定义会话主题并切换,且后续可支持不同形式输出内容的显示;
  5. 项目中默认 LLM 模型改为 THUDM/chatglm2-6b,默认 Embedding 模型改为 moka-ai/m3e-base,文件加载方式与文段划分方式也有调整,后续将重新实现上下文扩充,并增加可选设置;
  6. 项目中扩充了对不同类型向量库的支持,除支持 FAISS 向量库外,还提供 Milvus, PGVector 向量库的接入;
  7. 项目中搜索引擎对话,除 Bing 搜索外,增加 DuckDuckGo 搜索选项,DuckDuckGo 搜索无需配置 API Key,在可访问国外服务环境下可直接使用。

架构

其实LangChain-Chatchat 前身是 langchain-chatglm ,即为chatglm 制作的 langchain 组件

下面是早期项目的流程原理图

简单来说就是把本地的一些文档( doc txt md csv json ...) 先通过一系列处理( 读取 分词 )embedding模型编码成一定数量的高维向量 (下图中 1到6)

而用户原本直接和LLM对话的文本 也会通过embedding 模型编码成高维向量 (下图中 8 9)

然后通过计算余弦相似度的方式 (下图中10和7) 来检索本地文档库中可能提供帮助的相关资料

再和原用户的问题文本 结合 (下图中11)

经过预先我们准备好的提示词模板 Prompt Template 组装成最后的 Prompt 提示词 (下图中12 13)

去问LLM (下图中14 15)

简单来说,embedding模型是一种通过将输入数据转换为稠密的实值向量(也称为嵌入)来解决机器学习问题的技术。这种转换使得原始输入数据可以在一个新的、潜在的空间中表示,其中相似的输入被映射到彼此接近的位置,而不同的输入则被映射到远离的位置。

embedding模型最早在自然语言处理领域得到广泛应用,其中最著名的例子可能是word2vec模型。在这种模型中,每个单词都被映射到一个固定的向量,向量之间的距离可以反映两个单词在语义上的相似程度。

除了自然语言处理之外,embedding模型还广泛应用于计算机视觉、社交网络分析等领域。例如,在图像识别中,我们可以将每张图片映射到一个高维向量,向量之间的距离可以反映两张图片之间的相似度;在社交网络分析中,我们可以将每个用户映射到一个向量,向量之间的距离可以反映两个用户之间的相似度等等。

总之,embedding模型提供了一种有效的方式来捕获数据中的复杂结构和关联,因此它已经成为许多机器学习应用的重要组成部分。

模型下载方法汇总

通义千问 Qwen-7B-Chat-Int4 模型本地化部署-CSDN博客

git clone https://www.modelscope.cn/Jerry0/m3e-base.git

2.0版本在原有基础上

增加了支持的大语言模型 比如我们今天要讲的通义千问 。

增加了支持的向量数据库 比如本文中使用的Milvus。

增加了搜索引擎能力的集成 让LLM能利用外部实时信息 比如本文中使用的DuckDuckGO。

git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

cat requirements.txt

pip install -r requirements.txt

配置文件修改

复制模型相关参数配置模板文件 configs/model_config.py.example 存储至项目路径下 ./configs 路径下,并重命名为 model_config.py

复制服务相关参数配置模板文件 configs/server_config.py.example 存储至项目路径下 ./configs 路径下,并重命名为 server_config.py

参考:win10 安装 Langchain-Chatchat 避坑指南(2023年9月18日v0.2.4版本,包含全部下载内容!)-CSDN博客

embedding模型 、llm模型、 向量数据库 、 prompt template (后面这俩我们先使用默认即可)

llm模型

将local_model_path 的值改为你机器上存放千问模型的路径

感觉配置的不对 待验证

参考:大模型部署手记(16)ChatGLM2+Ubuntu+LongChain-ChatChat-CSDN博客

cp basic_config.py.example basic_config.py

cp kb_config.py.example kb_config.py

cp prompt_config.py.example prompt_config.py

知识库初始化

当前项目的知识库信息存储在数据库中,在正式运行项目之前请先初始化数据库

cd ..

python init_database.py --recreate-vs

从给出的错误信息来看,PyTorch和torchvision是用不同的CUDA主要版本编译的PyTorch使用的是CUDA 12.1版本,而torchvision使用的是CUDA 11.8版本为了解决这个问题,你需要重新安装与PyTorch版本相匹配的torchvision

pip uninstall torchvision

pip install torchvision -f https://download.pytorch.org/whl/cu121/torch_stable.html
 

python init_database.py --recreate-vs

还是有些问题 GPU版本不对

启动:

python startup.py --all-webui

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

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

相关文章

ubuntu改window任务栏

经常在ubuntu和win之间切换,任务栏的布局不统一会让人很别扭,个人很喜欢win任务栏的不折叠图标功能,而ubuntu没有,又很喜欢的ubuntu的多工作空间,效率比副屏还高,还可以自定义切换工作空间的快捷键。鱼和熊…

(附源码)基于NET学生信息管理系统-计算机毕设 24077

基于NET学生信息管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用C#技术建…

第二证券:燃料电池产业进入发展快车道 多家公司披露布局进展

据悉,日前太原钢铁(集团)有限公司初次开发出超级超纯铁素体TFC22-X连接体材料并结束了批量供货,填补了国内空白。 燃料电池电堆连接体材料是行业中最为要害的战略材料。研发团队打破了特别元素含量精确操控的要害技术瓶颈&#x…

与中通支付对接

最近项目接入商户,商户需要同步给中通支付,报错两个异常已解决。 一、json报错 未接入中通SKD之前,不会报错,接入后,json转换异常。 排查后发现,中通的jar包里JSON版本太低,与自身项目的版本冲…

笔记61:注意力提示

本地笔记地址:D:\work_file\(4)DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章:动手学深度学习~注意力机制 a a a a a a a a

敏感词过滤方案

敏感词过滤方案 敏感词过滤用的使用比较多的 Trie 树算法 和 DFA 算法。 Trie 树 Trie 树 也称为字典树、单词查找树,哈系树的一种变种,通常被用于字符串匹配,用来解决在一组字符串集合中快速查找某个字符串的问题。像浏览器搜索的关键词提…

【从零开始学习Linux】一文带你了解yum周边生态及vim常见模式

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:Linux入门 🔭【从零开始学习Linux】系列均属于Linux入门,主要包含Linux操作系统下的指令、操作、权限以及开发工具&a…

鸿运主动安全监控云平台存在任意文件读取漏洞 附POC

@[toc] 鸿运主动安全监控云平台存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途…

【Rust】快速教程——自定义类型、数字转枚举、Cargo运行

前言 超过一定的年龄之后,所谓人生,无非是一个不断丧失的过程而已。宝贵的东西,会像梳子豁了齿一样从手中滑落下去。你所爱的人会一个接着一个,从身旁悄然消逝。——《1Q84》 \;\\\;\\\; 目录 前言自定义类型数字转枚举Cargo.tom…

肖sir__mysql之单表练习题2__(2)

mysql之单表练习题 一.建表语句 create table grade(class int(4),chinese int(8),english int(4),math int(8),name varchar(20),age int(8),sid int(4)primary key auto_increment) DEFAULT charsetutf8; insert into grade(class,chinese,english,math,name,age)values(1833…

Maven 介绍

文章目录 什么是 maven为什么要选择mavenmaven 仓库什么是maven中央仓库什么是maven本地仓库 idea如何创建出maven项目如何引入第三方库依赖配置国内源 下载 Maven Helper 插件查看各个项目之间的依赖关系 什么是 maven Maven是 Apache 下的一个纯 Java 开发的开源项目&#x…

idea下载与安装,以及创建一个项目写HelloWorld

1.idea下载 Download IntelliJ IDEA – The Leading Java and Kotlin IDE (jetbrains.com) Ultimate为旗舰版,功能全面,插件丰富,按年收费。 Community为社区版,免费试用,功能相对而言不是很丰富,但是不影…

C语言——数字金字塔

实现函数输出n行数字金字塔 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void pyramid(int n) {int i,j,k;for (i1; i<n; i){//输出左边空格&#xff0c;空格数为n-i for (j1; j<n-i; j){printf(" "); } //每一行左边空格输完后输出数字&#…

Moonbeam生态项目分析 — — 去中心化交易所Beamswap

流动性激励计划Moonbeam Ignite是帮助用户轻松愉快体验Moonbeam生态的趣味活动。在Moonbeam跨链连接的推动下&#xff0c;DeFi的各种可能性在这里爆发。DeFi或许不热门&#xff0c;但总有机会捡漏&#xff0c;了解Monbeam生态项目&#xff0c;我们邀请Moonbeam大使分享他们的研…

10k热敏电阻温度对照表

10k热敏电阻阻值温度对数图 10k热敏电阻温度对照表 温度&#xff08;℃&#xff09;欧姆 -4033660033660-3931500031500-3829500029500-3727640027640-3625900025900-3524280024280-3422780022780-3321380021380-3220060020060-3118840018840-3017700017700-2916640016640-28…

PWM 正玄波形 通过C语言生成

#include <stdio.h> #include <math.h> #include <stdint.h>#define SAMPLE_POINT_NUM (200) /* 需要生成的点的个数 */ #define SINE_MAX (255) /* sin 函数幅值 */ #define PI (3.14…

dcat admin日志扩展 dcat-log-viewer 遇到的问题记录

扩展地址&#xff1a; https://github.com/duolabmeng6/dcat-log-viewer 问题描述&#xff1a; 使用很简单&#xff0c;直接安装扩展包&#xff0c;开启扩展就可以了&#xff0c;会自动生成菜单。 之前在别的系统用过&#xff0c;没问题&#xff0c;今天在一个新的系统用的时…

STM32F103C8T6第7天:智能小车项目

1. 智能小车&#xff1a;让小车动起来&#xff08;360.64&#xff09; 硬件接线 B-2A – PB0B-1A – PB1A-1B – PB2A-1A – PB10其余接线参考上官一号小车项目。 cubemx配置 代码&#xff08;28.smartCar_project1/MDK-ARM&#xff09; 2. 智能小车&#xff1a;串口控制小…

鸿蒙4.0开发笔记之ArkTS语法的基础数据类型[DevEco Studio开发](七)

文章目录 一、基本数据类型的定义1、变量声明2、数字类型3、字符串类型4、布尔类型5、数组类型6、元组类型7、枚举类型8、联合类型&#xff08;少用&#xff09;9、未知Unkown类型10、未定义和空值类型 二、数据类型的使用1、组件内部声明变量不需要使用let关键字2、使用Divide…

docker镜像分层、仓库、容器数据卷与常用软件安装

一、镜像分层 1、镜像概念&#xff1a; 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;将应用程序和配置依赖打包好行成一个可交付的运行环境&#xff0c;这个打包好的运行环境就是image镜像文件。 2、镜像分层&#xff1a…