基于Hologres向量计算与大模型免费定制专属聊天机器人

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 介绍如何基于Hologres向量计算能力,结合大模型的阅读理解和信息整合能力,对该垂直行业的问题提供更贴切的回答,即费、快速定制专属聊天机器人。

背景信息

大模型可以广泛应用于各行各业。使用大模型定制聊天机器人,除了训练大模型的方式外,还可以使用提示词微调(Prompt-tuning)的方法,在提问时提供特定行业的相关语料,结合大模型的阅读理解和信息整合能力,对该垂直行业的问题提供更贴切的回答。

Hologres是一站式实时数仓引擎,与达摩院自研高性能向量计算软件库Proxima深度整合,支持高效、易用的向量计算能力,详情请参见Proxima向量计算

可以将Hologres作为向量实时存储和检索引擎,把定制语料作为向量存储并输出给大模型,最终实现定制聊天机器人的快速搭建。

前提条件

  • 已有大模型:本文适用于各种大模型。
  • 已开通Hologres实例:您可以使用Hologres免费试用实例,0元搭建向量数据库,详情请参见新用户免费试用

    说明
    建议使用Hologres 8CU规格,免费试用实例处理的向量数据规模为百万级。如有更大规模向量数据,请使用更大规格实例。
  • 已安装Anaconda,详情请参见Anaconda

实践步骤

  1. 环境准备。
  • 使用Anaconda环境运行如下命令安装相关依赖:
conda create--name chatbot python=3.8conda activate chatbot
pip install langchain psycopg2-binary torch transformers modelscope bottle
pip install <大模型相关依赖>
  • 准备大模型:本文以支持通过API访问的大模型为例,您需要准备大模型API访问密钥。
  • 单击代码与样例数据或运行如下命令克隆本文所需代码与样例数据:说明
  • 如果通过下载链接下载的代码与样例数据,使用前请进行解压。
  • 如果使用如下代码克隆代码与样例数据,请在使用前下载Git
git clone https://github.com/aliyun/alibabacloud-hologres-connectors.git
  1. 大模型试用。先试用原生大模型,针对部分Hologres相关的专业问题进行问答。
  1. holo-chatbot/chatbot.py代码的main函数(107行)中,修改chat_model_name为您想使用的大模型,示例代码如下:

    说明
    您可以使用任意LangChain支持的大模型,详见LangChain chat models,也可以为其他大模型实现相应的接口后进行调用。
# 选择大模型
from langchain.chat_models import <chat_model_name>chat_model =<chat_model_name>(<api_key>='xxx',<api_base>='xxx', temperature=0.1)bot = Chatbot(chat_model, args.clear, args.no_vector_store)
  1. 使用如下命令进入大模型:
    说明
    首次使用会自动下载Embedding模型(约400 MB),需要较长时间,第二次调用则不需要此过程。
# 切换目录至代码所在目录
cd alibabacloud-hologres-connectors/holo-chatbot
# 运行如下命令打开设置向导,各个设置项按回车跳过即可
python generate_config.py# -n --no-vector-store: 不通过Hologres向量检索,直接调用大模型进行问答python chatbot.py-n
  1. 提问问题及大模型对应回答如下:

Human: 什么是Hologres?
Chatbot: Hologres是一个分析型云原生数据仓库,由阿里云提供。它可以处理PB级别的数据,并提供了高性能的查询和分析能力。Hologres支持SQL和PostgreSQL协议,并提供了与阿里云生态系统的深度集成,例如MaxCompute和DataWorks。

Human: Hologres中有什么加速jsonb的方法吗?
Chatbot:是的,Hologres提供了一种名为“Gin Index”的方法来加速jsonb类型的查询。Gin Index是一种基于倒排索引的数据结构,它可以快速地定位包含特定jsonb键值对的行。在Hologres中,您可以使用CREATE INDEX语句创建Gin Index,例如:
CREATE INDEX idx_gin ON my_table USING gin(my_jsonb_column);
这将在my_table表的my_jsonb_column列上创建一个Gin Index。之后,您可以使用jsonb的查询操作符(例如->、->>、#>、#>>)来查询该列,并且查询将使用Gin Index进行加速

Human: Hologres中的列存jsonb是什么?
Chatbot: Hologres中的列存jsonb是一种数据类型,它可以存储JSON格式的数据。JSON是一种轻量级的数据交换格式,常用于Web应用程序中。jsonb是一种二进制格式的JSON,它可以提供更快的查询速度和更小的存储空间。在Hologres中,您可以使用jsonb列来存储和查询JSON数据。
  1. Hologres向量数据准备。
  1. 在Hologres中创建数据库,详情请参见创建数据库
  2. 完善连接信息。
    运行如下命令打开设置向导,并填写连接信息。后续您也可以手动修改config/config.yaml文件来更新连接信息。
python generate_config.py
  1. 连接信息:

参数

说明

HOLO_ENDPOINT

Hologres实例的网络地址。

进入Hologres管理控制台实例详情页获取网络地址。

HOLO_PORT

Hologres实例的端口。

进入Hologres管理控制台实例详情页获取端口。

HOLO_USER

当前阿里云账号的AccessKey ID。

您可以单击AccessKey 管理,获取AccessKey ID。

HOLO_PASSWORD

当前阿里云账号的AccessKey Secret。

您可以单击AccessKey 管理,获取AccessKey Secret。

HOLO_DATABASE

Hologres实例的数据库名称。

  1. 准备语料库。本文以下载的代码与样例数据中data目录下的example_data.csv文件为例。
  • 语料库文件需要使用CSV格式文件,并包含titlecontent两列。
  • 本文将Hologres部分用户文档作为语料,内容示例如下。您也可以按照示例文件格式自定义语料库。

title

content

你是谁

我是Holo chatbot,一个智能问答机器人。我会尽我所能根据给定文档数据库回答您的问题。

你是如何实现的、架构是怎样的

我采用Langchain框架进行开发,Langchain是一个简单易用的python大语言模型开发框架,其中集成封装了很多实用工具。我的后端采用Hologres进行向量数据存储,可以存储大量文本以及向量数据并进行快速向量近似查询,以取得最相关的文档。最后我通过调用大模型 API来实现问答。

什么是实时数仓Hologres

Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析……

  • 语料数据向量化并导入Hologres:
    运行如下命令将语料数据转化为向量(Text Embedding),并写入Hologres。

    说明
    本文使用达摩院在魔搭平台的CoRom开源中文embedding模型,将语料转换为768维的向量数据,详情请参见coROM
python chatbot.py -l
  • 您可以在Hologres的langchain_pg_embedding表中查询转化后的向量数据:
SELECT*FROM langchain_pg_embedding limit1;--返回结果示例id|embedding|metadata|document
2419815e-1407-11ee-bee5-acde48001122|{0.395261,0.123794,0.761932,0.413286,...}|{"source":"data/example_data.csv","row":1}|title: 你是如何实现的、架构是怎样的 content: 我采用Langchain框架进行开发,Langchain是一个简单易用的python大语言模型开发框架,其中集成封装了很多实用工具。我的后端采用Hologres进行向量数据存储,可以存储大量文本以及向量数据并进行快速向量近似查询,以取得最相关文档。最后我通过调用大模型 API来实现问答。
  1. 大模型和语料库效果验证。将上文语料库对应的向量数据输入给大模型进行提示词微调,运行如下命令进入大模型再询问其相同的问题。
python chatbot.py
  • 问题一:相较于原生大模型,经语料库优化后的回答可以总结出Hologres更丰富更准确的优势。
Human: 什么是Hologres
Chatbot: Hologres是阿里巴巴自主研发的一站式实时数仓引擎(Real-Time Data Warehouse),支持海量数据实时写入、实时更新、实时加工、实时分析,支持标准SQL(兼容PostgreSQL协议和语法,支持大部分PostgreSQL函数),支持PB级数据多维分析(OLAP)与即席分析(Ad Hoc),支持高并发低延迟的在线数据服务(Serving),支持多种负载的细粒度隔离与企业级安全能力,与MaxCompute、Flink、DataWorks深度融合,提供企业级离在线一体化全栈数仓解决方案。Hologres致力于高性能、高可靠、低成本、可扩展的实时数仓引擎研发,为用户提供海量数据的实时数据仓库解决方案和亚秒级交互式查询服务,广泛应用在实时数据中台建设、精细化分析、自助式分析、营销画像、人群圈选、实时风控等场景。
  • 问题二:优化后的大模型已经可以理解Hologres加速查询JSONB类型的核心信息,并将版本信息、原理等内容总结得较为完整。
Human: Hologres中有什么加速jsonb的方法吗?
Chatbot: 是的,Hologres从 V1.3版本开始支持对于JSONB类型开启列式存储优化,能够降低JSONB数据的存储大小并加速查询。开启JSONB列式存储优化后,系统会在底层自动将JSONB的列转换为强Schema的列式存储,查询JSONB中某一个Value时就可以直接命中指定列,从而提升查询性能。同时因为JSONB中的Value是按列式存储的,在存储层可以达到像普通结构化数据一样的存储和压缩效率,从而有效降低存储,实现降本增效。
  • 问题三:优化后的大模型可以很好地将列存理解为列式存储优化,并完整总结JSONB列存原理。
Human: Hologres中的列存jsonb是什么?
Chatbot: Hologres中的列存JSONB是指将JSONB类型的数据按列式存储,即将JSONB中的每个键值对拆分成单独的列进行存储,而不是将整个JSONB对象作为一个整体存储。这种存储方式可以提高查询效率,因为查询时只需要命中需要的列,而不需要扫描整个JSONB对象。同时,列存JSONB还可以有效地降低存储空间,因为相同的值可以被重复存储在不同的行中,从而实现数据的压缩。Hologres从 V1.3版本开始支持对于JSONB类型开启列式存储优化。
  1. 可见经过优化,大模型在Hologres专业领域的回答已经非常准确。
  2. (可选)聊天机器人接入钉钉群聊。聊天机器人可以接入钉钉群聊,您也可以仿照dingding_server.py中的方式将Chatbot接入其他服务。
  1. 打开钉群,添加自定义机器人,详情请参见自定义机器人接入
    其中安全设置选择加签并打开Outgoing机制,在其中填入您部署大模型定制聊天机器人服务器的IP和任意Token。将Webhook中的access_tokensecret作为环境变量DINGDING_TOKENDINGDING_SECRET输入到连接信息(config/config.yaml)中。
  2. 使用如下命令在服务器上部署HTTP服务。
# 该脚本会在后台服务钉钉机器人发来的http请求,URL为 http://localhost:8889/chat
python dingding_server.py > log.txt 2>&1 &
  1. 接入钉钉群聊,开始聊天。
    您可以在钉钉群聊中@聊天机器人,开始聊天。
相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
440 2
|
2月前
LangChain-11 Code Writing FunctionCalling 大模型通过编写代码完成需求 大模型计算加法
LangChain-11 Code Writing FunctionCalling 大模型通过编写代码完成需求 大模型计算加法
37 4
|
4月前
|
存储 人工智能
|
2月前
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
85 3
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
|
2月前
|
机器学习/深度学习 人工智能 自动驾驶
2024.10|AI/大模型在机器人/自动驾驶/智能驾舱领域的最新应用和深度洞察
本文介绍了AI和大模型在机器人、自动驾驶和智能座舱领域的最新应用和技术进展。涵盖多模态大语言模型在机器人控制中的应用、移动机器人(AMRs)的规模化部署、协作机器人的智能与安全性提升、AR/VR技术在机器人培训中的应用、数字孪生技术的优化作用、Rust语言在机器人编程中的崛起,以及大模型在自动驾驶中的核心地位、端到端自动驾驶解决方案、全球自动驾驶的前沿进展、智能座舱的核心技术演变和未来发展趋势。
95 2
|
2月前
|
机器学习/深度学习 人工智能 开发框架
解锁AI新纪元:LangChain保姆级RAG实战,助你抢占大模型发展趋势红利,共赴智能未来之旅!
【10月更文挑战第4天】本文详细介绍检索增强生成(RAG)技术的发展趋势及其在大型语言模型(LLM)中的应用优势,如知识丰富性、上下文理解和可解释性。通过LangChain框架进行实战演练,演示从知识库加载、文档分割、向量化到构建检索器的全过程,并提供示例代码。掌握RAG技术有助于企业在问答系统、文本生成等领域把握大模型的红利期,应对检索效率和模型融合等挑战。
189 14
|
2月前
|
人工智能 机器人
多模态大模型活动 | 使用 PAI×LLaMA Factory 搭建文旅问答机器人
LLaMA Factory 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架,GitHub 星标超过3万。本次活动通过 PAI×LLaMA Factory 微调 Qwen2-VL 模型,快速搭建文旅领域知识问答机器人,期待看到您与 AI 导游的创意对话!
|
2月前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
2月前
|
存储 人工智能 搜索推荐
揭秘LangChain+RAG如何重塑行业未来?保姆级实战演练,解锁大模型在各领域应用场景的神秘面纱!
【10月更文挑战第4天】随着AI技术的发展,大型语言模型在各行各业的应用愈发广泛,检索增强生成(RAG)技术成为推动企业智能化转型的关键。本文通过实战演练,展示了如何在LangChain框架内实施RAG技术,涵盖金融(智能风控与投资决策)、医疗(辅助诊断与病历分析)及教育(个性化学习推荐与智能答疑)三大领域。通过具体示例和部署方案,如整合金融数据、医疗信息以及学生学习资料,并利用RAG技术生成精准报告、诊断建议及个性化学习计划,为企业提供了切实可行的智能化解决方案。
82 5
|
2月前
|
JSON 计算机视觉 数据格式
LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能
LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能
50 4

热门文章

最新文章