solr 中基于向量的搜索

问题描述 投票:0回答:3

我正在尝试在 solr 中实现基于密集向量的搜索(当前使用版本 8.5.2)。我的要求是

  1. 将 solr 中每个文档的密集向量表示存储在名为 vectorForm 的字段中。
  2. 现在,当用户发出一些查询时,我也会将该查询转换为某种密集向量表示形式,现在我想从 solr 中获取查询向量表示形式和 vectorForm 字段之间具有最高 dotProduct 值的前 100 个文档(为每个文档存储)上面)在 solr 中。

我对此有几个问题是

  1. 应使用什么字段类型来定义 vectorForm 字段(具有多值整数的 docValues 在这里效果最好)?
  2. 如何有效地进行上述基于向量的检索? (请记住,延迟应尽可能低)

我读到 solr 有 dotProduct 和 cosinSimilarity 函数,但无法理解在我的情况下如何使用它,如果这就是解决方案,那么任何指向示例实现的链接都会有所帮助。

任何帮助或指导对我来说都是巨大的帮助。

vector solr information-retrieval
3个回答
5
投票

神经搜索已随 Apache Solr 9.0 一起发布。

DenseVectorField提供了索引和搜索浮点元素的稠密向量的可能性,定义参数,例如要传入的稠密向量的维度、要使用的相似度函数、要使用的knn算法等...

目前仍然需要在外部生成向量,然后将获得的嵌入推入Solr中。

在查询时,您可以使用 k-近邻 (knn) 查询解析器,它允许根据给定字段中的索引密集向量查找查询向量的 k-最近文档。

这是我们的端到端矢量搜索教程,绝对可以帮助您了解如何利用这个新的 Solr 功能来改善用户搜索体验 https://sease.io/2023/01/apache-solr-neural-search-tutorial.html


0
投票

从 Solr 9.0 开始,您可以使用“密集向量搜索”。

https://solr.apache.org/guide/solr/9_0/query-guide/dense-vector-search.html


0
投票

它在 Solr 的任何版本中都不起作用如何生成

© www.soinside.com 2019 - 2024. All rights reserved.