基于 ChatGLM-6B 搭建个人专属知识库

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 之前树先生教过大家如何利用微调打造一个垂直领域的 LLM 专属模型。但是微调一方面需要专业知识,通常需要很多计算资源和时间,以便在不同的超参数设置上训练多个模型并选择最佳的一个,另一方面动态扩展比较差,新增和修改原有的数据都要重新微调一次。总得来说对非专业人员不友好。今天树先生教大家无需微调就能实现垂直领域的专业问答,利用 ChatGLM-6B + langchain 实现个人专属知识库,非常简单易上手。

之前树先生教过大家如何利用微调打造一个垂直领域的 LLM 专属模型。但是微调一方面需要专业知识,通常需要很多计算资源和时间,以便在不同的超参数设置上训练多个模型并选择最佳的一个,另一方面动态扩展比较差,新增和修改原有的数据都要重新微调一次。总得来说对非专业人员不友好。

ChatGLM-6B 部署与 P-Tuning 微调实战

今天树先生教大家无需微调就能实现垂直领域的专业问答,利用 ChatGLM-6B + langchain 实现个人专属知识库,非常简单易上手。


技术原理

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

从上面就能看出,其核心技术就是向量 embedding,将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 promt 提交给 LLM 回答,很好理解吧。一个典型的 prompt 模板如下:

"""
已知信息:
{context} 
根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 
问题是:{question}
"""

更多关于向量 embedding 的内容可以参考我之前写的一篇文章。

ChatGPT 引爆向量数据库赛道


使用场景

可以调整 prompt,匹配不同的知识库,让 LLM 扮演不同的角色

  • 上传公司财报,充当财务分析师
  • 上传客服聊天记录,充当智能客服
  • 上传经典Case,充当律师助手
  • 上传医院百科全书,充当在线问诊医生

等等等等。。。。


实战

这里我们选用 langchain-ChatGLM 项目示例,其他的 LLM 模型对接知识库也是一个道理。

准备工作

我们还是白嫖阿里云的机器学习 PAI 平台,使用 A10 显卡,这部分内容之前文章中有介绍。

免费部署一个开源大模型 MOSS

项目部署

环境准备好了以后,就可以开始准备部署工作了。

下载源码

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

安装依赖

cd langchain-ChatGLM
pip install -r requirements.txt

下载模型

# 安装 git lfs
git lfs install
# 下载 LLM 模型
git clone https://huggingface.co/THUDM/chatglm-6b /your_path/chatglm-6b
# 下载 Embedding 模型
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese /your_path/text2vec
# 模型需要更新时,可打开模型所在文件夹后拉取最新模型文件/代码
git pull

参数调整

模型下载完成后,请在 configs/model_config.py 文件中,对embedding_model_dictllm_model_dict参数进行修改。

embedding_model_dict = {
    "ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
    "ernie-base": "nghuyong/ernie-3.0-base-zh",
    "text2vec": "/your_path/text2vec"
}
llm_model_dict = {
    "chatyuan": "ClueAI/ChatYuan-large-v2",
    "chatglm-6b-int4-qe": "THUDM/chatglm-6b-int4-qe",
    "chatglm-6b-int4": "THUDM/chatglm-6b-int4",
    "chatglm-6b-int8": "THUDM/chatglm-6b-int8",
    "chatglm-6b": "/your_path/chatglm-6b",
}

项目启动

Web 模式启动

pip install gradio
python webui.py

模型配置

上传知识库

知识库问答

API 模式启动

python api.py

命令行模式启动

python cli_demo.py


改进

Gradio 页面太过于简陋,可作为后台管理员操作页面,如果要开放给用户使用就不合适了,树先生在 Chatgpt-Next-Web 项目基础上进行了适配修改,打造了一款面向用户使用的本地知识库前端。

授权码控制

选择知识库

基于知识库问答

显示答案来源

PS:这个知识库是我上传的原始知识库,所以来源这块数据展示效果不好,更好的做法是经过一遍数据治理再上传。


感兴趣的朋友可以私信我,我会免费给大家提供知识库体验地址。


相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
Web App开发 网络协议 关系型数据库
深度解析TCP协议:特点、应用场景及市面上常见软件案例
深度解析TCP协议:特点、应用场景及市面上常见软件案例
1303 1
深度解析TCP协议:特点、应用场景及市面上常见软件案例
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
161305 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
机器学习/深度学习 JSON 物联网
ChatGLM-6B 部署与 P-Tuning 微调实战
自从 ChatGPT 爆火以来,树先生一直琢磨想打造一个垂直领域的 LLM 专属模型,但学习文本大模型的技术原理,从头打造一个 LLM 模型难度极大。。。
3117 1
|
5月前
|
人工智能 自然语言处理 API
AutoAgent:无需编程!接入DeepSeek用自然语言创建和部署AI智能体!港大开源框架让AI智能体开发变成填空题
香港大学推出的AutoAgent框架通过自然语言交互实现零代码创建AI智能体,支持多模型接入与自动化工作流编排,在GAIA基准测试中表现优异。
597 16
AutoAgent:无需编程!接入DeepSeek用自然语言创建和部署AI智能体!港大开源框架让AI智能体开发变成填空题
|
人工智能 测试技术 API
ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
1214 0
|
11月前
|
人工智能 自然语言处理 数据可视化
阿里云AI大模型助力客户对话分析——全方位提升服务与体验
随着数字化转型的推进,企业愈发重视客户互动数据的价值。阿里云推出了一套基于AI大模型的客户对话分析解决方案,通过自动化手段分析大量客户对话数据,提取有价值信息,优化服务流程,提升客户体验。本文将结合技术文档和实际体验,全面评测这一解决方案。
579 2
|
机器学习/深度学习 人工智能 JSON
LangChain + ChatGLM2-6B 搭建个人专属知识库
之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。 树先生之所以现在才更新 ChatGLM2-6B 知识库教程,是想等模型本身再多迭代几个版本,不至于刚出的教程很快不适配,或者项目本身一堆 bug,那样大家使用体验也不好。
2922 3
|
人工智能
本地离线部署大模型知识库OLLAMA+Anything(保姆级)
本地离线部署大模型知识库OLLAMA+Anything(保姆级)
4629 3
|
人工智能 自然语言处理 开发工具
免费部署一个开源大模型 MOSS
近日复旦大学自然语言处理实验室邱锡鹏教授团队研发的大语言模型 MOSS 也已公开发布并开源。MOSS 的公开发布无疑加剧了国内 ChatGPT 式产品的竞争。
1877 1