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

AndroidDev
• 阅读 210

简介:本文为您介绍如何基于Hologres向量计算能力,结合大模型的阅读理解和信息整合能力,对该垂直行业的问题提供更贴切的回答,即费、快速定制专属聊天机器人。

背景信息

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

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

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

前提条件

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

说明

建议使用Hologres 8CU规格,免费试用实例处理的向量数据规模为百万级。如有更大规模向量数据,请使用更大规格实例。

  • 已安装Anaconda,详情请参见Anaconda。

实践步骤

1.环境准备。

  • 使用Anaconda环境运行如下命令安装相关依赖:
conda create --name chatbot python=3.8
conda activate chatbot
pip install langchain psycopg2-binary torch transformers modelscope bottle
pip install <大模型相关依赖>
  • 准备大模型:本文以支持通过API访问的大模型为例,您需要准备大模型API访问密钥。
  • 单击代码与样例数据或运行如下命令克隆本文所需代码与样例数据:说明

  1. 如果通过下载链接下载的代码与样例数据,使用前请进行解压。
  2. 如果使用如下代码克隆代码与样例数据,请在使用前下载Git。

git clone https://github.com/aliyun/alibabacloud-hologres-connectors.git

2.大模型试用。先试用原生大模型,针对部分Hologres相关的专业问题进行问答。

a.在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)

b.使用如下命令进入大模型:

说明

首次使用会自动下载Embedding模型(约400 MB),需要较长时间,第二次调用则不需要此过程。

# 切换目录至代码所在目录
cd alibabacloud-hologres-connectors/holo-chatbot
# 运行如下命令打开设置向导,各个设置项按回车跳过即可
python generate_config.py
# -n --no-vector-store: 不通过Hologres向量检索,直接调用大模型进行问答
python chatbot.py -n

c.提问问题及大模型对应回答如下:

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数据。

3.Hologres向量数据准备。

a.在Hologres中创建数据库,详情请参见创建数据库。
b.完善连接信息。运行如下命令打开设置向导,并填写连接信息。后续您也可以手动修改config/config.yaml文件来更新连接信息。

python generate_config.py

c.连接信息:

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

d.准备语料库。本文以下载的代码与样例数据中data目录下的example_data.csv文件为例。

  • 语料库文件需要使用CSV格式文件,并包含title和content两列。
  • 本文将Hologres部分用户文档作为语料,内容示例如下。您也可以按照示例文件格式自定义语料库。

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

  • 语料数据向量化并导入Hologres:

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

说明

本文使用达摩院在魔搭平台的CoRom开源中文embedding模型,将语料转换为768维的向量数据,详情请参见coROM。

python chatbot.py -l
  • 您可以在Hologres的langchain_pg_embedding表中查询转化后的向量数据:
SELECT * FROM langchain_pg_embedding limit 1;
--返回结果示例
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来实现问答。

4.大模型和语料库效果验证。将上文语料库对应的向量数据输入给大模型进行提示词微调,运行如下命令进入大模型再询问其相同的问题。

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接入其他服务。

a.打开钉群,添加自定义机器人,详情请参见自定义机器人接入。

其中安全设置选择加签并打开Outgoing机制,在其中填入您部署大模型定制聊天机器人服务器的IP和任意Token。将Webhook中的access_token和secret作为环境变量DINGDING_TOKEN和DINGDING_SECRET输入到连接信息(config/config.yaml)中。

b.使用如下命令在服务器上部署HTTP服务。

# 该脚本会在后台服务钉钉机器人发来的http请求,URL为 http://localhost:8889/chat
python dingding_server.py > log.txt 2>&1 &

c.接入钉钉群聊,开始聊天。

您可以在钉钉群聊中@聊天机器人,开始聊天。

点击立即免费试用云产品 开启云上实践之旅!

原文链接

本文为阿里云原创内容,未经允许不得转载。

点赞
收藏
评论区
推荐文章
不是海碗 不是海碗
3年前
【ChatGPT3.5-Turbo】允许第三方开发者接入的ChatGPT
OpenAI最新发布的3.5Turbo是一款拥有强悍能力的预训练聊天机器人模型。它能让机器学习和自然语言处理的开发者以极低的成本快速获得精准的结果。
不是海碗 不是海碗
3年前
【GPT3.5Turbo 开放之后】客服同学竟然偷偷摸起了鱼
ChatGPT3.5Turbo是一款基于国际领先的GPT3.5开放式的语言模型的聊天机器人。该聊天机器人可以像一个真实的人一样根据用户输入的内容做出反应,从而实现和用户的真实对话。
ChatGPT ChatGPT
3年前
ChatGPT让沟通更智能、更便捷
ChatGPT让沟通更智能、更便捷ChatGpt是最近引起强烈关注的一种技术,它可以实现聊天机器人,为使用者解决复杂的信息获取和学习任务。但他也不仅仅是一个聊天机器人,它是一种基于深度学习算法的自然语言生成模型,由OpenAI公司开发。它可以模拟人类的对话
京东云开发者 京东云开发者
6个月前
大模型在软件测试中的应用论讨
1、大模型的概念大模型是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。大模型的设计目的是为了提高模型的表达能力和预测性能,能够处理更加复杂的任务和数据。大模型在各种领域都有广泛的应用,包括自然
直播预告丨大模型+Agents疏通京东金融运营堵点
大模型时代,“应用变了”:把大模型装进金融营销分几步?11月24日(周五)14:0015:00开播!数字化打破信息孤岛,也建立更多孤岛运营人员被困在自己的环节里十余个子系统、子模块如何整合?自然语言任务中的“幻觉”如何克服?如何将AI训练成业务运营高手?京
直播预告丨大模型如何在健康医疗中挖出大大的花?
大模型时代,“应用变了”:大模型如何在健康医疗中挖出大大的花?12月1日(周五)14:0015:00开播!大模型时代,给千行百业带来了新的想象空间试想一下,大模型经过专业知识训练竟然能够成为你的健康医疗助手曾经科幻片中的场景,正一步步成为现实这一期,我们将
直播预告 | 大模型时代 “应用变了”:看大模型如何跑进零售电商应用
走进零售电商,大模型能做什么?今年11.11,应用大模型带来成效显著今天下午2:00,京东云视频号准时直播看京东零售如何破题新解法,大小模型协同大模型将走向多模态,走向具身智能
大模型应用之路:从提示词到通用人工智能(AGI)
大模型在人工智能领域的应用正迅速扩展,从最初的提示词(Prompt)工程到追求通用人工智能(AGI)的宏伟目标,这一旅程充满了挑战与创新。本文将探索大模型在实际应用中的进展,以及它们如何为实现AGI铺平道路。基于AI大模型的推理功能,结合了RAG(检索增强
利用大模型服务一线小哥的探索与实践
一、小哥作业大模型2022年OpenAI基于GPT推出了聊天机器人ChatGPT,带来了非常惊艳的语言理解、内容生成、知识推理等能力,能够准确理解人的语言、意图,并能够回答出清晰、完整的内容,让人很难分辨出沟通交流的是人类还是机器人。大模型会尝试基于已有
【ChatGPT-应用篇】基于chatGPT覆盖测试过程的初步探索 | 京东物流技术团队
1、前言22年底ChatGPT就已风靡行业内外,简单来说,它是基于自然语言生成式AI模型,打造的一款聊天机器人。是OpenAI于11月30日推出的最新作品,供公众免费测试。他可以根据用户的提示,模仿类似人类的对话,和普通的智能机器人有天地之别,非常真实。我