大模型如何用向量数据库?清华等最新《向量数据库管理系统》综述

简介: 大模型如何用向量数据库?本文为您详细讲解

免费体验阿里云高性能向量检索服务:https://www.aliyun.com/product/ai/dashvector


    现如今,已有超过20种商业向量数据库管理系统(VDBMSs),它们都是在过去五年内推出的。但基于嵌入的检索(EBR)已经被研究了超过十年,而相似性搜索更是达到了惊人的半个世纪甚至更久。从算法转向系统的这一变革是由新的数据密集型应用驱动的,尤其是大型语言模型(LLMs),它们需要大量的非结构化数据,以及可靠、安全、快速且可扩展的查询处理能力。现有各种新的数据管理技术来满足这些需求,但尚无全面的调查来彻底审查这些技术和系统。

我们首先识别向量数据管理的五个主要障碍,即语义相似性的模糊性、向量的大尺寸、相似性比较的高成本、缺乏可用于索引的自然划分,以及有效应答要求属性和向量的“混合”查询的困难。克服这些障碍已经导致了新的查询处理、存储和索引以及查询优化和执行的方法。对于查询处理,各种相似性分数和查询类型现已被充分理解;对于存储和索引,技术包括向量压缩,即量化,以及基于随机化、学习划分和“可导航”的划分技术;对于查询优化和执行,我们描述了混合查询的新运算符,以及计划枚举、计划选择和硬件加速查询执行的技术。这些技术导致了各种VDBMSs在设计和运行时特性的光谱上,包括专门为向量设计的“原生”系统和将向量功能整合到现有系统中的“扩展”系统。

      随着用于信息检索的大型语言模型(LLMs) 的崛起,以及电子商务等经济驱动因素背后的非结构化数据的增长,有需要新的向量数据库管理系统 (VDBMSs) 来提供传统的功能,如查询优化、事务处理、可扩展性、容错能力,以及隐私和安全性,但这是针对非结构化数据的。 由于这些数据并不是由固定模式中的属性表示的,因此它们不是通过结构化查询而是通过相似性搜索来检索的,在这种搜索中,与查询具有相似语义意义的数据被检索。为了支持这种类型的搜索,实体如图片和文档首先通过嵌入模型编码为D维特征向量,然后存储在VDBMS中。双编码器模型描述了这个过程,也称为密集检索。

因此,VDBMS中的模块分为查询处理器和存储管理器。查询处理器包括查询规范、逻辑运算符、它们的物理实现以及查询优化器;而存储管理器则维护搜索索引并管理向量的物理存储,这些模块的设计影响了VDBMS的运行时特性。许多应用,如LLMs,都是读取密集型的,需要高查询吞吐量和低延迟。其他应用,如电子商务,也是写入密集型的,需要高写入吞吐量。此外,一些应用需要高查询准确性,这意味着检索到的实体与查询在语义上真正匹配,而其他应用可能对错误更为宽容。虽然对于处理传统的结构化数据有成熟的理解,但对于向量数据并非如此。我们提出了五个关键障碍。

(1) 模糊的搜索条件。结构化查询使用精确的布尔谓词,但向量查询依赖于一个难以准确捕捉的模糊语义相似性概念。

(2) 昂贵的比较。属性谓词(例如 <, >, = 和 ∈)大多可以在O(1)时间内评估,但相似性比较通常需要O(D)时间,其中D是向量的维度。

(3) 大尺寸。结构化查询通常只访问少量属性,从而可以设计如列存储这样的高效读取存储结构。但向量搜索需要完整的特征向量。向量有时甚至跨越多个数据页面,使磁盘检索更加昂贵,同时也增加了内存的压力。

(4) 缺乏结构。结构化属性主要是可排序或序数的,导致通过数字范围或类别的划分来设计搜索索引。但向量没有明显的排序顺序,也不是序数,这使得难以设计既准确又高效的索引。

(5) 与属性的不兼容。在多个属性索引上的结构化查询可以使用简单的集合操作,如并集或交集,将中间结果收集到最终结果集中。但向量索引通常在找到k个最相似的向量后停止,与属性索引扫描的结果结合起来可能会导致预期结果减少。另一方面,修改索引扫描运算符以考虑属性谓词可能会降低索引性能。如何在既高效又准确的方式下支持既有属性又有向量的“混合”查询仍然不清楚。

      现在已经有各种技术围绕这些问题开发,旨在在支持大量向量的同时实现低查询延迟、高结果质量和高吞吐量。其中一些是关于相似性搜索几十年研究的结果。其他技术,包括混合查询处理、基于向量压缩的索引、基于硬件加速的技术以及分布式架构,都是较近期的发明。

在本文中,我们首先从通用VDBMS的角度对这些技术进行调研,将它们分为适用于查询处理和适用于存储和索引的技术,查询优化和执行与核心查询处理器分开处理。

      查询处理器主要处理如何首先指定搜索条件以及如何执行搜索查询。对于前者,有各种相似性分数、查询类型和查询接口可供选择。对于后者,基本运算符是相似性投影,但由于它可能效率不高,因此已经开发了各种基于索引的运算符。

      存储管理器主要处理如何组织和存储向量集合以支持高效准确的搜索。对于大多数系统,这是通过向量搜索索引实现的。我们将索引分类为基于表的索引,如E2LSH、SPANN 和IVFADC,这些索引通常容易更新;基于树的索引,如FLANN,旨在提供对数搜索;以及基于图的索引,如KGraph、FANNG ,已经被证明在经验上表现良好,但理论理解较少。



      查询优化器和执行器主要处理计划枚举、计划选择和物理执行。为了支持混合查询,已经开发了几种混合运算符。还有几种枚举和选择的技术,包括基于规则和基于成本的选择。对于查询执行,有几种技术旨在利用大向量的存储局部性设计硬件加速运算符,利用处理器缓存、SIMD 和GPUs等功能。还有分布式搜索技术和支持高吞吐量更新的技术,即基于异地更新。我们将现有的VDBMSs分类为原生系统,这些系统专门围绕向量管理设计,包括Vearch、Milvus  和Manu;扩展系统在现有的数据管理系统之上增加向量功能,包括AnalyticDB-V 和PASE;以及搜索引擎和库,旨在仅提供搜索功能,如Apache Lucene、Elasticsearch 和Meta Faiss。原生系统往往更倾向于针对特定功能的高性能技术,而扩展系统往往更倾向于适应不同工作负载但不一定是最快的技术。



相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
16小时前
|
算法 数据库 Docker
大模型必备向量数据库-Milvus的安装过程
大模型必备向量数据库-Milvus的安装过程
6 0
|
16小时前
|
存储 机器学习/深度学习 人工智能
RAG:AI大模型联合向量数据库和 Llama-index,助力检索增强生成技术
RAG:AI大模型联合向量数据库和 Llama-index,助力检索增强生成技术
RAG:AI大模型联合向量数据库和 Llama-index,助力检索增强生成技术
|
16小时前
|
自然语言处理 API 开发工具
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
|
16小时前
|
存储 人工智能 数据库
【AI大模型应用开发】以LangChain为例:从短期记忆实战,到如何让AI应用保持长期记忆的探索
【AI大模型应用开发】以LangChain为例:从短期记忆实战,到如何让AI应用保持长期记忆的探索
42 0
|
16小时前
|
人工智能 API
【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?
【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?
36 0
|
16小时前
|
存储 人工智能 数据库
【AI大模型应用开发】【LangChain系列】10. 实用技巧:如何使用已经存在的向量数据库作为 Retriever?
【AI大模型应用开发】【LangChain系列】10. 实用技巧:如何使用已经存在的向量数据库作为 Retriever?
43 0
|
16小时前
|
人工智能
【AI大模型应用开发】【LangChain系列】实战案例5:用LangChain实现灵活的Agents+RAG,该查时查,不该查时就别查
【AI大模型应用开发】【LangChain系列】实战案例5:用LangChain实现灵活的Agents+RAG,该查时查,不该查时就别查
55 0
|
17小时前
|
人工智能 流计算
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
【AI大模型应用开发】【LangChain系列】9. 实用技巧:大模型的流式输出在 OpenAI 和 LangChain 中的使用
59 0
|
16小时前
|
数据采集 人工智能 Python
【AI大模型应用开发】【LangChain系列】8. 重要组件介绍:如何运用LangChain表达式语言LCEL中的RunnableParallel和RunnablePassthrough?
【AI大模型应用开发】【LangChain系列】8. 重要组件介绍:如何运用LangChain表达式语言LCEL中的RunnableParallel和RunnablePassthrough?
36 0
|
16小时前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
63 0

热门文章

最新文章