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

如何在Apache Solr混合搜索中获取词法与向量搜索的单独得分

解决方法

要在单个请求中同时获取词法搜索得分、向量搜索得分以及最终总分,只需修改fl参数,利用Solr的函数查询能力直接返回这两个单独得分:

  1. 修改fl字段配置
    在solr_query的fl参数中,添加两个自定义计算字段,分别调用你已经定义好的normalisedLexicalQuery和vectorQuery来获取单独得分:
"fl": "text, score, lexical_score:query($normalisedLexicalQuery), vector_score:query($vectorQuery)",
  • lexical_score:返回归一化到0-1区间的词法搜索得分
  • vector_score:返回KNN向量搜索的余弦相似度得分(文档未命中向量搜索时会返回0)
  • score:保留原有的最终合并得分
  1. 完整修改后的代码片段
def hybrid_search(query, top_k=10):
    embedding = np.array(embed([query]), dtype=np.float32)
    embedding = list(embedding[0])
    lxq= rf"""{{!type=edismax 
                qf='text'
                q.op=OR
                tie=0.1
                bq=''
                bf=''
                boost=''
            }}({query})"""
    solr_query = {"params": {
        "q": "{!bool filter=$retrievalStage must=$rankingStage}",
        "rankingStage": "{!func}sum(query($normalisedLexicalQuery),query($vectorQuery))",
        "retrievalStage":"{!bool should=$lexicalQuery should=$vectorQuery}", # Union
        "normalisedLexicalQuery": "{!func}scale(query($lexicalQuery),0,1)",
        "lexicalQuery": lxq,
        "vectorQuery": f"{{!knn f=all_v512 topK={top_k}}}{embedding}",
        # 关键修改:添加两个单独得分的返回字段
        "fl": "text, score, lexical_score:query($normalisedLexicalQuery), vector_score:query($vectorQuery)",
        "rows": top_k,
        "fq": [""],
        "rq": "{!rerank reRankQuery=$rqq reRankDocs=100 reRankWeight=3}",
        "rqq": "{!frange l=$cutoff}query($rankingStage)",
        "sort": "score desc",
    }}
    response = requests.post(SOLR_URL, headers=HEADERS, json=solr_query)
    response = response.json()
    return response
  1. 返回结果说明
    请求返回的每个文档会包含以下字段:
  • text:文档文本内容
  • score:词法得分+向量得分的最终合并分
  • lexical_score:单独的归一化词法搜索得分(范围0-1)
  • vector_score:单独的向量搜索余弦相似度得分(范围0-1,未命中时为0)

这样你就能在一次请求中同时获取三个得分,明确两种搜索的贡献占比,无需发送两次独立请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:20:05