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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*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

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
6天前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
114 1
|
9天前
|
人工智能 Java API
构建基于Java的AI智能体:使用LangChain4j与Spring AI实现RAG应用
当大模型需要处理私有、实时的数据时,检索增强生成(RAG)技术成为了核心解决方案。本文深入探讨如何在Java生态中构建具备RAG能力的AI智能体。我们将介绍新兴的Spring AI项目与成熟的LangChain4j框架,详细演示如何从零开始构建一个能够查询私有知识库的智能问答系统。内容涵盖文档加载与分块、向量数据库集成、语义检索以及与大模型的最终合成,并提供完整的代码实现,为Java开发者开启构建复杂AI智能体的大门。
266 1
存储 人工智能 机器人
35 0
|
1月前
|
人工智能 安全 数据库
构建可扩展的 AI 应用:LangChain 与 MCP 服务的集成模式
本文以LangChain和文件系统服务器为例,详细介绍了MCP的配置、工具创建及调用流程,展现了其“即插即用”的模块化优势,为构建复杂AI应用提供了强大支持。
|
2月前
|
机器学习/深度学习 算法 大数据
构建数据中台,为什么“湖仓一体”成了大厂标配?
在大数据时代,数据湖与数据仓库各具优势,但单一架构难以应对复杂业务需求。湖仓一体通过融合数据湖的灵活性与数据仓的规范性,实现数据分层治理、统一调度,既能承载海量多源数据,又能支撑高效分析决策,成为企业构建数据中台、推动智能化转型的关键路径。
|
3月前
|
数据采集 存储 分布式计算
一文读懂数据中台架构,高效构建企业数据价值
在数字化时代,企业面临数据分散、难以统一管理的问题。数据中台架构通过整合、清洗和管理数据,打破信息孤岛,提升决策效率。本文详解其核心组成、搭建步骤及常见挑战,助力企业高效用数。
1056 24
|
5月前
|
SQL 机器学习/深度学习 监控
构建数据中枢:数据中台指标体系如何赋能企业运营
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
5月前
|
存储 机器学习/深度学习 人工智能
使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
本文介绍了如何利用LangChain、Higress和Elasticsearch快速构建RAG(检索增强生成)应用,实现企业知识的智能检索与问答。首先通过LangChain解析Markdown文档并写入Elasticsearch,接着部署Higress AI网关并配置ai-search插件以整合私有知识库与在线搜索功能。最后,通过实际案例展示了RAG查询流程及结果更新机制,确保内容准确性和时效性。文章还提供了相关参考资料以便进一步学习。
554 38
|
6月前
|
存储 人工智能 监控
通过Milvus和Langchain快速构建基于百炼大模型的LLM问答系统
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。