You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Solr 9中结合过滤查询高效获取相似度分数?

Solr 9 向量相似度计算相关问题与解答

需求场景

我正在使用Solr 9进行查询-文档的最优相似度计算,需求为先筛选特定字段值的文档,再对匹配到的所有文档计算相似度。具体场景为:文档包含embedding(向量字段)和id字段,我只想获取id=1、2、3的文档,给定查询向量后,返回每个目标文档与该查询向量的相似度分数。

尝试的方案

方案1:fq + knn 查询

使用fq筛选指定id,q字段采用knn查询,但受限于Solr当前机制,无法返回所有目标文档。官方给出的限制说明如下:

When using knn in re-ranking pay attention to the topK parameter.
The second pass score(deriving from knn) is calculated only if the document d from the first pass is within the k-nearest neighbors(in the whole index) of the target vector to search.
This means the second pass knn is executed on the whole index anyway, which is a current limitation.

方案2:内存中计算相似度

使用fq筛选指定id,返回结果包含embedding字段,之后在本地内存中计算相似度。但存在网络延迟问题,因为返回的embeddings数据量较大,导致Solr响应体积过大。

问题

  1. 上述官方提到的KNN重排限制是否会被修复?如果会,预计什么时候解决?
  2. 有没有办法压缩Solr的响应内容,提升获取速度?

回答

问题1:KNN重排限制的修复情况

目前Solr官方尚未公开明确的修复时间表。该限制源于当前KNN重排的设计逻辑:第二阶段的KNN计算仍会遍历整个索引,仅对第一阶段结果中属于全局TopK的文档计算相似度。若需追踪进度,可关注Solr官方的issue跟踪系统或社区讨论,但截至目前没有确定的发布版本或时间点。

问题2:压缩Solr响应的可行方法

有多种方式可压缩Solr响应、降低传输体积:

  • 启用HTTP压缩:在Solr的Jetty配置中开启Gzip或Deflate压缩,现代客户端大多支持自动解压,能大幅缩减JSON/XML格式的响应体积。
  • 精简返回字段:仅返回id和必要字段,避免冗余数据;若采用方案2,仅返回id与embedding字段即可。
  • 二进制格式传输向量:若客户端支持,可配置Solr将embedding字段以二进制格式(如Float32数组的二进制形式)返回,相比JSON序列化的字符串,体积可缩小数倍。
  • 分页查询(按需):若后续目标文档数量增加,可通过分页获取数据,减少单次响应的体积。

内容的提问来源于stack exchange,提问作者Noam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:30:46