AIGC:在云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: AIGC短板:知识茧房(缺少行业领域的私域数据,专有问题解答效果差;数据时效性缺陷,对实时要求高的问题效果差)。 解法之一:私域数据Embedding +向量数据库(语义检索---向量相似度匹配)。将问题向量化,结合私域知识库中匹配到的“精确”内容,生成高质量prompt,再结合LLM的既有知识,以及概括、推理、扩展等能力,大大提升回答的准确性。 本文介绍了在阿里云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO。可用于日常学习和研究,减少环境搭建时踩坑。

简介

AIGC短板:知识茧房(缺少行业领域的私域数据,专有问题解答效果差;数据时效性缺陷,对实时要求高的问题效果差)。

解法之一:私域数据Embedding +向量数据库(语义检索---向量相似度匹配)。将问题向量化,结合私域知识库中匹配到的“精确”内容,生成高质量prompt,再结合LLM的既有知识,以及概括、推理、扩展等能力,大大提升回答的准确性。这也是langchain-ChatGLM的基本原理:

image.png


本文介绍了在阿里云上从0开始搭建langchain-ChatGLM,构建私域知识问答机器人DEMO。可用于日常学习和研究,减少环境搭建时踩坑。


安装步骤

以在Ubuntu 18.04 64系统搭建LLM环境,安装《langchain-ChatGLM》为例:

 

1、 创建GPU实例(显存8GB以上,磁盘至少50G)本文选择了带P100 GPU的 ecs.gn5-c4g1.xlarge实例,在实例创建时选择安装cuda 11.4。设置用户名及登录密码。

image.png

2、 设置安全组配置,配置出方向端口22,并在源IP中加入本机IP

3、 Ssh到云ECS。如果是root登录,系统会提示正在安装CUDA,待安装完毕,查看GPU详情(若命令无法正常运行,则说明CUDA没安装好):nvidia-smi

image.png

4、 ECS上安装相关软件包:

Asudo apt-get update

B安装gcc编译器(可选,系统中通常已有)sudo apt install build-essential

C、安装Python,以3.8为例:sudo apt install python3.8

D、安装miniconda

1)下载安装包:注意miniconda包需选择对应python版本的包

wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.3.1-0-Linux-x86_64.sh

2)运行安装脚本,并初始化:bash Miniconda3-py38_23.3.1-0-Linux-x86_64.sh

3)(可在2中完成)初始化终端 Shell,以便运conda~/miniconda3/bin/conda init

4)初始化完成后,运行bash命令,即可进入conda环境:bash

5)创建个新的环境(可选):conda create --name aigc python=3.8 -y

6)激活aigc环境(可选):conda activate aigc

5、安装gitsudo apt install git    

6git clone langchain-ChatGLM,并安装软件依赖:

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

cd langchain-ChatGLM && pip install -r requirements.txt

pip install fastapi uvicorn

conda install nltk        # langchain依赖的语言工具包

 

7chatglm-6b模型及Embedding 模型,下载到本地(可从本地加载模型):目前支持chatglm-6b-int4-qe、chatglm-6b-int4、chatglm-6b-int8、chatglm-6b、chatyuan、moss。本文以chatglm-6b为例。注:模型需要占用数十G空间,可将ECS实例的本地盘格式化后挂载,将模型存放在本地盘上。

安装git-lfsapt install git-lfs

git-lfs clone https://huggingface.co/THUDM/chatglm-6b

 

# 下载 Embedding 模型,目前支持ernie-tiny、ernie-base、text2vec-base、text2vec,本文以text2vec为例。

$ git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese /your_path/

# 模型需要更新时,可打开模型所在文件夹后拉取最新模型文件/代码

$ git lfs pull

 

8更新config/model_config.py中的模型路径为本地路径

llm_model_dict变量中"chatglm-6b""pretrained_model_name": "/home/fsnode/chatglm-6b"

embedding_model_dict变量中"text2vec""text2vec": "/home/fsnode/text2vec-large-chinese"

 

9、导入自有的文档到ecs,目前主要支持mdtxtpdfjpg格式。

 

10、运行CLIweb DEMO

cli_demopython cli_demo.py

webui:如需要公网访问,还需要将webui.py中修改:share=True

A、安装gradio pip install gradio

BECS实例安全组的入方向添加安全组规则,并放行8501端口(默认公网服务端口,也可以自定义)。

image.png

C、在ECS上运行脚本:python webui.py

D、脚本运行成功后,会展示生成的公网链接。在本机浏览器中输入该链接,就可以使用了。

image.png

此外,如果不想修改安全组端口,也无需公网访问。可以把模型的本地服务端口7860直接映射到自己的本地便携上,登录使用:

A、本地便携机上执行如下命令,将云ECS7860端口映射到本地(IP及用户名填实际的):

ssh -L7860:localhost:7860 ecs-user@本地便携IP

B、在本地浏览器登录web界面:http://127.0.0.1:7860


相同的问题,在未结合私域数据下,使用相同ChatGLM模型回答如下:从对比可以看出,无私域数据情况下的回答有明显的错误。而结合私域数据后,答案很准确。

image.png

知识库+LLM羊毛推荐

阿里云近期推出了60元包月的知识库+LLM体验活动,可用于测试、开发、学习、工作助理等,入口https://common-buy.aliyun.com/?commodityCode=hitsdb_aigcsharepre_public_cn

详见:https://developer.aliyun.com/article/1322802


附录

参考资料:

https://github.com/THUDM/ChatGLM-6B#readme

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

https://github.com/imClumsyPanda/langchain-ChatGLM/blob/master/docs/FAQ.md

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2月前
|
监控 数据处理 索引
整合LlamaIndex与LangChain构建高级的查询处理系统
该文阐述了如何结合LlamaIndex和LangChain构建一个扩展性和定制性强的代理RAG应用。LlamaIndex擅长智能搜索,LangChain提供跨平台兼容性。代理RAG允许大型语言模型访问多个查询引擎,增强决策能力和多样化回答。文章通过示例代码展示了如何设置LLM、嵌入模型、LlamaIndex索引及查询引擎,并将它们转换为LangChain兼容的工具,实现高效、精准的问题解答。通过多代理协作,系统能处理复杂查询,提高答案质量和相关性。
82 0
|
2月前
|
弹性计算 自然语言处理 开发工具
基于阿里云向量检索 Milvus 版和 LangChain 快速构建 LLM 问答系统
本文介绍如何通过整合阿里云Milvus、阿里云DashScope Embedding模型与阿里云PAI(EAS)模型服务,构建一个由LLM(大型语言模型)驱动的问题解答应用,并着重演示了如何搭建基于这些技术的RAG对话系统。
|
19天前
|
人工智能 自然语言处理 API
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
147 0
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
|
14天前
|
数据采集 分布式计算 大数据
森马基于MaxCompute+Hologres+DataWorks构建数据中台
本次案例主要分享森马集团面对多年自建的多套数仓产品体系,通过阿里云MaxCompute+Hologres+DataWorks统一数仓平台,保障数据生产稳定性与数据质量,减少ETL链路及计算时间,每年数仓整体费用从300多万降到180万。
|
2月前
|
人工智能 测试技术 API
【AIGC】LangChain Agent(代理)技术分析与实践
【5月更文挑战第12天】 LangChain代理是利用大语言模型和推理引擎执行一系列操作以完成任务的工具,适用于从简单响应到复杂交互的各种场景。它能整合多种服务,如Google搜索、Wikipedia和LLM。代理通过选择合适的工具按顺序执行任务,不同于链的固定路径。代理的优势在于可以根据上下文动态选择工具和执行策略。适用场景包括网络搜索、嵌入式搜索和API集成。代理由工具组成,每个工具负责单一任务,如Web搜索或数据库查询。工具包则包含预定义的工具集合。创建代理需要定义工具、初始化执行器和设置提示词。LangChain提供了一个从简单到复杂的AI解决方案框架。
450 3
|
2月前
|
人工智能 自然语言处理 前端开发
【AIGC】通过人工智能总结PDF文档摘要服务的构建
【5月更文挑战第9天】 使用Python和预训练的AI模型,结合Gradio前端框架,创建了一个文本及PDF摘要聊天机器人。通过加载"FalconsAI/text_summarization"模型,实现文本和PDF的预处理,包括PDF合并与文本提取。聊天机器人接收用户输入,判断是文本还是PDF,然后进行相应的摘要生成。用户可以通过运行`app.py`启动机器人,访问`localhost:7860`与之交互,快速获取内容摘要。这个工具旨在帮助忙碌的人们高效获取信息。
338 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【AIGC】基于大语言模型构建多语种聊天机器人(基于Bloom大语言模型)
【5月更文挑战第8天】基于大语言模型Bloom构建多语种聊天机器人
119 1
|
2月前
|
存储 人工智能 API
【AIGC】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序
【5月更文挑战第7天】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序实践
327 1
|
2月前
|
SQL 人工智能 自然语言处理
利用LangChain构建的智能数据库操作系统
LangChain库简化了数据库与AI结合,通过LLM将自然语言转为SQL语句进行查询和数据分析。它降低了数据查询的门槛,支持创建基于数据库的问答机器人和数据分析面板。实战案例展示了如何使用LangChain进行查询并以自然语言形式返回结果。通过限制表名,可处理大量数据。总结:掌握LangChain在数据库操作、查询及结果自然语言转换的应用。
76 0
|
2月前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
23 0