Advertisement

向量数据库综合综述:存储和检索技术、挑战

阅读量:

二〇二三年十月份来自密西根大学与中科院的论文《The in-depth Analysis of Vector Databases: Storage and Retrieval Techniques and Challenges》

向量数据库专为存储传统数据库管理系统(DBMS)无法表征的高维数据而设计。ANN搜索问题的研究已有很长历史,在文献中积累了一定数量的相关文章。本文旨在系统梳理相关算法,并对这一领域进行整体把握。本文框架的基础是按照解决ANNS问题的方法对这些研究进行分类分析,具体包括基于哈希、基于树、基于图以及基于量化四种主要方法。接着介绍当前存在的主要挑战。最后探讨将向量数据库与大型语言模型结合应用的可能性。

向量数据库与传统数据库相比有几个优势:

1 该方法能够高效精准地执行相似性搜索与检索任务。向量数据库基于向量的距离度量或相似度评估标准识别出最接近的数据条目,并能自动完成对高维空间中潜在相关数据的定位与排序工作;而传统的存储系统仅限于精确匹配查询模式,在面对非结构化信息时往往难以有效提取关键特征值。
2 该系统能够管理高度复杂且非结构化的各种类型的数据;包括但不限于文本信息、图像数据、音频记录以及视频内容等。
3 该技术具备处理海量实时数据采集与分析的能力;通过分布式计算架构提升多节点系统的工作效率,并能有效优化跨多台机器或集群的资源利用率;相比传统数据库而言,在处理大数据时具有更好的可扩展性和更高的性能表现。

存储

A. 分片

该技术是一种基于特定标准(如哈希函数或基于键的距离度量)的方式,用于将向量数据分布在多台机器或集群上,并被称为分布式系统中的分片。而这种架构设计能够有效增强其可扩展性等关键性能指标。

在向量数据库中执行数据分区的一种常用方法是依据哈希算法进行分区。这种方法通过计算一组Key列或多个列的哈希值来分配相应的向量数据到不同的分区中。采用这种安排后,用户能够将大量的向量数据均匀分布到各个分区上,并且有效避免了热点问题的发生。

除了基于键列的分片策略外,在向量数据库中的另一种组织方式是基于距离划分的方法。该策略通过计算一组键列或多个列之间的值差异来动态分配向量数据至相应的分区。这样一来,用户可以根据分区标识符或特定的距离阈值来优化其向量数据查询操作。

B. 分区

基于特定的标准(如地理位置、类别或频率),分片是一种技术用于将向量数据库划分为多个子集(被称作分片),从而实现更高效的管理和组织。这些分片技术有助于提升向量数据库的性能、可扩展性和可用性。

在向量数据库中实现一种高效的分区方案可用距离度量法,在这种方案下系统会基于Key字段值间的差异程度自动划分存储区域以提高查询效率;通过定义明确的分区分区标准并设置合理的值域范围可以显著提升数据库处理能力

矢量数据库中采用列表分区方法作为另一种分隔策略,在这种情况下, 该方法通过将矢量数据基于Key列或一组列的值表进行分类并分配到不同的分区内. 用户可以根据具体需求指定特定的分隔符名称或者采取更加灵活的方式进行向量化数据查询.

C. 缓存

缓存是一种用于存储频繁访问或最近使用的数据的技术机制;它通过将这些信息存储在高速且易于访问的内存单元中(例如RAM),从而降低查询延迟并提升搜索效率。这种技术常见于矢量数据库中,在优化相似性搜索和提高检索速度方面发挥了重要作用。

该数据库缓存机制采用基于时间最近使用原则(LRU)进行管理。当缓存达到饱和状态时,默认情况下各分区将根据预设的标准独立划分存储区域。具体而言,在这种架构下,默认情况下各分区将根据预设的标准独立划分存储区域;该机制会按照LRU原则驱逐失效的矢量数据以腾出空间供新数据接入;同时系统会自动分析当前存储情况并动态调整分配比例;最终目标是以最小化查询延迟的同时最大化资源利用率;例如,在GIS领域中知名的技术商如Esri则采用了基于区域划分的分层存储方案;这种设计不仅能够显著提升处理效率还能有效降低服务器负载;

D.复制

复制是一种方式来生成矢量数据的多个副本,并将这些副本存储在不同的节点或集群中。
通过复制技术,我们可以增强矢量数据库的可用性、稳定性和性能。

在矢量数据库中进行数据复制时采用无主复制机制,在此机制下无需区分主节点与从节点,并允许多个节点同时执行写入与读取操作。这种设计能够有效规避单一故障点问题的同时显著提升系统的可扩展性和可靠性水平;然而,在这种设计下可能会出现一致性问题需要通过相应的协调机制来解决冲突情况

矢量数据库中复制的另一种实现方式是通过主从复制机制完成的,在这种方案中首先会指定其中一个节点为主节点其余的则作为从节点参与数据同步过程只有当主节点接收写入请求后才会将其变更传递给所有从节点以确保数据的一致性。这种机制不仅能够保证数据的一致性还能够使得矢量数据库在处理事务时更加简便然而这种方案可能会导致系统的可用性受到影响因此为了应对主节点发生故障的情况,则需要一套故障转移机制来确保系统稳定运行。

搜素

最近邻搜索 (NNS) 是一种在给定集合中找到与给定点最接近(或最相似)的数据点的优化问题。通常采用距离度量来评估接近程度:数据点越不相似,度量值越大。

近似最近邻搜索 (ANNS) 是 NNS 的一种变形形式,在允许一定误差的前提下提供较优的结果。通过权衡准确度、检索速度与存储效率之间的平衡,在处理大规模数据及其高维度特性非常有帮助。

NNS

  1. 暚力搜索法:一种直观且直接的算法,在实际应用中广泛使用,并被证明是一种可靠的有效方法。它通过遍历整个数据集中的每一个样本,并逐一计算其与目标样本之间的距离,在此过程中不断更新当前最优匹配样本信息。这种方法能够确保找到每个查询样本的所有最近邻居中的最小距离样本作为其真正最近邻居的结果标签,并因此具有较高的准确性标准保证。
  2. 基于树的数据结构:在机器学习领域中常用作分类决策支持系统的关键组件之一的是四种常用的基于树的数据结构:K-D树、球树、R树以及M树。

ANNS

  1. 基于哈希的技术:包含局部敏感哈希、谱哈希(spectral hashing)、深度哈希等技术。
    这些技术的思想在于通过比较二进制编码而非原始数据来降低内存使用量及搜索速度[8]。
  2. 基于树的技术:近似最近邻搜索(ANN)、K-均值聚类等。
    这些技术的思想在于通过跟踪最有可能包含查询点的分支结构来缩小搜索范围。
  3. 基于图的技术主要包括可导航小世界网络与分层可导航小世界网络。
  4. 基于量化的方法涉及积量化、优化积量化以及在线积量化等技术。
    积量化的主要优势在于通过对比编码而非原始数据来进行降维处理,
    从而有效降低内存占用并加速ANN算法的速度[28]。

主要的挑战

A. 高维向量组织与检索
B. 异构向量数据类型处理
C. 分布式计算的并行实现
D. 主流机器学习框架的兼容性

大语言模型

通过基于大量预训练文本数据的学习过程, LLM能够习得多种涌现性质, 这些 emergent 能力在小型语言模型中尚未出现, 而大型语言模型则具备, 例如, 下 context learning, reasoning chains 和 command tracking [36], [37].

数据的能力又可以从三个方面展开:

该段落经过改写后的内容

对于向量数据库而言,在传统数据库技术的基础上(诸如清洗、去重和对齐等),不仅能够帮助LLM获取高质量且海量的数据,并且向量形式的存储也能够适应多样化的需求。

模型:在数据之外的基础上,LLM 也因模型规模的扩大而获益。巨大的参数数量增加了对训练与存储的需求,在这一领域具有重要意义,并能有效降低资源消耗同时提升性能。

分布式训练。
模型压缩。
向量存储。

在检索环节中, 用户可以通过大语言模型基于查询指令或提示信息自动生成相关文本内容, 但这些输出结果往往显得单一缺乏多样性且存在事实性偏差. 向量数据库系统可以根据具体应用场景优化这些不足之处, 从而显著提升用户体验感受.

  • 跨模态支持。
  • 实时知识。
  • 较少幻觉。

向量数据库与大语言模型之间可以实现协同作用,在此过程中既能够提升彼此的功能,并促进系统的智能化发展以及交互体验的提升

长期记忆:通过以向量形式表示文档或信息的方式,使向量数据库为LLM提供长期记忆的支持。
语义搜索:通过基于语义理解而非关键词匹配的方式进行文本检索的技术使LLM实现语义搜索能力。
推荐系统:通过在向量空间中检索出相关且互补的信息条目来提升LLM推荐系统的智能化水平。

在向量数据库中的大语言模型(LLM)同样引人注目且具有光明的未来。以下则是向量数据库上 LLM 可能具有的几种潜在应用场景:

  1. 文本生成:LLM 可以利用向量数据库中的向量信息来生成自然语言文本。
  2. 文本增强:LLM 借助向量数据库提取丰富的上下文和相关数据细节来提升现有文本的质量。
  3. 文本转换:借助 VDB 技术实现多种文本表现形式之间的灵活转换。

关于基于检索的 LLM,那么

  1. 定义:利用检索机制的LLM是一种主要在推理阶段从外部数据存储中提取信息的语言模型[46]。
  2. 优势:高效的LLM架构通过与数据库进行深度整合实现了知识密集型应用,在性能上较传统单一LLM架构展现出显著的优势特点。
  • 存储丰富的细节。基于检索的 LLM 通过检索机制能够访问外部知识库中的详细信息。
  • 能够轻松地根据输入自动获取最新资料。
  • 便于生成带来源标注的内容,在需要时可随时进行核实并及时更新相关信息。
  • 通过先进的加密匿名化技术确保数据安全。
  • 优化计算资源消耗从而降低运行时间与存储开销。

3)推理:推理涉及数据流的多个部分。

  • 数据存储方案设计。该方案支持高度多样化的数据存储方式,在实际应用中可以选择单一模态的数据存储方式(如原始文本语料库),也可以选择整合不同模态数据(如向量数据库)的方式进行数据存储设计。具体采用何种方式将直接影响后续检索算法的选择与实现细节。
  • 索引策略设计与实现方法研究。在实际应用中,在用户提交查询时将该查询作为检索依据进行处理,并结合预先设计好的算法框架找到与之相关性最高的若干份数据子集供后续检索操作使用。

在包含大语言模型(LLM)以及向量存储系统的工作流程中,在线服务可被分解为四个层次的理解结构:针对普通用户的界面设计阶段;专业用户的提示工程阶段;基于LLM的知识服务实现;以及数据基础管理与知识存储的具体操作。对于未曾深入了解过大语言模型的普通用户而言,在线服务能够接受自然语言输入并进行问题描述;而对于具备专业知识背景的专业用户提供者,则需要通过精心设计的提示指令来进行交互操作。在这种情况下,默认情况下系统将对输入内容进行解析,并提取关键信息以支持后续的服务处理过程

向量库和LLM的结合工作流如图所示:

请添加图片描述

在处理过程中, 向量库将存储非结构化数据及其联合嵌入. 下一步将是访问向量库以查找相似的最近邻居. 使用NNS或ANNS算法来比较大语言模型序列中提取的相似最近邻居与向量数据库中的编码. 并利用预设的序列化链条生成不同的结果;同时该链条的作用相当于搜索引擎.

如果不是泛化的任务,则应在完成基础任务后将结果进一步放入领域模型中进行处理

对于位于数据层次的基础层而言,在选择数据源时可以从PDF文档、CSV表格文件以及MD文档等多种类型入手。这些数据来源不仅限于学术出版物还包括会议论文以及教科书等多种形式。而对应的分析领域则涵盖艺术领域、科学探索领域以及工程实践领域等多个方向,并延伸至商业运营环境医学研究环境与法律适用等多个层面

如图是LLM和向量库在科学研究的一个复杂工作流:

请添加图片描述

全部评论 (0)

还没有任何评论哟~