Query Rewrite —— 基于大模型的query扩展改写,综合考虑上下文信息(人大论文)

在session上下文中,捕获用户的搜索意图,是一件较为复杂和困难的事情。

一起看一下人大的这篇论文 Large Language Models Know Your Contextual Search Intent: A Prompting Framework for Conversational Search

会话中的搜索意图和query改写

人大的论文中提出了一个简单而有效的提示框架,称为LLM4CS,以利用LLM作为搜索意图解释器来促进会话搜索。具体来说,我们首先提示LLM在多个视角下生成较短的查询重写和较长的假设响应,然后将这些生成的内容聚合成一个集成的表示,以稳健地表示用户的真实搜索意图。在我们的框架下,我们提出三种具体的提示方法和聚合方法,并进行广泛的评估三个广泛使用的会话搜索基准,包括CAsT-19(道尔顿等人,2020),CAsT-20(道尔顿等人,2021),和CAsT-21(道尔顿等人,2022)),全面调查llm对话搜索的有效性。

论文核心内容

论文中,主要解决的是从上下文的会话信息中,提取信息,已补充和改写最新的query。解决上下文的关联问题。

论文中提到了三种重写的方式,如下图所示。

  • 第一种REW是直接把历史的qa和当前query一起送给模型,然后让模型给出重写后的query。
  • 第二种RTR是把历史的qa和当前query一起送给模型,然后让模型给出重写后的query。并给出一个回答。把回答的内容和和重写后的query一起构造成新的query。这里论文中虽然没有提到,但是在谷歌和微软的相关论文中,由于生成的答案通常比重写后的query要长,索引要把重写后的query重复拼接5次,然后再拼接上回答的内容,最后构成最终的query。
  • 第三种RAR是把历史的qa和当前query一起送给模型,然后让模型给出重写后的query。并给出一个回答。这里可以生成多个问题和多个回答。也就是可以把复杂的问题进行拆解。

额外地生成假设的响应和正确地聚合多个生成的结果对于提高搜索性能是至关重要的!

论文中提及的query重写方法如何使用?

最简单的方法是,将会话中的每一个qa对都当做内容,和当前的query一起送给LLM。并给LLM一个提示,让LLM根据这些内容去重写query。

Prompt指令如下,让LLM知道是从上下文中,获取信息。

For an information-seeking dialog, please help reformulate the question into rewrite that 
can fully express the user‘s information needs without the need of context, but also 
generate an informative response to answer the question.

给LLM几个重写的示例
示例中包含了query,和重写的原因,以及重写后的query,最后是LLM针对query的一个简短的回答。

I will give you several example multi-turn dialogs, where each turn contains a question, a
response, and a rewrite. The rewrite part begins with a sentence explaining the reason for 
the rewrite.
Example #1:
Question: What should I consider when buying a phone?
Rewrite: This is the first turn. So the question should be rewritten as: What should I 
consider when buying a phone?
Response: The design of the phone and the overall …
Question: Cool. Which one would you recommend?
Rewrite: Based on Turn 1, you are inquiring about what should be considered when 
buying a phone. So the question should be rewritten as: Cool. Which smartphone would 
you recommend for me?
Response: Just because a phone has everything…
…
Example #2:

 输入如下:

Your Task (only questions and responses are given):
Context:
Question: What was the basis of the Watergate scandal?
Response: ...
Question: …
Response: …
…
Current Question: So what happened to Nixon?
Rewrite: So what happened to Nixon after the events of the Watergate scandal?
(Now, you should give me the rewrite and an informative response of the **Current 
Question** based on the **Context**. The output format should always be: Rewrite: 
$Reason. So the question should be rewritten as: $Rewrite\nResponse: $Response. Go 
ahead!)

模型输入如下

Rewrite: Based on all previous turns, Nixon was badly involved in the Watergate scandal. 
So the question should be rewritten as: So what happened to Nixon after the events of the 
Watergate scandal?
Response: With the mounting evidence and loss…

会话数据

C t = (q 1 , r 1 , ..., q t 1 , r t 1
一般回话都是由N个 query和响应构成的。根据模型的可输入长度的限制,则可以根据滑动窗口的方式,选取最邻近的一些query响应对。

思维链

思维链(CoT)(Wei et al.,2020)诱导大型语言模型将一个推理任务分解为多个中间步骤,从而释放它们更强的推理能力。在这项工作中,我们还研究了整合推理用户真实搜索意图的思维链是否可以提高重写和响应生成的质量。

意图聚合

将LLM多次的生成的Rewrite query 和 假设性回答进行聚合
在一个会话中,可能包含了多次问答。每次都有一个Rewrite query 和 假设性回答。我们可以称做qa对。
第一种意图聚合方式: MaxProb
对于  REW ,没有假设性回答。所以可以直接用生成的Rewrite query。对于 RTR和RAR,则使用(q的向量 + 假设性回答的向量)/2
 
第二种意图聚合方式: Self-Consistency (SC)
对于  REW ,没有假设性回答。先算所有生成的Rewrite query 的平均值(叫做中心向量)。然后再算每一个Rewrite query和中心向量的点积。
第三种意图聚合方式:使用平均值 Mean
对于  REW ,没有假设性回答。所以可以直接用生成的Rewrite query。注意这里是多轮的query的平均值。最后用平均值,作为搜索意图,去进行搜索。

效果如何

首先,RAR和RTR提示方法的性能明显优于REW提示,这表明生成的假设响应可以有效地补充较短的查询重写,从而提高检索性能。然而,即使是与现有基线相比,即使是简单的REW提示也可以实现相当有竞争力的性能,特别是在更具挑战性的CAsT-20和CAsT-21数据集上,它显示了显著的优势(例如,CAsT-20上0.380vs.0.350,CAsT-21上0.465vs.0.385)。这些积极的结果进一步突出了利用LLM进行对话搜索的显著优势。

其次,在聚合方法方面,Mean和SC始终优于MaxProb。这些结果表明,仅仅依赖于语言模型的顶级预测可能不能提供足够的可靠性。相反,利用多个结果的集体强度被证明是一个更好的选择。此外,我们观察到,平均聚合方法,它将所有生成的内容融合到最终的搜索意图向量中(公式11),并不始终优于SC(例如,在CAsT-20上),它实际上只融合了一个重写和一个响应。

 

再看一下思维链CoT对结果的影响

可以明显看到,不管是在哪种意图聚合方式下,启用思维链,几乎总是有正向的效果。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值