AnalyticDB(ADB)+LLM:构建AIGC时代下企业专属Chatbot

为什么Chatbot需要大语言模型+向量数据库?

这个春天,最让人震感的科技产品莫过于ChatGPT的横空出世,通过大语言模型(LLM)让人们看到了生成式AI能实现到和人类语言高度相仿的语言表达能力,AI不再遥不可及而已经可以走进人类的工作和生活,这使得沉寂一段时间的AI领域重新焕发了能量,无数的从业者正趋之若鹜地投身于下一个改变时代的机会;据不完全统计,在短短的4个月时间内,美国已经完成了超4000笔的生成式AI的行业融资。生成式AI已经成为了资本和企业都无法忽视的下一代的技术密码,而其对于底层的基础设施能力提供了更高的要求。

大模型能够回答较为普世的问题,但是若要服务于垂直专业领域,会存在知识深度和时效性不足的问题,那么企业如何抓住机会并构建垂直领域服务?目前有两种模式,第一种是基于大模型之上做垂直领域模型的Fine Tune,这个综合投入成本较大,更新的频率也较低,并不适用于所有的企业;第二种就是在向量数据库中构建企业自有的知识资产,通过大模型+向量数据库来搭建垂直领域的深度服务,本质是使用数据库进行提示工程(Prompt Engineering)。以法律行业为例,基于垂直类目的法律条文和判例,企业可以构建垂直领域的法律科技服务。如法律科技公司Harvey,正在构建“律师的副驾驶”(Copilot for Lawyer)以提高法律条文的起草和研究服务。

将企业知识库文档和实时信息通过向量特征提取然后存储到向量数据库,结合LLM大语言模型可以让Chatbot(聊天机器人)的回答更具专业性和时效性,构建企业专属Chatbot。

本文接下来将重点介绍基于大语言模型(LLM)+向量数据库打造企业专属Chatbot的原理和流程,以及ADB-PG构建该场景的核心能力。

什么是向量数据库?

在现实世界中,绝大多数的数据都是以非结构化数据的形式存在的,如图片,音频,视频,文本等。这些非结构化的数据随着智慧城市,短视频,商品个性化推荐,视觉商品搜索等应用的出现而爆发式增长。为了能够处理这些非结构化的数据,我们通常会使用人工智能技术提取这些非结构化数据的特征,并将其转化为特征向量,再对这些特征向量进行分析和检索以实现对非结构化数据的处理。因此,我们把这种能存储,分析和检索特征向量的数据库称之为向量数据库。

向量数据库对于特征向量的快速检索,一般会采用构建向量索引的技术手段,我们通常说的向量索引都属于ANNS(Approximate Nearest Neighbors Search,近似最近邻搜索),它的核心思想是不再局限于只返回最精确的结果项,而是仅搜索可能是近邻的数据项,也就是通过牺牲可接受范围内的一点精确度来换取检索效率的提高。这也是向量数据库与传统数据库最大的差别。

为了将ANNS向量索引更加方便的应用到实际的生产环境中,目前业界主要有两种实践方式。一种是单独将ANNS向量索引服务化,以提供向量索引创建和检索的能力,从而形成一种专有的向量数据库;另一种是将ANNS向量索引融合到传统结构化数据库中,形成一种具有向量检索功能的DBMS。在实际的业务场景中,专有的向量数据库往往都需要和其他传统数据库配合起来一起使用,这样会造成一些比较常见的问题,如数据冗余、数据迁移过多、数据一致性问题等,与真正的DBMS相比,专有的向量数据库需要额外的专业人员维护、额外的成本,以及非常有限的查询语言能力、可编程性、可扩展性和工具集成。而融合了向量检索功能的DBMS则不同,它首先是一个非常完备的现代数据库平台,能满足应用程序开发人员的数据库功能需求;然后它集成的向量检索能力一样也可以实现专有的向量数据库的功能,并且使向量存储和检索继承了DBMS的优秀能力,如易用性(直接使用SQL的方式处理向量)、事务、高可用性、高可扩展性等等。本文介绍的ADB-PG即是具有向量检索功能的DBMS,在包含向量检索功能的同时,还具备一站式的数据库能力。在介绍ADB-PG的具体能力之前,我们先来看一下Demo视频中Chatbot的创建流程和相关原理。

LLM大语言模型+ADB-PG:打造企业专属Chatbot

案例-本地知识问答系统

对于前面Demo视频结合大语言模型LLM和ADB-PG进行时事新闻点评解答的例子,让LLM回答"通义千问是什么"。可以看到,如果我们让LLM直接回答,得到的答案没有意义,因为LLM的训练数据集里并不包含相关的内容。而当我们使用向量数据库作为本地知识存储,让LLM自动提取相关的知识之后,其正确地回答了"通义千问是什么"。

同样地,这种方式可以应用于处理文档,PDF,邮件,网络资讯等等尚未被LLM训练数据集覆盖到的内容。比如:

1.结合最新的航班信息和最新的网红打卡地点等旅游攻略资源,打造旅游助手。比如回答下周最适合去哪里旅游,如何最经济实惠的问题。

2.体育赛事点评,时事热点新闻点评,总结。今天谁是NBA比赛的MVP。

3.教育行业,最新的教育热点解读,比如,告诉我什么是AIGC,什么是Stable Diffusion以及如何使用等等。

4.金融领域,快速分析各行业领域金融财报,打造金融咨询助手。

5.专业领域的客服机器人...

实现原理

本地知识问答系统(Local QA System)主要是通过结合了大语言模型的推理能力和向量数据库的存储和检索能力。来实现通过向量检索到最相关的语义片段,然后让大语言模型结合相关片段上下文来进行正确的推理得到结论。

在这个过程中主要有两个流程:

a.后端数据处理和存储流程

b.前端问答流程

同时其底层主要依赖两个模块:

1.基于大语言模型的推理模块

2.基于向量数据库的向量数据管理模块

后端数据处理和存储流程

上图黑色的部分为后端的数据处理流程,主要是将我们的原始数据求解embedding,并和原始数据一起存入到向量数据库ADB-PG中。这里你只需要关注上图的蓝色虚线框部分。黑色的处理模块和ADB-PG向量数据库。

  • Step1:先将原始文档中的文本内容全部提取出来。然后根据语义切块,切成多个chunk,可以理解为可以完整表达一段意思的文本段落。在这个过程中还可以额外做一些元数据抽取,敏感信息检测等行为。
  • Step2:将这些Chunk都丢给embedding模型,来求取这些chunk的embedding。
  • Step3:将embedding和原始chunk一起存入到向量数据库中。

前端问答流程

在这个过程中主要分为三个部分 1.问题提炼部分 2.向量检索提取最相关知识 3.推理求解部分。在这里我们需要关注橙色部分。单单说原理可能比较晦涩,我们还是用上面的例子来说明。

Part1 问题提炼

这个部分是可选的,之所以存在是因为有些问题是需要依赖于上下文的。因为用户问的新问题可能没办法让LLM理解这个用户的意图。比如用户的新问题是"它能做什么"。LLM并不知道它指的是谁,需要结合之前的聊天历史,比如"通义千问是什么"来推理出用户需要求解答案的独立问题"通义千问能做什么"。LLM没法正确回答"它有什么用"这样的模糊问题,但是能正确回答"通义千问有什么用"这样的独立问题。如果你的问题本身就是独立的,则不需要这个部分。得到独立问题后,我们可以基于这个独立问题,来求取这个独立问题的embedding。然后去向量数据库中搜索最相似的向量,找到最相关的内容。这个行为在Part2 Retrieval Plugin的功能中。

Part2 向量检索

独立问题求取embedding这个功能会在text2vec模型中进行。在获得embedding之后就可以通过这个embedding来搜索已经事先存储在向量数据库中的数据了。比如我们已经在ADB-PG中存储了下面内容。我们就可以通过求取的向量来获得最相近的内容或者知识,比如第一条和第三条。通义千问是...,通义千问可以帮助我们xxx。

idContentembeddingdocument
1通义千问是...[0.1, -0.1,0,1]大模型通义千问
2NBA比分 湖人-篮网[0.2,0.1,0.2,-1]NBA今日播报
3通义千问可以帮助我们xxx[-0.2,0.1,0.2,-1]大模型通义千问
4AIGC是xxx[0.3,0.1,0.2,-1]AIGC介绍

Part3 推理求解

在获得最相关的知识之后,我们就可以就可以让LLM基于最相关的知识和独立问题来进行求解推理,得到最终的答案了。这里就是结合“通义千问是...”,“通义千问可以帮助我们xxx”等等最有效的信息来回答“通义千问有什么用”这个问题了。最终让GPT的推理求解大致是这样:

基于以下已知信息,简洁和专业的来回答用户的问题。 如果无法从中得到答案,请说"根据已知信息无法回答该问题"或"没有提供足够的相关信息",不允许在答案中添加 编造成分,答案请使用中文。
已知内容:
1.阿里巴巴“通义千问”大模型4月11日也亮相云峰会...
2.通义千问可以帮助我们xxx 问题: 通义千问有什么用

ADB-PG:内置向量检索+全文检索的一站式企业知识数据库

为什么ADB-PG适合作为Chatbot的知识数据库?ADB-PG是一款具备大规模并行处理能力的云原生数据仓库。它支持行存储和列存储模式,既可以提供高性能的离线数据处理,也可以支持高并发的海量数据在线分析查询。因此我们可以说ADB-PG是一个支持分布式事务、混合负载的数据仓库平台,同时也支持处理多种非结构化和半结构化数据源。如通过向量检索插件实现了对图片、语言、视频、文本等非结构化数据的高性能向量检索分析,对JSON等半结构化数据的全文检索分析。因此在AIGC场景下,ADB-PG既可以作为一款向量数据库满足其对向量存储和检索的需求,也可以满足其他结构化数据的存储和查询,同时也可以提供全文检索的能力,为AIGC场景下的业务应用提供一站式的解决方案。下面我们将对ADB-PG的向量检索、融合检索和全文检索这三方面的能力进行详细介绍。ADB-PG向量检索和融合检索功能于2020年首次在公有云上线,目前已经在人脸识别领域得到了非常广泛的应用。ADB-PG的向量数据库继承自数据仓库平台,因此它几乎拥有DBMS的所有好处,如ANSISQL、ACID事务、高可用性、故障恢复、时间点恢复、可编程性、可扩展性等。同时它支持了点积距离、汉明距离和欧氏距离的向量和向量的相似度搜索。这些功能目前在人脸识别、商品识别和基于文本的语义搜索中得到了广泛应用。随着AIGC的爆炸式增长,这些功能为基于文本的Chatbot奠定了坚实的基础。另外,ADB-PG向量检索引擎也使用Intel SIMD指令极其有效地实现了向量相似性匹配。下面我们用一个具体的例子来说明ADB-PG的向量检索和融合检索如何使用。假设有一个文本知识库,它是将一批文章分割成chunk再转换为embedding向量后入库的,其中chunks表包含以下字段:

字段类型说明
idserial编号
chunkvarchar(1024)文章切块后的文本chunk
intimetimestamp文章的入库时间
urlvarchar(1024)文本chunk所属文章的链接
featurereal[]文本chunk embedding向量

那么对应的建表DDL如下:

CREATE TABLE chunks(id serial primary key,chunk varchar(1024),intime timestamp,url varchar(1024),feature real[]
);

为了对向量检索进行加速,我们还需要建立一个向量索引:

CREATE INDEX ON chunks USING ann(feature) WITH (dim=1536);

同时为了对向量结构化融合查询提供加速,我们还需要为常用的结构化列建立索引:

CREATE INDEX ON chunks(intime);

在进行数据插入的时候,我们可以直接使用SQL中的insert语法:

SELECT id,chunk,intime,url FROM chunks
ORDER BYfeature <-> array[10,2.0,…,1536.0]
LIMIT 100;

在这个例子中,如果我们要通过文本搜索它的来源文章,那么我们就可以直接通过向量检索进行查找,具体SQL如下:

SELECT id,chunk,intime,url FROM chunks
ORDER BYfeature <-> array[10,2.0,…,1536.0]
LIMIT 100;

同样,如果我们的需求是查找最近一个月以内的某个文本的来源文章。那么我们就可以直接通过融合检索进行查找,具体SQL如下:

SELECT id, chunk, intime, url FROM chunks WHERE    intime > '2023-04-01' AND intime <= '2023-05-01' 
ORDER BY     feature <-> array[10,2.0,…, 1536.0] 
LIMIT 100;

在看完上面的例子之后,我们可以很清楚地发现,在ADB-PG中使用向量检索和融合检索就跟使用传统数据库一样方便,没有任何的学习门槛。同时,我们对向量检索也有针对性地做了很多优化,如向量数据压缩、向量索引并行构建、向量多分区并行检索等等,这里不再详述。ADB-PG同时也具有丰富的全文检索功能,支持复杂组合条件、结果排名等检索能力;另外对于中文数据集,ADB-PG也支持中文分词功能,能够高效、自定义地对中文文本加工分词;同时ADB-PG也支持使用索引加速全文检索分析性能。这些能力同样也可以在AIGC业务场景下得到充分的使用,如业务可以对知识库文档结合上述向量检索和全文检索能力进行双路召回。知识数据库搜索部分包括传统的关键词全文检索和向量特征检索,关键词全文检索保证查询的精准性,向量特征检索提供泛化性和语义匹配,除字面匹配之外召回和语义匹配的知识,降低无结果率,为大模型提供更加丰富的上下文,有利于大语言模型进行总结归纳。

总结

结合本文前面所提到的内容,如果把满腹经纶的Chatbot比喻成人,那么大语言模型可以看成是Chatbot在大学毕业前从所有书本和各领域公开资料所获得的知识和学习推理能力。所以基于大语言模型,Chatbot能够回答截止到其毕业前相关的问题,但如果问题涉及到特定专业领域(相关资料为企业组织专有,非公开)或者是新出现的物种概念(大学毕业时尚未诞生),仅靠在学校的知识所得(对应预训练的大语言模型)则无法从容应对,需要具备毕业后持续获得新知识的渠道(如工作相关专业学习资料库),结合本身的学习推理能力,来做出专业应对。同样的Chatbot需要结合大语言模型的学习推理能力,和像ADB-PG这样包含向量检索和全文检索能力的一站式数据库(存储了企业组织专有的以及最新的知识文档和向量特征),在应对问题时具备基于该数据库中的知识内容来提供更专业更具时效性的回答。

作者|阿里云AnalyticDB

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

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/59176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ModaHub魔搭社区:如何基于向量数据库+LLM(大语言模型),打造更懂你的企业专属Chatbot?

目录 1、为什么Chatbot需要大语言模型+向量数据库? 2、什么是向量数据库? 3、LLM大语言模型+ADB-PG:打造企业专属Chatbot 4、ADB-PG:内置向量检索+全文检索的一站式企业知识数据库 5、总结 1、为什么Chatbot需要大语言模型+向量数据库? 这个春天,最让人震感的科技产品…

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…

大一新生调查报告——新生遇到的问题与需求

小组成员&#xff1a; 信通6班何若溪&#xff08;人际关系主题&#xff09;&#xff0c;章玉&#xff08;学习压力主题&#xff09;&#xff0c;袁博秋&#xff08;思乡主题&#xff09; 信通7班梁凌&#xff08;信息整合与报告制作&#xff09; 信通8班夏姝婷&#xff08;时间…

基于PHP的大学生问卷调查系统

一 项目介绍 基于PHP的大学生问卷调查系统 数据库mysql &#xff0c;可搭建在phpstudy下&#xff0c;实现快速部署&#xff01; 二 主要功能 用户 1 登录 2 填写问卷 管理员 1 登录 2 问卷/问题(增删改查) 3 问卷统计结果(按选择结果百分比显示) 4 问卷回收情况(参与用户和未…

大学生社团管理系统数据需求(二)

目录 前言 一、用户、管理员登录业务数据流图 二、用户、管理员修改信息业务数据流图 三、用户申请社团数据流图 四、用户报名社团活动数据流图 总结 前言 上次我写了大学生社团管理系统的数据字典&#xff0c;列出了主体及他们的内容&#xff0c;今天我想分享一下我画的…

广告行业中那些趣事系列64:低成本训练一个媲美ChatGPT效果的Vicuna模型

导读&#xff1a;本文是“数据拾光者”专栏的第六十四篇文章&#xff0c;这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要从理论到实践介绍低成本训练一个媲美ChatGPT效果的Vicuna模型&#xff0c;对于希望搭建自己的大语言模型并应用到实际业务场景感兴趣的小…

618,你会入手哪些书?【文末送书】

好书分享 前沿技术人工智能半导体新一代通信与信息技术网络空间安全参与规则 一年一度的618又到啦&#xff01;今年的618就不要乱买啦&#xff0c;衣服买多了会被淘汰&#xff0c;电子产品买多了会过时&#xff0c;零食买多了会增肥&#xff0c;最后怎么看都不划算。可是如果你…

Bito AI:免费使用 AI 编写代码/修复错误/创建测试用例 Use AI智能聊天 to 10x dev work

目录 Bito AI 简介 关键是:免费的!注册就能使用!!还不赶紧用起来??!https://bito.co/

你真的懂树吗?二叉树、AVL平衡二叉树、伸展树、B-树和B+树原理和实现代码详解...

树(Tree)是一种相当灵活的数据结构(上一节已经详细讲解了基本的数据结构:线性表、栈和队列),你可能接触过二叉树,但是树的使用并不限于此,从简单的使用二叉树进行数据排序,到使用B-树或B+树设计数据库引擎,以及目前热门的人工智能机器学习都使用到树,例如决策树(De…

人工智能预测股票涨停?靠谱吗?好像行哦,那不发财了?

背景 人工智能很火&#xff0c;各种秀。股票让人欢喜让人忧。它们结合能擦出什么样的火花&#xff1f; 我从去年5月学编程&#xff0c;树立目标&#xff1a;数据分析股市&#xff0c;做快乐盈利股民。达成阶段目标&#xff1a;预测股票涨停。特写文章记录和分享&#xff0c;也…

ChatGPT: 软件开发通用性与易用性的联系

测试地址: https://chatgptmirror.com?share3T7MZ8

GAT1400协议 注册流程

本人最近工作需要对接1400协议&#xff0c;发现网上资料不多&#xff0c;于是自己摸索了一阵&#xff0c;在这给大家提供一些我的见解&#xff0c;我是用C语言写的代码&#xff0c;有需要的可以联系我 公安部制定了统一的标准即GAT1400“公安视频图像信息应用系统”&#xff0c…

免费使用chantgpt,你敢相信吗!(不要梯子)

对于chantgpt大家一点不陌生&#xff0c;对于他的功能我就不细说了&#xff08;人工ai&#xff09;&#xff0c;下面直接进入正题 需要什么 1&#xff1a; Eg 浏览器 2.WeTab新标签页 使用方法 第一步 打开eg浏览器 第二步 打开扩展 第三步搜索 下面这个 第五步 和其他的扩…

【腾讯云 Cloud Studio 实战训练营】全新的开发习惯养成方式,至——后代开发者们

一、前言介绍 什么是 IDE &#xff1f; IDE 全称“Integrated Development Environment”&#xff0c;中文意思为“集成开发环境”&#xff0c;是用于提供程序开发环境的应用程序&#xff0c;是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。目…

AutoGPT:有手就会的安装教程

AutoGPT 是什么 Auto-GPT 是一个实验性开源应用程序&#xff0c;展示了 GPT-4 语言模型的功能。该程序由 GPT-4 驱动&#xff0c;将 LLM 的“思想”链接在一起&#xff0c;以自主实现您设定的任何目标。作为 GPT-4 完全自主运行的首批示例之一&#xff0c;Auto-GPT 突破了 AI …

真刑!几行代码端了整个教务系统。。

点击关注公众号&#xff0c;Java干货及时送达 国内最强微服务框架&#xff0c;没有之一&#xff01; 几乎覆盖 Spring Boot 所有操作&#xff01; 2023 全新 Java 面试题&#xff08;2500&#xff0b;&#xff09; 作者&#xff1a;lyc 来源&#xff1a;https://www.freebuf.co…

腾讯健康防沉迷——已经成年显示未成年——如何关闭未成年模式——解决方法

今天早上我闲的没事打开wegame&#xff0c;想看看LOL&#xff0c;更新完之后&#xff0c;我启动游戏&#xff0c;发现显示我未成年&#xff0c;我当时就懵了&#xff0c;我01年12月的&#xff0c;咱早就成年了&#xff0c;这是什么鬼 我开始以为是游戏加载问题&#xff0c;我重…

chatgpt赋能python:Python计算器函数

Python计算器函数 Python计算器函数是一种非常有用的工具&#xff0c;可以帮助您进行各种计算操作。从简单的加减乘除到复杂的科学运算&#xff0c;Python计算器函数可以让您轻松地完成您需要的数学计算。 Python计算器函数的基本介绍 在Python中&#xff0c;通过定义函数来…

chatgpt赋能Python-pythongui计算器

Python GUI 计算器 – 强大、易用的实用工具 Python GUI 计算器是一款功能强大、易于使用的实用工具。开发者们使用 Python 编程语言和一些流行的 GUI 框架&#xff08;例如 Tkinter 和 PyQt&#xff09;创造了这一款工具&#xff0c;为促进计算任务的高效完成提供了最佳体验。…

好的爆款文案可以让用户喜欢上我们的产品

​大家好&#xff0c;我是我赢助手&#xff0c;专注于新媒体短视频去水印、去重和文案提取运营的自媒体&#xff01;今天继续给大家聊一下爆款文案如何形成的问题。 “爆款文案”是指一篇稿件中&#xff0c;含有超过3个关键词的文字。它不是一种固定的格式&#xff0c;而是一种…