基于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

Langchain-Chatchat项目:1-整体介绍的更多相关文章

  1. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构

    系列目录 一.  创建项目并集成swagger 1.1 创建 1.2 完善 二. 搭建项目整体架构 三. 集成轻量级ORM框架——SqlSugar 3.1 搭建环境 3.2 实战篇:利用SqlSuga ...

  2. SNF快速开发平台--规则引擎整体介绍及使用说明书

    一.设计目标 a)规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b)能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c)运算速度快 ...

  3. Update(Stage5):DMP项目_业务介绍_框架搭建

    DMP (Data Management Platform) 导读 整个课程的内容大致分为如下两个部分 业务介绍 技术实现 对于业务介绍, 比较困难的是理解广告交易过程中各个参与者是干什么的 对于技术 ...

  4. 系列二VS项目软件配置工具介绍

    原文:系列二VS项目软件配置工具介绍 Svn和VisualSvn介绍 在使用TortoiseSvn(SVN客户端)+ AnkhSvn(VS2008插件) +VisualSvn Server(版本控制服 ...

  5. 项目的整体框架,以及Topology的设计

    一:说明 1.项目的整体框架 2.Topology的设计 3.记录 0. 89.201.10.122 - - [1528033390201] "GET /edit.php HTTP/1.1& ...

  6. Java 并发编程整体介绍 | 内含超多干货

    前段时间一直在学习多线程相关的知识,目前也算有了一个整体的认识,今天呢,主要从整体介绍一下,只谈造火箭,拧螺丝这种细节还需要自己深究. 首先是操作系统级别对于多线程的支持,由 CPU 的多级缓存.缓存 ...

  7. PyQt5整体介绍

    1 PyQt5整体介绍 PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成. PyQt5的官方网站是:www.riverbankcomputing.co.uk. Py ...

  8. iOS 9应用开发教程之创建iOS 9项目与模拟器介绍

    iOS 9应用开发教程之创建iOS 9项目与模拟器介绍 编写第一个iOS 9应用 本节将以一个iOS 9应用程序为例,为开发者讲解如何使用Xcode 7.0去创建项目,以及iOS模拟器的一些功能.编辑 ...

  9. Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍

    本篇介绍项目开发的过程中,对 Setting 文件的配置和使用 Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍 settings.py 文件的使用 想要详细查看 ...

  10. [Xcode 实际操作]一、博主领进门-(1)iOS项目的创建和项目模板的介绍

    目录:[Swift]Xcode实际操作 本文将演示iOS项目的创建和项目模板的介绍. [Create a new Xcode project]创建一个新的项目. 在弹出的模板窗口中,显示了所有的项目模 ...

随机推荐

  1. ChatGPT+Mermaid自然语言流程图形化产出小试

    ChatGPT+Mermaid语言实现技术概念可视化 本文旨在介绍如何使用ChatGPT和Mermaid语言生成流程图的技术.在现代软件开发中,流程图是一种重要的工具,用于可视化和呈现各种流程和结构. ...

  2. JIRA安装

    JIRA安装 操作系统: 阿里云centos6.8 域名: yan.jzhsc.com 1.安装与配置JAVA sudo -u root -H bash # 在oracle官网下载JDK,安装并配置环 ...

  3. #mac安装Homebrew报错问题:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

    我们在打开https://brew.sh/index_zh-cn官网的时候都会给你下面这段代码,粘贴复制就可以安装: /bin/bash -c "$(curl -fsSL https://r ...

  4. 《设计模式的运用》使用策略模式+工厂模式优化代码中的if else

    使用策略模式优化if else 有这样一段逻辑 function{ for{ if() if() if( if( ) ) ... } } 公司有的祖传的代码,是一段规则校验,校验的越多,每一个请求都会 ...

  5. IP 地址斜杠后的数字和子网掩码

    目录 先上结论 IP 地址类型 ABC 类地址的划分 网络地址与广播地址 网络地址 广播地址 0.0.0.0 与 127.0.0.1 子网掩码 ABC 类 IP 地址最大网络范围与最大可用主机数 以 ...

  6. 2022-1-11 控件学习3 文本渲染、TabIndex、Border、Slider、ProgressBar、

    WPF文本渲染  TextOptions.TextFormattingMode:默认值Ideal大部分是好用的,但是非常小的文本使用Display渲染会好一些 TextRenderMode:使用抗锯齿 ...

  7. Node: 将时间戳转换成日期并分组

    // 对时间戳按日期进行分组 let moment = require('moment') let timestamp_array = [ 1645059333000, 1613523333000, ...

  8. CSSRelated

    CSS 几种常用的清除浮动方法 ️️️ 父级 div 定义伪类:after 和 zoom; /* 这个class名指的是需要清除浮动的父级 */ .clearfloat:after { display ...

  9. JVM常用运行时参数说明

    前言 仅列出常用JVM调优参数,更多请转文末的官方文档链接. 堆内存 -Xmx,设置最大堆内存,默认为物理内存的1/4.示例:-Xmx4096m,设置为4G -Xms,设置初始内存,默认为物理内存的1 ...

  10. HTML5CSS3基础

    目录 HTML5CSS3基础 1 2D 转换 1.1 二维坐标系 1.2 2D 转换之移动 translate 1.3 2D 转换之旋转 rotate 1.4 2D 转换中心点 transform-o ...