文章主题:微调, 专业知识, 计算资源

666AI工具大全,助力做AI时代先行者!

在之前的教程中,树先生向我们展示了如何通过微调来构建一个专为垂直领域LLM设计的模型。然而,微调过程既要求专业知识,又涉及到大量的计算资源和时间。为了在各种超参数设置上训练多个模型并挑选出最优的一个,我们需要投入相当多的精力。此外,微调过程的动态扩展性较差,这意味着当我们添加或修改原有数据时,必须重新进行微调。总的来说,这样的过程对于非专业人士并不友好。

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

技术原理

图示展示了项目的实现流程,该流程主要包括以下步骤:首先,加载相关文件;接着,读取并处理文本数据,进行文本分割和向量化处理;然后,将问句向量也进行向量化处理;之后,在向量空间中寻找与问句向量最为接近的top k个元素;接下来,将这些匹配到的文本(包括上下文和问题)整合到prompt中;最后,将生成的prompt提交给LLM模型以获取相应的回答。

1697459951683.jpg
1697459951889.jpg

显然,该技术的核心是向量嵌入。它将用户的知识库内容通过嵌入存储在向量知识库中,并在用户提问时,通过向量相关性算法(如余弦算法)找到最适合的几个知识库片段。这些知识库片段与用户的问题一起构成了prompt,并提交给LLM进行回答。这种方法的优点在于它的简洁性和高效性,能够快速地找到与用户问题相关的信息,并为用户提供准确的答案。

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

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

使用场景

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

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

等等等等。。。。

实战

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

准备工作

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

项目部署

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

下载源码

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_dict 和 llm_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
1697459952450.jpg

模型配置

1697459952624.jpg

上传知识库

1697459952835.jpg

知识库问答

1697459953082.jpg

API 模式启动

python api.py

命令行模式启动

python cli_demo.py

改进

Gradoi页面的简洁性使其更适合作为后台管理员的操作界面,然而若将其开放给用户使用则显得并不适宜。为此,我国知名技术专家树人在Chatgpt-Next-Web项目的的基础上,进行了一系列适应性调整,成功研发出一款专为用户打造的本地知识库前端。

授权码控制

1697459953287.jpg

选择知识库

1697459953564.jpg

基于知识库问答

1697459953818.jpg

显示答案来源

1697459954047.jpg
1697459954521.jpg

请注意,此篇文章中所引用的知识库系我本人所创建的原版知识库,因此在展示数据来源方面可能存在一定的不足。为了确保文章质量,建议在发布之前对其进行一定程度的数据治理和优化。

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

微调, 专业知识, 计算资源

aigc666aigc999_0.jpg

AI时代,拥有个人微信机器人AI助手!AI时代不落人后!

免费ChatGPT问答,办公、写作、生活好得力助手!

搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!

Leave a Reply

Your email address will not be published. Required fields are marked *