什么是查询扩展?为什么检索前要补上相关的词
查询扩展是什么?它如何在检索前补上同义词和相关词,和查询改写有何不同,以及扩展过度时为什么会把不相关文档也召回来。
编辑部 ·
查询扩展(Query Expansion)是在检索之前,给原来的问题补上相关的词,让更多可能有用的文档能被找到。用户说「退钱」,文档里写的是「退款」或「原路退回」。只拿原词去搜,这些文档可能进不了候选。
补上的词可以来自同义词表、用户历史,也可以由模型根据原问题生成。扩展的目的是提高召回,不是把问题改成另一件事。
它和查询改写有什么不同?
查询改写通常是把一句不完整的话改写成可以独立理解的问题,例如把「那免费吗」补成「改签是否免费」。查询扩展则是在问题意思不变的前提下,增加可能出现在文档里的说法。
两步可以先后使用:先改写,让问题完整;再扩展,让关键词检索和混合检索更容易命中不同写法。
怎样避免补偏?
扩展词必须和原问题有关。补得太多,检索会把只是沾边的文档也拉进来。保留原词,并限制扩展词的数量。对型号、人名、法规编号不要用近义词替换。评测时同时看召回有没有提高,以及排在前面的结果有没有变杂。
小结
查询扩展用来补上文档里可能出现的另一种说法。它能减少漏检,但补进去的词仍然要受原问题约束。