Langchain-Chatchat项目:1-整体介绍

news2024/11/18 17:48:07

  基于Langchain与ChatGLM等语言模型的本地知识库问答应用实现。项目中默认LLM模型改为THUDM/chatglm2-6b[2],默认Embedding模型改为moka-ai/m3e-base[3]。

一.项目介绍
1.实现原理
  本项目实现原理如下图所示,过程包括加载文件->读取文本->文本分割->文本向量化->问句向量化->在文本向量中匹配出与问句向量最相似的topk个->匹配出的文本作为上下文和问题一起添加到prompt中->提交给LLM生成回答。

2.支持LLM模型
  本地LLM模型接入基于FastChat实现,支持模型如下:

meta-llama/Llama-2-7b-chat-hf
Vicuna, Alpaca, LLaMA, Koala
BlinkDL/RWKV-4-Raven
camel-ai/CAMEL-13B-Combined-Data
databricks/dolly-v2-12b
FreedomIntelligence/phoenix-inst-chat-7b
h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-7b
lcw99/polyglot-ko-12.8b-chang-instruct-chat
lmsys/fastchat-t5-3b-v1.0
mosaicml/mpt-7b-chat
Neutralzz/BiLLa-7B-SFT
nomic-ai/gpt4all-13b-snoozy
NousResearch/Nous-Hermes-13b
openaccess-ai-collective/manticore-13b-chat-pyg
OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5
project-baize/baize-v2-7b
Salesforce/codet5p-6b
StabilityAI/stablelm-tuned-alpha-7b
THUDM/chatglm-6b
THUDM/chatglm2-6b
tiiuae/falcon-40b
timdettmers/guanaco-33b-merged
togethercomputer/RedPajama-INCITE-7B-Chat
WizardLM/WizardLM-13B-V1.0
WizardLM/WizardCoder-15B-V1.0
baichuan-inc/baichuan-7B
internlm/internlm-chat-7b
Qwen/Qwen-7B-Chat
HuggingFaceH4/starchat-beta
FlagAlpha/Llama2-Chinese-13b-Chat and others
BAAI/AquilaChat-7B
all models of OpenOrca
Spicyboros + airoboros 2.2
VMware's OpenLLaMa OpenInstruct
任何EleutherAI的pythia模型,比如pythia-6.9b
在以上模型基础上训练的任何Peft适配器

说明:在线LLM模型目前已支持:ChatGPT、智谱AI、MiniMax、讯飞星火和百度千帆。

3.支持Embedding模型
  本项目支持调用HuggingFace中的Embedding模型:

moka-ai/m3e-small
moka-ai/m3e-base
moka-ai/m3e-large
BAAI/bge-small-zh
BAAI/bge-base-zh
BAAI/bge-large-zh
BAAI/bge-large-zh-noinstruct
sensenova/piccolo-base-zh
sensenova/piccolo-large-zh
shibing624/text2vec-base-chinese-sentence
shibing624/text2vec-base-chinese-paraphrase
shibing624/text2vec-base-multilingual
shibing624/text2vec-base-chinese
shibing624/text2vec-bge-large-chinese
GanymedeNil/text2vec-large-chinese
nghuyong/ernie-3.0-nano-zh
nghuyong/ernie-3.0-base-zh
OpenAI/text-embedding-ada-002

4.安装FastChat

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip3 install -e ".[model_worker,webui]"

二.设置配置项
1.LLM模型配置
  配置Langchain-Chatchat/configs/model_config.py文件中的llm_model_dict参数:

llm_model_dict = {
    "chatglm2-6b": {
        "local_model_path": "L:/20230713_HuggingFaceModel/chatglm2-6b",
        "api_base_url": "http://localhost:8888/v1",  # URL需要与运行fastchat服务端的server_config.FSCHAT_OPENAI_API一致
        "api_key": "EMPTY"
    },
......
}

2.Embedding模型配置
  配置Langchain-Chatchat/configs/model_config.py文件中的embedding_model_dict参数:

embedding_model_dict = {
    ......
    "text2vec": "L:/20230713_HuggingFaceModel/text2vec-large-chinese",
    "m3e-base": "L:/20230620_LLM模型/20230918_通用/20230918_ChatGLM/m3e-base",
    ......
}

3.知识库初始化与迁移
  首次运行项目,需要初始化或重建知识库,如下所示:

python3 init_database.py --recreate-vs

三.启动API服务和Web UI
  一键启动所有Fastchat服务、API服务、WebUI服务:
1.启动命令

python3 startup.py -a

2.FastAPI docs界面

3.Web UI对话界面

4.Web UI知识库管理页面


参考文献:
[1]Langchain-Chatchat:https://github.com/chatchat-space/Langchain-Chatchat
[2]https://huggingface.co/THUDM/chatglm2-6b
[3]https://huggingface.co/moka-ai/m3e-base
[4]https://github.com/lm-sys/FastChat
[5]https://github.com/chatchat-space/Langchain-Chatchat/issues

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

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

相关文章

记一个src中危-图像大小与请求参数可修改

公众号:掌控安全EDU 分享更多技术文章,欢迎关注一起探讨学习 漏洞描述 服务器生成了一个具有客户端指定尺寸的图像,如果未实施任何限制,则可能导致拒绝服务攻击。 漏洞危害 攻击者不需要在此类攻击中投入资源,但服务器…

迅为RK3588开发板添加 RIL 驱动程序库

将 Quectel 提供的相应 RIL 库文件放入 Android 系统的以下路径。作者拷贝到了源码的android_build/device/fsl/imx8m/evk_8mm/lib 目录下,如下图所示: 然后将 apns-conf.xml 拷贝到 android_build/device/fsl/imx8m/evk_8mm/下,如下图所示&a…

设计模式 - 七大软件设计原则

目录 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 1.2.2、单一职责原则 1.2.3、里氏替换原则 1.2.4、迪米特原则 1.2.5、接口隔离原则 1.2.6、依赖倒转原则 1.2.7、合成/聚合复用原则 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 开闭原则:对扩…

chromedriver下载与安装方法

下载与安装: 1.查看Chrome浏览器版本 首先,需要检查Chrome浏览器的版本。请按照以下步骤进行: 打开Chrome浏览器。 点击浏览器右上角的菜单图标(三个垂直点)。 选择“帮助”(Help)。 在下拉菜单中选择“…

Swagger2的配置

Swagger2的配置&#xff1a; 1.要用到的依赖包&#xff1a; <!-- swagger2 依赖 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency>…

网络是什么?(网络零基础入门篇)

1.如何理解局域网和广域网&#xff1f; 2.路由器和交换机是怎么样工作的&#xff1f; 3.三层交换机能不能代替路由器&#xff1f; -- 局域网 广域网 -- 企业网架构&#xff0c;运营商架构&#xff0c;数据中心架构 -- 局域网 通过 交换机连接的 转发 相同的ip地址…

TSINGSEE青犀基于AI视频智能分析的客流统计分析场景方案

随着AI技术的不断发展与人类需求的不断提升&#xff0c;视觉目标的检测识别、智能监控在人们的生活中均有着广泛的应用。其中&#xff0c;智能安防视频监控是计算机视觉的重要应用领域&#xff0c;而AI客流统计则是近年来此领域大家关注热度较高的技术之一。 行业痛点 传统的客…

javaee SpringMVC文件上传 项目结构

引入依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

c++模板库容器list vector map set操作和性能对比

文章目录 listvectormapset性能比较总结 list 列表&#xff08;list&#xff09;是C STL中的一种容器类型&#xff0c;它是一个双向链表&#xff0c;可以在任意位置高效地添加、删除、移动元素。 以下是一些常用的列表操作&#xff1a; 创建列表 #include <list> std…

21.6 CSS 弹性布局

1. 弹性盒子 CSS弹性盒子(Flexbox)是一种布局模型, 用于创建灵活的, 自适应的网页布局. 它的目的是在不同屏幕尺寸和设备上实现一致的布局效果.引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列, 对齐和分配空白空间.弹性容器通过设置display…

c++视觉图像线性混合

图像线性混合 使用 cv::addWeighted() 函数对两幅图像进行线性混合。alpha 和 beta 是两幅图像的权重&#xff0c;它们之和应该等于1。gamma 是一个可选的增益&#xff0c;这里设置为0。 你可以通过调整 alpha 的值来改变混合比例。如果 alpha0.5&#xff0c;则两幅图像等权重…

扬尘在线监测是什么?如何实现?

扬尘在线监测技术是一种针对扬尘污染问题的环境监测技术&#xff0c;它通过实时监测和数据分析&#xff0c;为管理者提供准确及时的信息&#xff0c;以便他们可以采取有效的控制措施来减少扬尘污染对空气质量和人们健康的影响。 扬尘在线监测系统通常由传感器、数据采集仪器、…

SpringBoot项目:Cannot find declaration to go to

SpringBoot项目get,set方法总报Cannot find declaration to go to 搜了很多答案&#xff0c;没解决 后来仔细一想&#xff0c;原来是我的idea软件重装了&#xff0c;lombok插件没重新安装导致。 安装步骤&#xff1a; 1、下载地址&#xff1a;https://plugins.jetbrains.com…

12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV

12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV 除了标准的实时计算、通信和控制&#xff0c;边缘设备和关键网络应用的fog通常执行人工智能(AI)、虚拟现实(VR)和增强现实(AR)解决方案。 目前&#xff0c;制药商和医疗保健机构对它们的需求快速增长&#xff0c;因为它们…

el-table进阶(每条数据分行或合并)

最麻烦的还是css样式&#xff0c;表格样式自己调吧 <!-- ——————————————————————————————————根据数据拓展表格—————————————————————————————————— --> <div style"display: flex"&…

SAP从入门到放弃系列之QM检验方法(Inspection Method)

概述 检验方法描述了如何对检验特征执行检验。 QS21-创建主检验特征时&#xff0c;可以对主检验特征可以分配多种检验方法。关于创建主检验特征详见&#xff1a;SAP从入门到放弃系列之QM主检验特征 当任务清单中包含主检验特征时&#xff0c;将为任务清单中的特征选择特定的…

vue3 -- 封装 Turf.js地图常用方法

Turf.js中文网 地理空间分析库,处理各种地图算法 文档地址 安装 Turf 库 npm install @turf/turf创建src/hooks/useTurf.ts 文件1:获取线中心点 效果: 代码: useTurf.ts import * as turf from @turf/turf// 获取线中心点 export class CenterPointOfLine {

Linux系列讲解 —— 【fsck】检查并修复Linux文件系统

当文件系统出现损坏时&#xff0c;例如文件无法查看&#xff0c;删除等&#xff0c;可以使用 fsck&#xff08;File System Consistency Check&#xff09;进行修复。但是需要注意fsck在修复时&#xff0c;如果检查出某个文件有问题&#xff0c;可能会向用户请求删除。所以&…

分层强化学习 综述论文阅读 Hierarchical Reinforcement Learning: A Comprehensive Survey

分层强化学习 综述论文阅读 Hierarchical Reinforcement Learning: A Comprehensive Survey 摘要一、介绍二、基础知识回顾2.1 强化学习2.2 分层强化学习2.2.1 子任务符号2.2.2 基于半马尔可夫决策过程的HRL符号 2.3 通用项定义 三、分层强化学习方法3.1 学习分层策略 (LHP)3.1…

赴日IT 35岁以上程序员能申请日本技术人文签证吗?

我们都知道&#xff0c;要想去日本工作&#xff0c;必须要办理签证&#xff0c;日本人文技术国际业务签证就是一个非常好的签证种类。那么办理此类签证需要满足哪些要求呢&#xff1f; 年龄上其实比较推荐的是25-35岁这个年龄阶段&#xff0c;因为这个年龄段通常在日语能力和工…