1. Query多样性
- 2019 Query Expansion Techniques for Information Retrieval: a Survey
传统搜索Query的扩展,有基于用户搜索日志挖掘的相似Query,有基于相同召回文档关联的相似Query,也有基于SMT的Query改写方案。那和大模型时代更搭配的自然是改写方案,LLM的加持很大程度上降低了Query改写的难度,也为改写提供了更多的可能性。
1.1 相似语义改写
- Learning to Rewrite Queries,雅虎(2016)
- webcpm: Interactive Web Search for Chinese Long-form Question Answering,清华(2023)
比较早在16年yahoo就探索过query改写的方案,那时还是个seq2seq的LSTM。再就是之前介绍的webcpm也有使用大模型进行query改写来提高内容召回。近期langchain也集成了MultiQueryRetriever的类似功能。逻辑就是把用户的Query改写成多个语义相近的Query,使用多个Query一起进行召回,如下
1.2 双向改写
- Query2doc: Query Expansion with Large Language Models,微软(2023)
- Query Expansion by Prompting Large Language Models, 谷歌(2023)
除此之外还有一种另类Query的改写方案,就是Query2doc中提到的把Query改写成document。论文使用4-shot prompt让LLM先基于query生成一个pseudo-document,然后使用生成的答案来进行相关内容的召回。这种改写方案确实有一些显著的优点
- 缓解短文本query向量化效果较差的问题
- 缓解document长文本向量和query短文本向量存在空间差异的问题
- 提高BM25等离散索引抽取的效果,毕竟文本长了更容易抽出有效关键词
当然缺点也很显著,一个是pseudo-docuemnt可能发生语义漂移,幻觉回答会引入错误的关键词降低召回的准确率,以及解码的耗时较长~
这里Query2Doc反过来写,Doc2Query也是另外一个优化方向,就是给每篇文档都生成N个关联Query(pseudo-query),使用关联Query的embedding向量来表征文档,和真实Query进行相似度计算。langchain的MultiVector Retriever也集成了类似的功能。
谷歌也做了类似的尝试。分别对比了Query2Doc(Q2D), Query2Keyword(Q2E), Query2COT几