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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
存储 人工智能 NoSQL
课时5:AIGC时代,Tair向量检索助力AI
课时5:AIGC时代,Tair向量检索助力AI
|
7天前
|
人工智能 机器人 API
AppFlow:无代码部署Dify作为钉钉智能机器人
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将其配置到钉钉中作为智能机器人使用。首先,在钉钉开放平台创建应用,获取Client ID和Client Secret。接着,创建消息卡片模板并授予应用发送权限。然后,使用AppFlow模板创建连接流,配置Dify鉴权凭证及钉钉连接凭证,完成连接流的发布。最后,在钉钉应用中配置机器人,发布应用版本,实现与Dify应用的对话功能。
AppFlow:无代码部署Dify作为钉钉智能机器人
|
2月前
|
人工智能 自然语言处理 算法
具身智能高校实训解决方案 ----从AI大模型+机器人到通用具身智能
在具身智能的发展历程中,AI 大模型的出现成为了关键的推动力量。高校作为培养未来科技人才的摇篮,需要紧跟这一前沿趋势,开展具身智能实训课程。通过将 AI 大模型与具备 3D 视觉的机器人相结合,为学生搭建一个实践平台。
261 64
|
1月前
|
机器学习/深度学习 人工智能 算法
人工智能与机器人的结合:智能化世界的未来
人工智能与机器人的结合:智能化世界的未来
242 32
|
21天前
|
数据采集 监控 数据可视化
优锘科技携手逐际动力,共创数字孪生与具身智能机器人新未来
近日,优锘科技与逐际动力正式宣布达成战略合作,双方将在业务和技术领域展开深度协作,共同探索数字孪生与具身智能机器人的融合应用。这一合作无疑将为智能科技领域注入全新动力,推动行业智能化转型迈向更高水平。
|
1月前
|
人工智能 自然语言处理 机器人
机器人迈向ChatGPT时刻!清华团队首次发现具身智能Scaling Laws
清华大学研究团队在机器人操作领域发现了数据规模定律,通过大规模数据训练,机器人策略的泛化性能显著提升。研究揭示了环境和对象多样性的重要性,提出了高效的數據收集策略,使机器人在新环境中成功率达到约90%。这一发现有望推动机器人技术的发展,实现更广泛的应用。
85 26
|
2月前
|
算法 机器人 语音技术
由通义千问驱动的人形机器人具身智能Multi-Agent系统
申昊科技人形机器人小昊,集成通义千问多模态大模型的具身智能系统,旨在讲解销售、迎宾表演等场景。机器人通过语音、动作等方式与用户互动,利用云端大语言模型处理自然语言,结合视觉、听觉等多模态感知技术,实现流畅的人机对话、目标追踪、展厅讲解等功能。
305 4
由通义千问驱动的人形机器人具身智能Multi-Agent系统
|
2月前
|
自然语言处理 算法 机器人
智能电话销售机器人源码搭建部署系统电话机器人源码
智能电话销售机器人源码搭建部署系统电话机器人源码
42 4