向量搜索技术

UDB-SX 将向量搜索实现为 k-最近邻 搜索。k-最近邻搜索在一个向量索引中,找出与查询点最接近的 k 个邻居。为了确定这些邻居,您可以指定用于测量点之间距离的空间(距离函数)。

UDB-SX 支持三种不同的方法从向量索引中获取 k 个最近邻:

  • 近似搜索(近似 k-NN):返回与查询向量近似的最近邻。通常,近似搜索算法会牺牲索引速度和搜索准确性,以换取性能优势,例如更低的延迟、更小的内存占用和更具扩展性的搜索。对于大多数使用场景,近似搜索是最佳选择。

  • 精确搜索:对向量字段进行暴力、精确的 k-NN 搜索。UDB-SX 支持以下类型的精确搜索:

    • 使用脚本评分的精确搜索:使用评分脚本,您可以在执行最近邻搜索之前对索引应用过滤器。

    • Painless 扩展:将距离函数作为 Painless 扩展添加,您可以在更复杂的组合中使用。您可以使用此方法对索引执行暴力、精确的向量搜索,该方法也支持预过滤。

一般来说,对于较大的数据集,您应该选择 ANN 方法,因为它的扩展性要好得多。对于较小的数据集,如果您可能需要应用过滤器,则应选择自定义评分方法。如果您有更复杂的使用场景,需要将距离函数作为评分方法的一部分,则应使用 Painless 脚本方法。

近似搜索

UDB-SX 支持多种后端算法(方法)和实现这些算法的库(引擎)。它会根据选择的模式和可用内存自动选择最佳配置。更多信息,请参阅 方法与引擎

使用稀疏向量

神经稀疏搜索 通过使用稀疏嵌入模型和倒排索引,提供了与 BM25 相似的性能,是稠密向量搜索的一种高效替代方案。与需要大量内存和 CPU 资源的稠密向量方法不同,稀疏搜索会创建一个词元-权重对列表,并将它们存储在排名特征索引中。这种方法结合了传统搜索的效率和神经网络的语义理解能力。UDB-SX 支持通过摄入管道自动生成嵌入,也支持直接摄入稀疏向量。更多信息,请参阅 神经稀疏搜索

结合多种搜索技术

混合搜索 通过在 UDB-SX 中结合多种搜索技术来提升搜索的相关性。它集成了传统的基于关键词的搜索和基于向量的语义搜索。通过一个可配置的搜索管道,混合搜索可以对来自不同搜索方法的评分进行归一化处理并加以组合,从而提供统一且相关的结果。这种方法对于同时需要语义理解和精确匹配的复杂查询特别有效。搜索管道还可以通过后过滤操作和聚合进行进一步定制,以满足特定的搜索需求。更多信息,请参阅 混合搜索