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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 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@ecs公网IP

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


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

image.png


附录

参考资料:

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

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

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

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
3月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
689 2
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
PeterCat 是一款开源的智能答疑机器人,能够自动抓取 GitHub 上的文档和 issue 构建知识库,提供对话式答疑服务,帮助开发者和社区维护者高效解决技术问题。
50 7
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
|
20天前
|
弹性计算 自然语言处理 数据库
通过阿里云Milvus和LangChain快速构建LLM问答系统
本文介绍如何通过整合阿里云Milvus、阿里云DashScope Embedding模型与阿里云PAI(EAS)模型服务,构建一个由LLM(大型语言模型)驱动的问题解答应用,并着重演示了如何搭建基于这些技术的RAG对话系统。
|
1月前
|
XML 算法 自动驾驶
使用URDF和Xacro构建差速轮式机器人模型
前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左右两侧,两轮独立控制速度,通过给定不同速度实现底盘转向控制。一般会配有一到两个辅助支撑的万向轮。 此次建模,不引入算法,只是把机器人模型的样子做出来,所以只使用 rivz 进行可视化显示。 机器人的定义和构成 机器人定义:机器人是一种自动化的机器,所不同的是这种机器具备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力,是一种具有高级灵活性的自动化机器
67 15
|
2月前
|
JSON 数据可视化 NoSQL
基于LLM Graph Transformer的知识图谱构建技术研究:LangChain框架下转换机制实践
本文介绍了LangChain的LLM Graph Transformer框架,探讨了文本到图谱转换的双模式实现机制。基于工具的模式利用结构化输出和函数调用,简化了提示工程并支持属性提取;基于提示的模式则为不支持工具调用的模型提供了备选方案。通过精确定义图谱模式(包括节点类型、关系类型及其约束),显著提升了提取结果的一致性和可靠性。LLM Graph Transformer为非结构化数据的结构化表示提供了可靠的技术方案,支持RAG应用和复杂查询处理。
156 2
基于LLM Graph Transformer的知识图谱构建技术研究:LangChain框架下转换机制实践
|
2月前
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。
|
4月前
|
人工智能 自然语言处理 API
深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手
我们小时候都玩过乐高积木。通过堆砌各种颜色和形状的积木,我们可以构建出城堡、飞机、甚至整个城市。现在,想象一下如果有一个数字世界的乐高,我们可以用这样的“积木”来构建智能程序,这些程序能够阅读、理解和撰写文本,甚至与我们对话。这就是大型语言模型(LLM)能够做到的,比如 GPT-4,它就像是一套庞大的乐高积木套装,等待我们来发掘和搭建。
137 1
|
3月前
|
人工智能 自然语言处理 机器人
用Python构建你的第一个聊天机器人
【10月更文挑战第7天】在这篇文章中,我们将一起探索如何利用Python编程语言和AI技术,一步步打造一个基础的聊天机器人。无论你是编程新手还是有一定经验的开发者,都能通过这个指南获得启发,并实现一个简单的对话系统。文章将引导你理解聊天机器人的工作原理,教你如何收集和处理用户输入,以及如何设计机器人的响应逻辑。通过动手实践,你不仅能够学习到编程技能,还能深入理解人工智能在语言处理方面的应用。
125 0
|
5月前
|
机器学习/深度学习 自然语言处理 算法
LangChain 构建问题之智能体协同中的决策机制的实现如何解决
LangChain 构建问题之智能体协同中的决策机制的实现如何解决
50 1
|
5月前
|
Apache UED 数据安全/隐私保护
揭秘开发效率提升秘籍:如何通过Apache Wicket组件重用技巧大翻新用户体验
【8月更文挑战第31天】张先生在开发基于Apache Wicket的企业应用时,发现重复的UI组件增加了维护难度并影响加载速度。为优化体验,他提出并通过面板和组件重用策略解决了这一问题。例如,通过创建`ReusableLoginPanel`类封装登录逻辑,使得其他页面可以轻松复用此功能,从而减少代码冗余、提高开发效率及页面加载速度。这一策略还增强了应用的可维护性和扩展性,展示了良好组件设计的重要性。
63 0