导读:专用矢量数据库通过将 Sparse-BM25 算法和语义搜索统一在一个高效的操作中,其性能优于双系统设置。
几十年来,以 Elasticsearch 为经典案例的关键字匹配(也被称为全文搜索)一直是企业搜索和推荐引擎等信息检索系统的默认选择项。
随着人工智能搜索技术的进步,开发者们开始转向语义搜索,使系统能够理解用户查询背后的含义和意图。嵌入模型和矢量数据库已成为这一转变的核心。
语义搜索通过将数据表示为向量嵌入,超越了关键字匹配,提供了对搜索意图的更细致入微的理解,并将应用程序从检索增强生成(RAG) 转变为多模态搜索。
在实践中,有效的信息检索系统既需要语义理解,也需要精确的关键字匹配。例如,用户希望搜索结果显示与他们的搜索查询相关的概念,同时尊重查询中使用的文字,例如特殊术语和名称,并返回精确匹配的结果。
由密集向量驱动的语义搜索有助于理解含义(例如知道“car”和“automobile”是相同的),而传统的全文搜索可提供用户期望的精确结果(例如找到“Python 3.9”的精确匹配)。因此,许多组织正在采用混合搜索方法,结合两种方法的优势,以平衡灵活的语义相关性和可预测的精确关键字匹配。
混合搜索的统一解决方案将带来许多的优势:
减少基础设施维护:管理一个系统而非两个系统可大幅降低运营复杂性,节省时间和资源。这也意味着减少上下文切换和掌握两组不同 API 的脑力开销。
整合数据管理:统一的表结构允许您存储密集(基于矢量)和稀疏(基于关键字)数据以及共享元数据标签。使用两个独立的系统需要存储两次元数据标签,以便双方能够进行元数据过滤。
简化查询:单个请求可以执行语义和全文搜索任务,无需对单独的系统进行两次 API 调用。
增强的安全性和访问控制:统一的方法可以实现更直接、更强大的安全管理,因为所有访问控制都可以在矢量数据库内集中管理,从而增强安全合规性和一致性。
在语义搜索中,机器学习模型根据文本的含义将文本“嵌入”为高维空间中的点(称为密集向量) 。具有相似语义的文本在此空间中彼此更接近。例如,“苹果”和“水果”在此空间中可能比“苹果”和“汽车”更接近。这使我们能够通过使用近似最近邻 (ANN)算法计算每个点之间的距离来快速找到语义相关的文本。
该方法还可以应用于全文搜索,通过将文档和查询编码为稀疏向量。在稀疏向量中,每个维度代表一个术语,值表示每个术语在文档中的重要性。
文档中不存在的术语的值为零。由于任何给定文档通常只使用词汇表中所有可能术语的一小部分,因此大多数术语不会出现在文档中。这意味着生成的向量是稀疏的——它们的大部分值为零。例如,在常用于评估信息检索任务的 MS-MARCO 数据集中,虽然有大约 900 万份文档和 100 万个唯一术语,但搜索系统通常会将这个庞大的集合分成更小的部分,以便于管理。
即使在词汇表包含数十万个词条的细分级别,每篇文档通常也只包含不到 100 个词条,这意味着每个向量的 99% 以上的值都是零。这种极度稀疏性对于我们高效存储和处理这些向量的方式具有重要意义。
可以利用这种稀疏模式来优化搜索性能,同时保持准确性。最初为密集向量设计的向量数据库可以适应有效地处理这些稀疏向量。
例如,开源向量数据库厂商 Milvus 刚刚发布了使用 Sparse-BM25 的原生全文搜索支持,Sparse- BM25 是 Elasticsearch 和其他全文搜索系统使用的BM25 算法的稀疏向量实现。Sparse-BM25 通过以下方式解锁基于近似的全文搜索优化:
具有数据修剪的高效检索算法:通过应用基于启发式的修剪来丢弃段索引中具有最低稀疏向量值的文档并忽略搜索查询中的低值稀疏向量,向量数据库可以显著减少索引大小并以最小的质量损失优化性能。
解锁进一步的性能优化:将词频表示为稀疏向量而不是反向索引可以实现更多基于向量的优化。这些包括:
与暴力扫描相比,图形索引可以实现更有效的搜索。
乘积量化(PQ)/标量量化(SQ)进一步减少内存占用。
除了这些优化之外,Sparse-BM25 实现还继承了高性能矢量数据库 Milvus 的几个系统级优势:
高效的底层实现和内存管理:Milvus 的核心向量索引引擎采用 C++ 实现,比 Elasticsearch 等基于 Java 的系统提供更高效的内存管理。与基于 JVM 的方法相比,仅这一点就节省了数 GB 的内存占用。
支持 MMap:与 Elasticsearch 使用 page-cache 在内存和磁盘上存储索引类似,当索引超出可用内存时,Milvus 支持内存映射(MMap)来扩展内存容量。
VectorDBBench 基准测试结果
作者:场长
来源:
https://github.com/zilliztech/VectorDBBench#what-is-vectordbbench
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。