什么是关键词检索?为什么它还和向量搜索一起用
关键词检索是什么?它如何按词的出现情况给文档打分,和语义搜索有何不同,以及为什么型号、人名和同义说法需要两路一起召回。
编辑部 ·
关键词检索按查询里的词去匹配文档,再给匹配程度打分。一个词在这篇文档里相对常见、在整个库里又比较少见,这篇文档就会排得更靠前。打分时也会考虑文档长度,避免长文只因为词多就总排第一。BM25 是这类方法里最常用的一种。
它不理解同义词。「退款」和「退钱」对它来说是不同的词。用户换一种说法,正确文档可能完全搜不到。
它和语义搜索怎么配合?
语义搜索把文本变成向量,能找回说法不同但意思接近的内容。关键词检索则擅长型号、人名、错误码和法规编号,这些词必须原样命中。语义相似度高,并不保证编号没有被换成另一个相近的东西。
实际系统常两路一起召回,再合并排序。查询改写可以先把口语补成文档里更可能出现的词,再交给关键词检索。只走其中一路,要么漏掉同义说法,要么把必须精确的词配错。
怎样用得更稳?
保留原词,不要在检索前把编号、日期和产品名改丢。精确匹配和语义匹配的结果分开保留,再看哪条真正回答了问题。评测时同时准备同义问法,以及必须原词命中的问法。
小结
关键词检索负责「词要对得上」,语义检索负责「意思要接近」。两者一起用,比只押一种更稳。