LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe

这篇具有很好参考价值的文章主要介绍了LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embedding模型m3e等+多种TextSplitter分词器)、安装(镜像部署【AutoDL云平台/Docker镜像】,离线私有部署+支持RTX3090 ,支持FAISS/Milvus/PGVector向量库, 基于LangChain 框架+FastAPI的API调用服务+Streamlit 的WebUI操作)、使用方法(不包括微调/训练,支持LLM对话/知识库问答/搜索引擎问答)之详细攻略

导读:项目是一个可以实现 、完全本地化、推理的知识库增强方案, 重点解决数数据安全保护,私域化部署的企业痛点。 本开源方案采用```Apache License``,可以免费商用,无需付费。支持市面上主流的本地大预言模型和Embedding模型,支持开源的本地向量数据库。

目录

相关文章

Py之Langchain:Langchain(LLM大型语言模型应用程序框架/将LLMs个体进行flow的能力)的简介、安装、使用方法之详细攻略

LLMs之RAG之LangChain-ChatGLM:基于Langchain框架利用Embedding模型(text2vec-large-chinese)+ChatGLM-6B模型(Docker 部署)接入本地知识库—生成本地知识库/分割成块/向量化)→基于问题【Embdding+向量化+相似度计算+匹配TopK作为上下文】=生成Prompt喂给大模型→LLMs响应—实现问答响应项目(CLI/WebUI/VUE,对话任务/知识库问答/Bing搜索)图文教程之详细攻略

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embedding模型m3e等+多种TextSplitter分词器)、安装(镜像部署【AutoDL云平台/Docker镜像】,离线私有部署+支持RTX3090 ,支持FAISS/Milvus/PGVector向量库, 基于LangChain 框架+FastAPI的API调用服务+Streamlit 的WebUI操作)、使用方法(不包括微调/训练,支持LLM对话/知识库问答/搜索引擎问答)之详细攻略

LangChain-Chatchat的简介

1、原理图解

2、文档处理实现流程

3、支持的LLMs模型、Embedding 模型、分词器、向量数据库、工具

(1)、支持的LLMs模型

(2)、支持的Embedding 模型

(3)、支持的分词器

(4)、支持的向量数据库

(5)、支持的工具

4、推荐的模型组合

LangChain-Chatchat的安装

0、软件要求和硬件要求

(1)、软件要求

(2)、硬件要求

1、镜像部署

T1、基于AutoDL平台云端部署镜像

第一步,注册AutoDL,并选择租赁合适的服务器套餐(按时计费)

第二步,创建镜像

第1个终端,启动LLM服务

第2个终端,启动API服务

第3个终端,启动Web UI服务

T2、Docker 镜像本地部署

2、开发部署

第一步,配置开发环境

第二步,下载模型至本地:LLM模型、Embedding 模型

第三步,设置配置项,指定本地模型路径

第四步,知识库初始化与迁移

第五步,启动 API 服务或 Web UI

T1、逐步启动

(1)、启动 LLM 服务

T1、基于多进程脚本 llm_api.py 启动 LLM 服务

T2、基于命令行脚本 llm_api_stale.py 启动 LLM 服务

T3、PEFT 加载(包括lora,p-tuning,prefix tuning, prompt tuning,ia等)

(2)、启动 API 服务

(3)、启动 Web UI 服务:对话功能+知识库管理功能

(3.1)、Web UI 对话界面:LLM对话功能+知识库问答功能+搜索引擎问答功能

(3.2)、Web UI 知识库管理页面:添加至向量库+从向量库删除+从知识库中删除

T2、一键启动:建议

3、安装过程中常见问题集锦

LangChain-Chatchat的使用方法


相关文章

Py之Langchain:Langchain(LLM大型语言模型应用程序框架/将LLMs个体进行flow的能力)的简介、安装、使用方法之详细攻略

https://yunyaniu.blog.csdn.net/article/details/127779588

LLMs之RAG之LangChain-ChatGLM:基于Langchain框架利用Embedding模型(text2vec-large-chinese)+ChatGLM-6B模型(Docker 部署)接入本地知识库—生成本地知识库/分割成块/向量化)→基于问题【Embdding+向量化+相似度计算+匹配TopK作为上下文】=生成Prompt喂给大模型→LLMs响应—实现问答响应项目(CLI/WebUI/VUE,对话任务/知识库问答/Bing搜索)图文教程之详细攻略

https://yunyaniu.blog.csdn.net/article/details/130998758

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embedding模型m3e等+多种TextSplitter分词器)、安装(镜像部署【AutoDL云平台/Docker镜像】,离线私有部署+支持RTX3090 ,支持FAISS/Milvus/PGVector向量库, 基于LangChain 框架+FastAPI的API调用服务+Streamlit 的WebUI操作)、使用方法(不包括微调/训练,支持LLM对话/知识库问答/搜索引擎问答)之详细攻略

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe_一个处女座的程序猿的博客-CSDN博客

LangChain-Chatchat的简介

       2023年8月14日,原Langchain-ChatGLM 项目已正式发布 v0.2.0 版本,并正式更名为 Langchain-Chatchat。是一款基于 LangchainChatGLM 等大语言模型的本地知识库问答应用实现。该项目已重构为使用 FastChat + Langchain + FastAPI + Streamlit 构建的基于 Langchain 与 ChatGLM 等大语言模型的本地知识库问答应用实现。
       这是一种利用 langchain 思想实现的基于本地知识库问答应用,目标期望建立一套对中文场景与开源模型支持友好可离线运行的知识库问答解决方案。但是,本项目未涉及微调、训练过程,但可利用微调或训练对本项目效果进行优化。
>> 受 GanymedeNil 的项目 document.ai 和 AlexZhangji 创建的 ChatGLM-6B Pull Request 启发,建立了全流程可使用开源模型实现的本地知识库问答应用。
>> 本项目的最新版本中通过使用 FastChat 接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 langchain 框架支持通过基于 FastAPI 提供的 API 调用服务,或使用基于 Streamlit 的 WebUI 进行操作。
>> 依托于本项目支持的开源 LLM 与 Embedding 模型,本项目可实现全部使用开源模型离线私有部署。与此同时,本项目也支持 OpenAI GPT API 的调用,并将在后续持续扩充对各类模型及模型 API 的接入。
>> 本项目实现流程:预先将本地文档向量化→存储到向量数据库中作为本地知识库→用户发起提问时→先将提问内容向量化到向量数据库中→并匹配到最接近的top k的内容→再将问题和匹配到的内容一起提交给大语言模型→由模型整合出最终的结果输出给用户。
>> 本项目实现原理如下图所示,过程包括加载文件 → 读取文本 → 文本分割 → 文本向量化 → 问句向量化 → 在文本向量中匹配出与问句向量最相似的 top k个 → 匹配出的文本作为上下文和问题一起添加到 prompt中 → 提交给 LLM生成回答。

GitHub地址
GitHub - chatchat-space/Langchain-Chatchat: Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain | 基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答

1、原理图解

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

2、文档处理实现流程

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

3、支持的LLMs模型、Embedding 模型、分词器、向量数据库、工具

本项目中默认使用的 LLM 模型为 THUDM/chatglm2-6b,默认使用的 Embedding 模型为 moka-ai/m3e-base 为例。

(1)、支持的LLMs模型

本地模型

联网模型

本地 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/Qwen-14B-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
  • baichuan2-7b/baichuan2-13b
  • 任何 EleutherAI 的 pythia 模型,如 pythia-6.9b
  • 在以上模型基础上训练的任何 Peft 适配器。为了激活,模型路径中必须有 peft 。注意:如果加载多个peft模型,你可以通过在任何模型工作器中设置环境变量 PEFT_SHARE_BASE_WEIGHTS=true 来使它们共享基础模型的权重。

以上模型支持列表可能随 FastChat 更新而持续更新,可参考 FastChat 已支持模型列表。

支持的联网模型

  • ChatGPT
  • Azure OpenAI
  • Claude
  • 智谱AI
  • MiniMax
  • 讯飞星火
  • 百度千帆
  • 阿里云通义千问

(2)、支持的Embedding 模型

本地模型

联网模型

本项目支持调用 HuggingFace 中的 Embedding 模型,已支持的 Embedding 模型如下:

MokaAI系列嵌入模型

  • moka-ai/m3e-small
  • moka-ai/m3e-base
  • moka-ai/m3e-large

BAAI系列嵌入模型

  • BAAI/bge-small-zh
  • BAAI/bge-base-zh
  • BAAI/bge-large-zh
  • BAAI/bge-small-zh-v1.5
  • BAAI/bge-base-zh-v1.5
  • BAAI/bge-large-zh-v1.5
  • BAAI/bge-large-zh-noinstruct
  • BAAI/bge-reranker-large
  • BAAI/bge-reranker-base

text2vec系列嵌入模型

  • 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

其他模型

  • sensenova/piccolo-base-zh
  • sensenova/piccolo-large-zh
  • nghuyong/ernie-3.0-nano-zh
  • nghuyong/ernie-3.0-base-zh

除本地模型外,本项目也支持直接接入 OpenAI的在线嵌入模型。 支持的联网模型

  • OpenAI/text-embedding-ada-002

(3)、支持的分词器

Langchain 中的分词器

自定义分词器

本项目支持调用 Langchain 的 Text Splitter 分词器以及基于此改进的自定义分词器,已支持的 Text Splitter 类型如下:

  • CharacterTextSplitter
  • LatexTextSplitter
  • MarkdownHeaderTextSplitter
  • MarkdownTextSplitter
  • NLTKTextSplitter
  • PythonCodeTextSplitter
  • RecursiveCharacterTextSplitter
  • SentenceTransformersTokenTextSplitter
  • SpacyTextSplitter

已经支持的定制分词器如下:

  • AliTextSplitter
  • ChineseRecursiveTextSplitter
  • ChineseTextSplitter

(4)、支持的向量数据库

本地向量数据库

联网向量数据库

目前支持的本地向量数据库列表如下:

  • FAISS
  • Milvus
  • PGVector

联网向量数据库

  • Zilliz

(5)、支持的工具

本地工具

联网工具

本地工具

  • 翻译工具,实现对输入的任意语言翻译。
  • 数学工具,使用LLMMathChain 实现数学计算。
  • 高级知识库工具,智能选择调用多个或者单个知识库并查询内容。
  • 进阶知识库工具,智能选择调用一个最相近的知识库并查询内容。
  • 基础知识库工具,选择指定的一个知识库并回答。

联网工具

  • 天气工具,使用自定义的LLMWetherChain实现天气查询,调用和风天气API。

  • 搜索工具,使用我们的搜索API来实现搜索并概括内容。

  • 我们支持Langchain支持的Agent工具,在代码中,我们已经提供了Shell和Google Search两个工具的实现。

  • 我们期待开发者共享更多的工具,帮助项目生态完善

4、推荐的模型组合

默认配置

在默认的配置文件中,我们提供了以下模型组合
LLM: Chatglm2-6b

Embedding Models: m3e-base

TextSplitter: ChineseRecursiveTextSplitter

Kb_dataset: faiss

模型微调

我们推荐开发者根据自己的业务需求进行模型微调,如果不需要微调且配置充足,可选择以下性能较好的配置

model_config.py

LLM: Qwen-14B-Chat 或 Baichuan2-13B-Chat

Embedding Models: piccolo-large-zh 或 bge-large-zh-v1.5

HISTORY_LEN = 20

TEMPERATURE = 0.1

模型使用

使用该模型将需要更高的硬件要求

1张 RTX A6000 或者 A40 等 48GB 显存以上的显卡。推荐 1 x A100 以上。

(使用多张显卡拼接也能运行,但是速度非常慢,2张4090拼接运行大概为一秒一个字的速度)

64GB 内存用于加载模型而不被Kill

服务器级的CPU,推荐 Xeon(R) Platinum 8358P 以

Agent 功能

>>如果开发者想使用更全面的 Agent 功能,我们推荐开发者使用以下配置

LLM: Qwen-14B-Chat 或 GPT-4

Tools 的工具控制在10个之内

注意事项

>>如果开发者知识库较大,有大量文档,大文件,我们推荐开发者使用 pg 向量数据库;

>>如果开发者的知识库具有一定的关键词特征,例如:

问答对文件(以Q + A 为一个组合的json文件)

Markdown文件

并排的pdf文件

具有多个表格的pdf文件

我们推荐开发者自行开发分词器,以达到更好的效果。

LangChain-Chatchat的安装

0、软件要求和硬件要求

(1)、软件要求

简介

要顺利运行本代码,请按照以下系统要求进行配置

已经测试过的系统

已经测试过的系统

Windows 11 Version 22H2

Linux Ubuntu 22.04.5 keenel version 6.5

其他系统可能出现极少数的系统兼容性问题。

最低要求

最低要求

Python 版本: >= 3.8.5, < 3.11

CUDA 版本: >= 12.0 (低于这个版本可能出现xformers无法安装)

推荐要求

推荐要求

开发者在以下环境下进行代码调试,在该环境下能够避免最多环境问题。

Python 版本 == 3.10.12

CUDA 版本: == 12.2

(2)、硬件要求

简介

如果想要顺利在GPU运行本地模型的 int4 量化版本,你至少需要以下的硬件配置:

ChatGLM2-6B & LLaMA-7B

最低显存要求: 7GB

推荐显卡: RTX 3060, RTX 2060

LLaMA-13B

最低显存要求: 11GB

推荐显卡: RTX 2060 12GB, RTX 3060 12GB, RTX 3080, RTX A2000

Qwen-14B-Chat

最低显存要求: 13GB

推荐显卡: RTX 3090

LLaMA-30B

最低显存要求: 22GB

推荐显卡: RTX A5000, RTX 3090, RTX 4090, RTX 6000, Tesla V100, RTX Tesla P40

LLaMA-65B

最低显存要求: 40GB

推荐显卡: A100, A40, A6000

注意事项

>>若使用 int8 推理,则显存大致为 int4 推理要求的 1.5 倍;

>>若使用 fp16 推理,则显存大致为 int4 推理要求的 2.5 倍。

��� 例如:使用 fp16 推理 Qwen-7B-Chat 模型,则需要使用 16GB 显存。

以上数据仅为估算,实际情况以 nvidia-smi 占用为准。 请注意,如果使用最低配置,仅能保证代码能够运行,但运行速度较慢,体验不佳。

同时,Embedding 模型将会占用 1-2G 的显存,历史记录最多会占用数 G 显存,因此,需要多冗余一些显存。

内存最低要求: 内存要求至少应该比模型运行的显存大。 例如,运行Chatglm2-6b FP16模型,显存占用10G,推荐使用16G以上内存。

1、镜像部署

T1、基于AutoDL平台云端部署镜像

AutoDL镜像云端部署

AutoDL 镜像中 v5 版本所使用代码已更新至本项目 0.2.0 版本。

注意事项:当不在使用云端服务器的时候,及时释放实例,否则会一直计费。

第一步,注册AutoDL并选择租赁合适的服务器套餐(按时计费)

官方地址:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL

参考教程

CodeWithGPU | 能复现才是好算法

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第二步,创建镜像

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第1个终端,启动LLM服务
cd / root/langchain-ChatGLM/
conda activate /root/pyenv
python server/llm_api.py

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第2个终端,启动API服务
cd / root/langchain-ChatGLM/
conda activate / root/pyenv
python server/api.py

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第3个终端,启动Web UI服务
cd /root/langchain-ChatGLM/
conda activate /root/pyenv
streamlit run webui.py --theme.base "light" --theme.primaryColor "#165dff" --theme.secondaryBackgroundColor "#f5f5f5" --theme.textColor "#000000"
注意:此处可自定义配置背景颜色等。

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

T2、Docker 镜像本地部署

Docker 镜像本地部署

Docker 镜像

首先,定位到下载的项目文件夹下

其次,一行命令运行 Docker:

docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0

Docker 镜像地址: registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0)

docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0

>> 该版本镜像大小 33.9GB,使用 v0.2.0,以 nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 为基础镜像;

>> 该版本内置一个 embedding 模型:m3e-large,内置 chatglm2-6b-32k;

>> 该版本目标为方便一键部署使用,请确保您已经在Linux发行版上安装了NVIDIA驱动程序;

>> 请注意,您不需要在主机系统上安装CUDA工具包,但需要安装 NVIDIA Driver 以及 NVIDIA Container Toolkit,请参考安装指南;

>> 首次拉取和启动均需要一定时间,首次启动时请参照下图使用 docker logs -f <container id> 查看日志;

>> 如遇到启动过程卡在 Waiting.. 步骤,建议使用 docker exec -it <container id> bash 进入 /logs/ 目录查看对应阶段日志;

2、开发部署

第一步,配置开发环境

软件需求

本项目已在 Python 3.8.1 - 3.10,CUDA 11.7 环境下完成测试。已在 Windows、ARM 架构的 macOS、Linux 系统中完成测试。

环境检查

# 首先,确信你的机器安装了 Python 3.8 - 3.10 版本

$ python --version

Python 3.8.13

# 如果低于这个版本,可使用conda安装环境

$ conda create -p /your_path/env_name python=3.8

# 激活环境

$ source activate /your_path/env_name

# 或,conda安装,不指定路径, 注意以下,都将/your_path/env_name替换为env_name

$ conda create -n env_name python=3.8

$ conda activate env_name # Activate the environment

# 更新py库

$ pip3 install --upgrade pip

# 关闭环境

$ source deactivate /your_path/env_name

# 删除环境

$ conda env remove -p  /your_path/env_name

项目依赖

# 拉取仓库

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

# 进入目录

$ cd langchain-ChatGLM

# 安装全部依赖

$ pip install -r requirements.txt

# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

此外,为方便用户 API 与 webui 分离运行,可单独根据运行需求安装依赖包。

T1、如果只需运行 API,可执行

$ pip install -r requirements_api.txt

# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

T2、如果只需运行 WebUI,可执行

$ pip install -r requirements_webui.txt

注:使用 langchain.document_loaders.UnstructuredFileLoader 进行 .docx 等格式非结构化文件接入时,可能需要依据文档进行其他依赖包的安装,请参考 langchain 文档。

请注意: 0.2.0 及更新版本的依赖包与 0.1.x 版本依赖包可能发生冲突,强烈建议新建环境后重新安装依赖包。

第二步,下载模型至本地:LLM模型、Embedding 模型

如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。项目文件下述两个git即可下载,但是其中的模型权重文件太大,要单独下载,并指定下载的文件夹。以本项目中默认使用的 LLM 模型 THUDM/chatglm2-6b Embedding 模型 moka-ai/m3e-base 为例:
THUDM/chatglm2-6b:THUDM/chatglm2-6b · Hugging Face
moka-ai/m3e-base:moka-ai/m3e-base · Hugging Face

下载模型需要先安装Git LFS,然后运行

git clone THUDM/chatglm2-6b · Hugging Face
git clone moka-ai/m3e-base · Hugging Face

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第三步,设置配置项,指定本地模型路径

复制模板文件

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

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

检查模型参数

在开始执行 Web UI 或命令行交互前,请先检查 configs/model_config.py 和 configs/server_config.py 中的各项模型参数设计是否符合需求:

>> 请确认已下载至本地的 LLM 模型本地存储路径写在 llm_model_dict 对应模型的 local_model_path 属性中,如:

llm_model_dict={

                "chatglm2-6b": {

                        "local_model_path": "/Users/xxx/Downloads/chatglm2-6b",

                        "api_base_url": "http://localhost:8888/v1",  # "name"修改为 FastChat 服务中的"api_base_url"

                        "api_key": "EMPTY"

                    },

                }

>> 请确认已下载至本地的 Embedding 模型本地存储路径写在 embedding_model_dict 对应模型位置,如:

embedding_model_dict = {

                        "m3e-base": "/Users/xxx/Downloads/m3e-base",

                       }

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

第四步,知识库初始化与迁移

当前项目的知识库信息存储在数据库中,在正式运行项目之前请先初始化数据库(我们强烈建议您在执行操作前备份您的知识文件)。

老用户

如果您是从 0.1.x 版本升级过来的用户,针对已建立的知识库,请确认知识库的向量库类型、Embedding 模型 configs/model_config.py 中默认设置一致,如无变化只需以下命令将现有知识库信息添加到数据库即可:

$ python init_database.py

新用户

如果您是第一次运行本项目,知识库尚未建立,或者配置文件中的知识库类型、嵌入模型发生变化,需要以下命令初始化或重建知识库

$ python init_database.py --recreate-vs

第五步,启动 API 服务或 Web UI

T1、逐步启动
(1)启动 LLM 服务

如需使用开源模型进行本地部署,需首先启动 LLM 服务,启动方式分为三种:
T1、基于多进程脚本 llm_api.py 启动 LLM 服务
T2、基于命令行脚本 llm_api_stale.py 启动 LLM 服务
T3、PEFT 加载
三种方式只需选择一个即可,具体操作方式详见 5.1.1 - 5.1.3。如果启动在线的API服务(如 OPENAI 的 API 接口),则无需启动 LLM 服务,即 5.1 小节的任何命令均无需启动。

T1、基于多进程脚本 llm_api.py 启动 LLM 服务

启动服务

在项目根目录下,执行 server/llm_api.py 脚本启动 LLM 模型服务:

$ python server/llm_api.py

多卡加载

项目支持多卡加载,需在 llm_api.py 中修改 create_model_worker_app 函数中,修改如下三个参数:

gpus=None,

num_gpus=1,

max_gpu_memory="20GiB"

其中,gpus 控制使用的显卡的ID,如果 "0,1";

num_gpus 控制使用的卡数;

max_gpu_memory 控制每个卡使用的显存容量

T2、基于命令行脚本 llm_api_stale.py 启动 LLM 服务

注意事项

注意:

>> llm_api_stale.py脚本原生仅适用于linux,mac设备需要安装对应的linux命令,win平台请使用wls;

>> 加载非默认模型需要用命令行参数--model-path-address指定模型,不会读取model_config.py配置;

启动服务

在项目根目录下,执行 server/llm_api_stale.py 脚本启动 LLM 模型服务:

$ python server/llm_api_stale.py

多worker启动

该方式支持启动多个worker,示例启动方式:

$ python server/llm_api_stale.py --model-path-address model1@host1@port1 model2@host2@port2

解决端口占用

如果出现server端口占用情况,需手动指定server端口,并同步修改model_config.py下对应模型的base_api_url为指定端口:

$ python server/llm_api_stale.py --server-port 8887

多卡加载

如果要启动多卡加载,示例命令如下:

$ python server/llm_api_stale.py --gpus 0,1 --num-gpus 2 --max-gpu-memory 10GiB

停止服务

注:以如上方式启动LLM服务会以nohup命令在后台运行 FastChat 服务,如需停止服务,可以运行如下命令:

$ python server/llm_api_shutdown.py --serve all

亦可单独停止一个 FastChat 服务模块,可选 [all, controller, model_worker, openai_api_server]

T3、PEFT 加载(包括lora,p-tuning,prefix tuning, prompt tuning,ia等)

简介

本项目基于 FastChat 加载 LLM 服务,故需以 FastChat 加载 PEFT 路径,即保证路径名称里必须有 peft 这个词,配置文件的名字为 adapter_config.json,peft 路径下包含 model.bin 格式的 PEFT 权重。

执行代码

示例代码如下:

PEFT_SHARE_BASE_WEIGHTS=true python3 -m fastchat.serve.multi_model_worker \

    --model-path /data/chris/peft-llama-dummy-1 \

    --model-names peft-dummy-1 \

    --model-path /data/chris/peft-llama-dummy-2 \

    --model-names peft-dummy-2 \

    --model-path /data/chris/peft-llama-dummy-3 \

    --model-names peft-dummy-3 \

    --num-gpus 2

详见 FastChat 相关 PR

(2)启动 API 服务

简介

本地部署情况下,按照 5.1 节启动 LLM 服务后,再执行 server/api.py 脚本启动 API 服务;

在线调用API服务的情况下,直接执执行 server/api.py 脚本启动 API 服务;

调用命令

调用命令示例:

$ python server/api.py

启动 API 服务后,可访问 localhost:7861 或 {API 所在服务器 IP}:7861 FastAPI 自动生成的 docs 进行接口查看与测试。

FastAPI docs 界面

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

(3)启动 Web UI 服务:对话功能+知识库管理功能

T1、默认启动

按照 5.2 节启动 API 服务后,执行 webui.py 启动 Web UI 服务(默认使用端口 8501)

$ streamlit run webui.py

T2、主题色启动

使用 Langchain-Chatchat 主题色启动 Web UI 服务(默认使用端口 8501)

$ streamlit run webui.py --theme.base "light" --theme.primaryColor "#165dff" --theme.secondaryBackgroundColor "#f5f5f5" --theme.textColor "#000000"

T3、指定端口号启动

或使用以下命令指定启动 Web UI 服务并指定端口号

$ streamlit run webui.py --server.port 666

(3.1)、Web UI 对话界面:LLM对话功能+知识库问答功能+搜索引擎问答功能

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

(3.2)、Web UI 知识库管理页面:添加至向量库+从向量库删除+从知识库中删除

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe,NLP/LLMs,langchain,基础大模型,自然语言处理

T2一键启动:建议

一键启动脚本

更新一键启动脚本 startup.py,一键启动所有 Fastchat 服务、API 服务、WebUI 服务,示例代码:

$ python startup.py --all-webui

关闭运行服务

并可使用 Ctrl + C 直接关闭所有运行服务。

可选参数包括 --all-webui, --all-api, --llm-api, --controller, --openai-api, --model-worker, --api, --webui,其中:

--all-webui 为一键启动 WebUI 所有依赖服务;

--all-api 为一键启动 API 所有依赖服务;

--llm-api 为一键启动 Fastchat 所有依赖的 LLM 服务;

--openai-api 为仅启动 FastChat 的 controller 和 openai-api-server 服务;

其他为单独服务启动选项。

若想指定非默认模型,需要用 --model-name 选项,示例:

$ python startup.py --all-webui --model-name Qwen-7B-Chat

注意事项

注意:

1. startup 脚本用多进程方式启动各模块的服务,可能会导致打印顺序问题,请等待全部服务发起后再调用,并根据默认或指定端口调用服务(默认 LLM API 服务端口:127.0.0.1:8888,默认 API 服务端口:127.0.0.1:7861,默认 WebUI 服务端口:本机IP:8501)

2.服务启动时间示设备不同而不同,约 3-10 分钟,如长时间没有启动请前往 ./logs目录下监控日志,定位问题。

3、安装过程中常见问题集锦

https://github.com/chatchat-space/Langchain-Chatchat/blob/master/docs/FAQ.md

LangChain-Chatchat的使用方法

更新中……文章来源地址https://www.toymoban.com/news/detail-717379.html

到了这里,关于LLMs之RAG:LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs+多款embe的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AI】使用阿里云免费服务器搭建Langchain-Chatchat本地知识库

    书接上文,由于家境贫寒的原因,导致我本地的GPU资源无法满足搭建Langchain-Chatchat本地知识库的需求,具体可以看一下这篇文章,于是我只能另辟蹊径,考虑一下能不能白嫖一下云服务器资源,于是去找网上找,您还别说,还真有,具体的领取方法可以查看我的这篇文章:【

    2024年02月03日
    浏览(75)
  • AI-基于Langchain-Chatchat和chatglm3-6b部署私有本地知识库

    手把手教你搭建本地知识库问答AI机器人 LangChain-Chatchat:基于LangChain和ChatGLM2-6B构建本地离线私有化知识库 在家庭私有云上部署体验语言模型chatglm3-6b,打造私人助理 手把手教大家在本地运行ChatGLM3-6B大模型(一) 自从去年GPT模型火爆以来,降低了很多个人和企业进入人工智

    2024年02月20日
    浏览(62)
  • LLMs之RAG:LangChain-ChatGLM-Webui(一款基于本地知识库(各种文本文档)的自动问答的GUI界面实现)的简介、安装、使用方法之详细攻略

    LLMs之RAG:LangChain-ChatGLM-Webui(一款基于本地知识库(各种文本文档)的自动问答的GUI界面实现)的简介、安装、使用方法之详细攻略 目录 LangChain-ChatGLM-Webui的简介 1、支持的模型 LangChain-ChatGLM-Webui的安装 1、安装 T1、直接安装​ 环境准备 启动程序 T2、Docker安装 (1)、Docker 基础环境运

    2024年02月04日
    浏览(45)
  • 从零开始部署ubuntu+Anaconda3+langchain-chatchat+chatglm3-6b大模型,本地知识库(二)

    接上文:从零开始部署ubuntu+Anaconda3+langchain-chatchat+chatglm3-6b大模型,本地知识库 Langchain-chatchat 0.2.10 推荐使用python3.11.7,通过下面命令进行python环境创建。 如下图 安装完毕后,通过以下命令激活python虚拟环境 如下图,shell命令行前面会出现(langchain)这个虚拟环境名。 转到

    2024年03月21日
    浏览(56)
  • 从零开始部署ubuntu+Anaconda3+langchain-chatchat+chatglm3-6b大模型,本地知识库(完结篇)

    相关文章: 从零开始部署ubuntu+Anaconda3+langchain-chatchat+chatglm3-6b大模型,本地知识库(一) https://blog.csdn.net/hya168/article/details/131460230 从零开始部署ubuntu+Anaconda3+langchain-chatchat+chatglm3-6b大模型,本地知识库(二) https://blog.csdn.net/hya168/article/details/135870440 生成默认配置文件 此命令

    2024年02月20日
    浏览(64)
  • LLMs之RAG:基于LangChain框架利用ChatGPT的API实现一个与在线网页交互的对话机器人—五大思路步骤—加载文档WebBaseLoader网址文件→文档分割(chunk_size=50

    LLMs之RAG:基于LangChain框架利用ChatGPT的API实现一个与在线网页交互的对话机器人—五大思路步骤—加载文档WebBaseLoader网址文件→文档分割(chunk_size=500)→文本嵌入化(OpenAIEmbeddings)并存储到向量库(Chroma)→构造Prompt(拉取一个对象并将其返回为 LangChain对象)→定义LLMs(ChatOpenAI)→输入

    2024年02月08日
    浏览(48)
  • 梳理Langchain-Chatchat-UI接口文档

      在 Langchain-Chatchat v0.1.17 版本及以前是有前后端分离的 Vue 项目的,但是 v0.2.0 后就没有了。所以本文使用的是 Langchain-Chatchat v0.1.17 版本中的 Vue 项目。经过一番折腾终于将 Langchain-Chatchat v0.1.17 版本前端 Vue 接口和 Langchain-Chatchat v0.2.8 后端 API 接口调通了。   拉取 Langch

    2024年02月03日
    浏览(35)
  • Langchain-Chatchat-Ubuntu服务器本地安装部署笔记

     Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain。         开源网址:https://github.com/chatchat-space/Langchain-Chatchat ​        因为这是自己毕设项目所需

    2024年04月08日
    浏览(55)
  • LangChain:大型语言模型(LLMs)-- ChatGLM

    1. 介绍 LangChain 是一个领先的框架,用于构建由大型语言模型(LLM)驱动的应用程序。在这个框架内,ChatGLM 作为一个重要的组件,为用户提供了强大的双语(中文-英文)对话功能。ChatGLM 基于通用的语言模型(GLM)框架,拥有数十亿级别的参数,确保了其对话的流畅性和准确

    2024年04月09日
    浏览(46)
  • TS版LangChain实战:基于文档的增强检索(RAG)

    LangChain是一个以 LLM (大语言模型)模型为核心的开发框架,LangChain的主要特性: 可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等 允许语言模型与其环境交互 封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包