在 searchableAttributes 中添加一个空值属性会改变混合搜索中的 _rankingScore
在混合搜索模式中,在可搜索属性中添加了第二个属性 改变路径排序(words/ keyword vs 矢量Sort/semantic) 给定文档的 RRF 组合“赢”——即使第二个属性在每一个受影响的文档上都是无效的,并且完全没有产生文本匹配.
这使得同一文档的排名分数,相同的查询,相同的语义Ratio,可以显著地跳出(在我们的情况中,从0.837到0.917),仅仅是因为索引设置中存在第二个可搜索属性,而其上没有发生实际匹配.
重写
复制行为的步骤 :
创建带有文档的索引, 例如 : 乔森
{
"id": 329329483434 (英语).
"名":"花花相闪","花相闪".
"候补名":无效,
"德克西普雷萨":"Empresa dedicada a prestar servicios de plomeria...",""(英语:Empresa dedicada a prestar servicios de plomeria)","......
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
配置带有用户提供的嵌入器和混合搜索功能的设置 : 乔森
{
"可搜索属性": ["名称"],,
"行者":{
"语义": {"出自":"取取用","出自":3072}
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
** 混合搜索运行:** 乔森
{
"q":"pl","pl".
"平按:"灵枢":"灵枢"作"灵枢","灵枢"作"灵枢"作"灵枢".
(https://GitHub.com/user-attachments/ files/31153631/embed.plomeros.txt), 互联网档案馆的存檔,存档日期2013-12-22.
"显示RankingScore":是的,
"显示Ranking分数":真实
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
结果: 排名分数:0.837641716003418,通过矢量Sort( 排名分数Details.vectorSort.similarity)解决.
src="https://GitHub.com/user-attachments/assets/8bb8171-bbb4-415c-a941-09997c4e9c3d" (中文(简体) ).
更新设置以添加第二个可搜索属性( 此文档仍然无效) : 乔森
{
"可搜索属性": ["名","候补名"]
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
重运行完全相同的搜索查询(同为q,同为矢量,同为语义Ratio).
结果: 排名分数: 0.9166666666666666, 现在通过单词解决( 排名分数. swords. score: 1.0), 即使替代名在本文档上是无效的, 并且没有任何匹配 。
<img宽="1472"高="746" alt="Image" src="https://GitHub.com/user-attachments/assets/843b391c-7f8e-4c05-b61-66d77b995adc"/.
** 预期行为**
添加在特定文档上为空/空的可搜索属性,不应更改该文档的 排名分数或中标排名路径(关键词对语义),因为不存在额外的匹配信息. RRF聚变结果似乎根据全球关键词搜索结果集的改变而转变(其他文件通过新增属性变得新可匹配),间接地重新排序了与该属性完全不符的文件.
** 影响**
这使得 排名的分数不稳定/不可预测地跨出其他相同的索引配置,这打破了依赖分数阈值的下游逻辑(例如基于 排名的分数和 排名的分数分类),纯粹是因为添加了一个可搜索的字段,独立于它是否对特定文档的相关性有任何实际影响. . . . . . . .
内容来源: meilisearch/meilisearch