大兴黄村网站建设,江苏系统建站怎么用,wordpress标题转英文,企业邮箱密码忘了怎么重置密码作者#xff1a;来自 Elastic Benjamin Trent 通过我们的 ACORN-1 算法实现#xff0c;探索我们对 Apache Lucene 中的 HNSW 向量搜索所做的改进。 多年来#xff0c;Apache Lucene 和 Elasticsearch 一直支持使用 kNN 查询的过滤搜索#xff0c;允许用户检索符合指定元数据…作者来自 Elastic Benjamin Trent 通过我们的 ACORN-1 算法实现探索我们对 Apache Lucene 中的 HNSW 向量搜索所做的改进。 多年来Apache Lucene 和 Elasticsearch 一直支持使用 kNN 查询的过滤搜索允许用户检索符合指定元数据过滤器metadata filter的最近邻居。然而处理半限制性semi-restrictive过滤器时性能总会受到影响。在 Apache Lucene 中我们引入了 ACORN-1 的变体 —— 一种用于过滤 kNN 搜索的新方法可实现高达 5 倍的速度提升且召回率几乎没有下降的搜索速度。
本博客将讨论过滤 HNSW 搜索所面临的挑战解释了为什么随着过滤的增加性能会变慢以及我们如何使用 ACORN-1 算法改进 Apache Lucene 中的 HNSW 向量搜索。 为什么搜索较少的文档实际上速度更慢
与直觉相反过滤文档从而减少候选数量实际上会使 kNN 搜索变得更慢。对于传统的词汇搜索更少的文档意味着更少的评分操作意味着更快的搜索。然而在 HNSW 图中主要成本是识别 k 个最近邻居所需的向量比较次数。在某些过滤器集大小下向量比较的次数可能会显著增加从而降低搜索性能。 这是未过滤图形搜索的一个例子。请注意有大约 6 个向量运算。 由于 Apache Lucene 中的 HNSW 图在构建时并不了解过滤标准因此它纯粹基于向量相似性进行构建。当应用过滤器检索 k 个最近邻居时搜索过程会遍历更多的图。发生这种情况的原因是局部图邻域内的自然最近邻可能会被过滤掉从而需要更深入的探索并增加向量比较的次数。 请注意入口点和第一个有效过滤集之间的过滤 “差距”。在典型的图表中可能会存在这样的差距导致探索过早结束并导致召回率不佳。 我们必须加快速度
由于该图并未考虑过滤条件我们需要对图进行更深入的探索。此外为了避免陷入死胡同我们必须对被过滤掉的节点执行向量比较。那么如何在避免卡住的同时减少向量操作的数量呢这正是Liana Patel等人在他们的 ACORN 论文中所解决的核心问题。
虽然本文讨论了多种图形技术但我们关心的 Apache Lucene 具体算法是他们的 ACORN-1 算法。主要思想是你只探索满足你的过滤的节点。为了补偿增加的稀疏性ACORN-1 将探索范围扩展到邻近区域之外。现在我们不再只是探索直接的邻居还探索每个邻居的邻居。这意味着对于具有 32 个连接的图探索不会只查看最近的 32 个邻居而是会尝试在 32*321024 个扩展邻域中寻找匹配的邻居。
在 Lucene 中我们通过以下方式对 ACORN-1 算法进行了轻微的调整。仅当邻域中超过 10% 的向量被过滤掉时才会探索扩展邻域。此外如果我们已经获得至少 neighborCount * 1.0/(1.0 - neighborFilterRatio) 的分数就不会探索扩展邻域。这使得搜索者能够利用连接更紧密的邻域其中邻域连通性与过滤器高度相关。
我们还注意到无论是在逆相关过滤器例如仅匹配远离查询向量的向量的过滤器还是极其严格的过滤器中仅探索每个邻居的邻域是不够的。当没有找到通过过滤器的有效向量时搜索器还将尝试比邻居的邻居分支得更远。然而为了防止在图中迷失这种额外的探索是有限的。 数字不会说谎
在多个真实世界的数据集中这种新的过滤方法带来了显著的速度提升。以下是对 100 万 Cohere 向量按 0.05% 进行随机过滤的效果 左上方是 “获胜”表明该候选人明显更胜一筹。然而为了达到相同的召回率需要调整搜索参数例如 num_candidates。 为了进一步研究随着更多向量通过过滤器而导致的改进减少我们对 8M Cohere Wiki 文档数据集进行了另一项测试。一般来说无论过滤的向量数量有多少你都希望获得更高的召回率同时访问的向量更少。量化这一点的一个简单方法是检查召回率与访问率的比率。 在这里我们看到新的过滤搜索方法如何实现更好的召回率 vs. 访问率。 显然当达到 60% 左右时改进水平将会下降或者消失。因此在 Lucene 中只有当 40% 以上的向量被过滤掉时才会使用这个新算法。
即使我们的夜间 Lucene 基准测试也因这一变化而取得了令人瞩目的进步。 必须快点
通过元数据过滤 kNN 搜索是实际用例的关键。在 Lucene 10.2 中我们将其速度提高了 5 倍使用了更少的资源并且保持了较高的召回率。我非常高兴能够在未来的 Elasticsearch v9 版本中将它交到用户手中。
Elasticsearch 包含许多新功能可帮助你为你的用例构建最佳的搜索解决方案。深入了解我们的示例笔记本以了解更多信息开始免费云试用或立即在本地机器上试用 Elastic。 原文Filtered HNSW search, fast mode - Elasticsearch Labs