如何让聊天机器人更懂你?Tair向量检索给你答案

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介: Tair是阿里云企业级内存数据库,广泛应用于电商、游戏等各领域,兼容Redis生态(可平替开源Redis),并且同时具备向量检索能力,实现了缓存+向量二合一。

ChatGPT潮流下向量检索的兴起


ChatGPT刚刚出圈并大火的时候,曾经出过一个Bug,用户有概率看到别的用户的聊天信息或者聊天Session的标题。最终,OpenAI发布了一份声明,对这个问题的发生做出了解释,声明中指出,该错误源于开源库redis-py中的一个漏洞。OpenAI官方宣称在此过程中寻求了Redis的开发者的帮助。借此机会,我们得以一探大模型与最火爆的聊天机器人应用中,缓存系统的作用方式。


大模型自身是没有多轮对话能力的,需要将之前的历史信息保存下来,重新组织以后再发送给大模型,才可以实现多轮对话的能力。但是不论是哪家的大模型,能够接受的请求大小(Token数限制)都是有限的,所以需要一个外存,将长期历史对话记录存储起来,并提供具备向量检索能力的查询检索能力。



大语言模型似乎已经无所不能了,为什么还需要数据库?通过对大规模互联网数据的学习,大语言模型已经具备了相当丰富的基础知识和阅读理解、逻辑推理能力。要想充分发挥它的潜力,还需要提供额外的信息进行辅助。一类是跟用户交流的历史记录,使得大模型在多轮对话中能够“瞻前顾后”;另一类是模型训练中所没有见过的私域知识以及新知识,避免大模型在未知的领域“无中生有”。Tair是阿里云企业级内存数据库,广泛应用于电商、游戏等各领域,兼容Redis生态(可平替开源Redis),并且同时具备向量检索能力,实现了缓存+向量二合一。


大模型时代的新需求


在这个大模型与AIGC持续火爆的时代,向量检索的用户有哪些变化?用户对于向量检索以及缓存系统有哪些新需求?我们可以从以下几个方面来看:


1. 用户更加多元化

传统的向量检索系统,往往是AI工程中的一个组成部分,向量数据库的使用者往往是AI领域的专业人员。而随着大模型的火爆,各个领域的开发者都加入进来。这些用户对AI领域的知识,掌握程度参差不齐,对于模型、向量、距离函数、索引类型等概念的理解程度也有很大差异。另外传统的向量索引技术分支众多,各有特点,各分支在不同场景,不同数据规模下表现各异。在这种情况下,系统是否可以做的更加简洁易用,屏蔽掉大部分技术细节,将用户从选择困难中拯救出来,对用户很有意义。


2. 系统的实时读写能力

现在各个大模型相关的开发框架非常流行,比如LangChain、llamaIndex等。这些开发框架都兼容了非常多的向量数据库,但是对向量数据库的接口抽象中,都假设向量数据库可以像一个TP数据库一样使用,只提供初始化和实时的增删查改等几个很少的接口,传统向量检索系统的索引构建、索引加载、配置变更等步骤和流程完全没有体现。这就对向量数据库的实时读写能力,提出了更高要求,最好可以像是MySQL/Redis一样可以在线访问、实时读写的形态。


3. 多模混合检索能力

许多用户在基于大模型、AIGC的场景,进行开发的时候,私域数据以及长Session的用户信息,数据量的起步规格都不会很大。每个检索场景的系统各来一套的话,即使配置起步规格,系统利用率也不高。在检索的时候,除了向量近似检索,往往还需要其他方面的检索能力,比如全文检索、标量混合检索等等。如果可以在一个数据库实例内,同时提供这几种检索能力,将大大降低系统的复杂度和使用门槛。


Tair的产品特性与优势



Tair向量检索,是在云原生内存数据Tair的基础上,以内置引擎的方式,为用户提供简单易用、实时高性能、多模混合检索的向量数据库服务。


向量索引基础能力


结合现有大模型的实际需求,Tair提供两种常见的索引算法:


  • FLAT:在小规模或者对查询精度有严格要求的场景下,可以采用此方式,除数据外,无额外索引开销。
  • HNSW:如果是大规模数据集,或者对查询时延有高要求,可以选用HNSW方式。此外,后台提供AutoGC功能,对标记删除的数据空间进行自动回收。


在距离函数的支持方面,行业常见L2,以及大模型领域经常用到的IP和COSINE都有支持。在向量每个维度的数据类型方面,完整支持FLOAT32、FLOAT16,以及Binary三种类型。



所有的数据和索引都是全内存设计,保证了实时在线的访问性能。数据变化会同步到备节点,保证系统的高可用。所有数据都会实时写入磁盘存储,保证数据的可靠性,并支持备份恢复,支持恢复至指定时间点的闪回特性。


简单易用

低起配低成本

使用Tair和其向量检索,就像使用开源Redis一样简单。Tair的起步规格为1G双节点,可以容纳数十万数据量,在LLM相关的大部分场景下都可以满足需求。



在内存使用上,Tair向量检索采用了精心设计的数据结构,面向内存数据库优化,比起开源的Milvus,内存占用节省30%~70%。


gist数据集,100万条,960维,HNSW算法

高弹性

在部署方式上,使用主备高可用方式起步,并且可以在线扩容至最大256个集群分片的分布式部署方式,并且单分片支持的内存容量可以扩容至64GB,使得整个集群的最大容量扩展至16T。



Redis生态兼容使用方式

Tair在索引支持和使用方式上,采用的是完全实时在线的方式,创建/删除索引空间,或者写入数据只用少量的几个API即可实现,所有操作均为同步操作。在SDK的开发语言支持方面,我们通过扩展Tair的SDK支持了Java和Python,其他开发语言则可以通过兼容Redis协议的方式快速兼容,另外日常开发也可以通过redis-cli直接访问。


系统内部支持海量独立索引空间的创建和删除,在数据库进程内部,每个独立索引空间的创建和删除都映射到了KV操作中。这些底层机制使得Tair的向量检索能力具备以下特性:


  • 支持海量的独立索引空间,总数量只受实例内存空间的限制。索引的创建也是实时生效,操作时延<1ms。
  • 索引空间、以及索引空间内每个独立的向量数据行,都支持TTL / Expire类的操作。这些特性良好支持了具备向量检索能力的Session机制,使用起来也更像是传统的Redis,对有多元化需求的用户,支持更加友好。



实时高性能


所有的索引构建和更新,都采用了实时在线的方式,写入的数据实时可查,删除后的数据实时不可见,没有任何延迟。


在访问性能方面,索引的创建时延<1ms,类似于Redis中一个KV的操作时延;而向量数据的点查时延<1ms,写入(附带索引构建)和近似检索都在毫秒级别。此外,Tair向量检索同时支持Intel CPU和倚天CPU,并分别针对x86和arm架构进行了CPU指令集的优化。


以下均通过Tair的Python客户端,跨网络进行测试,测试的硬件环境是x86的G6机型和倚天710机型。


HNSW索引算法下性能表现

数据集:sift(128维、100万条),gist(960维,100万条),ef_search为横坐标,查询最相近的10条数据。



FLAT索引算法下性能表现

数据集:minst(784维,6万条),random随机数据(100维,9万条),查询最相近的10条数据。



多模检索

向量标量混合检索

Tair向量检索支持在对向量做ANN近似查询的同时,对标量数据同步过滤。在过滤标量少数据的同时,支持对过滤的条件按照C语言的格式进行编写,支持大于小于、与或非等操作符,例如:



丰富计算场景支持

Tair除了兼容Redis生态,提供了常用的Hash、ZSet等使用方式外,还提供了TairStack复杂数据结构的存储和检索能力。这些能力不仅增强了Tair在实时计算领域的能力,还和现有的其他数据结构一起为用户提供一站式的数据解决方案。



传统Redis生态的各种数据结构,为用户提供了缓存场景的高效使用,而Tair Search和Tair向量检索则为用户在大模型领域提供了在线检索能力,以及AI场景下的实时方案。TairSearch采用了和ES相似的、基于JSON的查询语法,满足了灵活性的同时,兼容ES用户的使用习惯,除了支持ES常用的分词器,还新增JIEBA和IK中文分词器,对中文分词更加友好。这种组合能力,可以大大简化业务系统,减少操作多种数据系统,带来的数据同步和资源成本等问题。


标准云原生数据库服务



Tair是标准的云原生内存数据库服务,具备云原生数据库服务常见的开箱即用的特点,完整支持安全加密、备份恢复、数据闪回等各种特性。同时对于多AZ部署、跨Region数据同步等也有完整支持。相比较开源数据库系统具备更出色的易用性。


大模型结合Tair的应用场景


Tair为大模型系统提供长ChatSession



大模型系统能够接收的请求大小(也即Token数)是有限制的(通常是4K~32K之间),并且响应速度随着请求变大而变慢。以ChatGLM为例,将用户的历史记录作为请求的一部分持续追加,当超过Token数限制的时候就需要丢弃老的聊天记录,因此LLM方案无法实现太长的多轮对话能力。而基于Tair,可以将用户的历史聊天记录存在Session中,这些信息可以设置TTL等过期机制,并且Tair也支持海量的索引空间(Session)。在请求LLM的时候,通过向量检索技术,将相关的历史信息检索出来,通过Prompt润色后,一并发送给大模型,可实现基于多轮对话下,长期的上下文感知能力。


大模型私域数据问答



基于Tair的向量检索和全文检索能力,可以为用户私域数据的ChatBot服务提供两路召回,定制用户专有的ChatBot。通过近期的客户对接和访谈,现有大模型业务的数据规模一般较小(数万~数百万),Tair提供1GB的数据库实例,低成本起步;可在线扩容至16T的集群规模,支持大容量高吞吐的业务场景,满足业务规模的不断发展。


使用说明及客户端SDK


  1. redis-cli命令行API说明:https://help.aliyun.com/document_detail/453885.html
  2. Java版客户端:https://github.com/tair-opensource/alibabacloud-tairjedis-sdk
  3. Python版客户端:https://github.com/tair-opensource/tair-py
  4. 基于计算巢一键拉起Tair+LLM使用范例:


客户支持如果对Tair向量检索、大模型与缓存等机制等感兴趣,欢迎大家加入钉钉群:31520029139

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
8月前
|
存储 人工智能 NoSQL
课时5:AIGC时代,Tair向量检索助力AI
课时5:AIGC时代,Tair向量检索助力AI
195 0
|
3月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
45 3
|
7月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.
|
2月前
|
传感器 人工智能 自然语言处理
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
|
3月前
|
传感器 机器学习/深度学习 算法
植保机器人具备智能感知与决策能力
植保机器人具备智能感知与决策能力
19 2
|
4月前
|
传感器 搜索推荐 机器人
具身智能赋能人形机器人产业将蓬勃发展
【1月更文挑战第12天】具身智能赋能人形机器人产业将蓬勃发展
49 3
具身智能赋能人形机器人产业将蓬勃发展
|
4月前
|
机器学习/深度学习 人工智能 算法
智能AI机器人管家
应用场景:四层别墅,每层面积1000平+,有自己的地下停车场,地下酒窖,阳光房,花园,广场。在此场景下想做一个智能机器人管家。 主要功能: 1、自动跟随制定的人,可以根据设定的人的语音指令做一些动作,比如:停下、充电、倒退、去某个地方等等。 2、可以根据设定的人的语音回答一些常见问题,比如:今天天气,股票走势,黄金走势,钢铁走势等能够从网上直接获取到的信息。 3、可以根据设定的人的语音回答一些本地问题,比如家里还有多少酒,调一下某地的监控,花房的温度多少,打开某房间的空调。 4、可以帮助做一些本企业决策性的问题。
|
4月前
|
人工智能 自然语言处理 搜索推荐
基于阿里云向量检索服务搭建AI智能问答机器人
基于阿里云向量检索服务搭建AI智能问答机器人
123291 38
|
5月前
|
自然语言处理 机器人 数据库
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
73 2