在现代自然语言处理(NLP)领域,检索增强生成(RAG)系统因其能够结合外部知识库和大语言模型的强大生成能力,成为了提升信息检索质量的主流解决方案之一。然而,传统的 RAG 流程存在诸多挑战,尤其是在查询处理阶段,这可能直接影响检索的准确性和效率。为了解决这些问题,Self-querying prompting(自查询提示)应运而生,作为一种优化 RAG 系统查询过程的技术,显著提升了从向量数据库中检索相关信息的精度与质量。
一、背景
在理解 Self-querying prompting 之前,我们首先需要了解传统的 RAG 系统是如何工作的,以及为什么这一技术变得如此重要。
1. 什么是 RAG 系统?
检索增强生成(RAG, Retrieval-Augmented Generation)是一种结合了检索和生成的混合式 NLP 系统。RAG 的优势在于它可以利用外部知识库来帮助大模型回答更复杂的问题。例如,当用户输入问题时,RAG 系统会首先通过检索模块(通常基于向量搜索的方式)从庞大的知识库中获取最相关的文档片段(chunks),然后将这些片段整合到生成模型的输入中,帮助生成模型给出更准确、更符合上下文的回答。

这种方法尤其适合解决知识密集型任务,比如技术支持、客户服务、信息查询等场景。然而,传统的 RAG 流程中直接使用用户的原始查询进行检索可能导致以下问题:
- 查询不具体:用户输入的查询可能过于宽泛或模糊,导致检索结果不够精准。
- 冗余信息:查询中可能含有与检索任务无关的多余信息,干扰检索效果。
- 缺少上下文:部分查询缺乏必要的上下文信息,使得检索效果不佳。
这些问题会导致模型生成的回答不够准确或不够相关。因此,如何优化查询,提升 RAG 系统的检索效率成为了关键。
2. 为什么需要 Self-querying prompting?
传统的查询优化方法通常依赖于用户手动调整查询内容,这对于不熟悉系统运作的用户来说并不友好。Self-querying prompting 的出现解决了这一难题,它通过自动优化查询的方式,使得 RAG 系统能够更智能、更高效地获取到准确的相关信息。
二、Self-querying prompting 的步骤与原理
Self-querying prompting 是通过一系列步骤来优化查询的,每一个步骤都与提高检索结果的精度和效率息息相关。下面我们逐一探讨每个步骤的具体细节及其背后的工作原理。

1. 信息抽取
信息抽取是 Self-querying prompting 的核心步骤之一。在这个阶段,系统利用大语言模型(如 GPT)对用户输入的原始查询进行分析和处理,从中提取出关键的属性和与检索任务相关的信息。
关键属性与非属性类信息:
关键属性(key attributes)是与查询直接相关的内容,通常包括用户的具体需求。例如,当用户查询一款商品时,关键属性可能包括价格、颜色、品牌等;而在查询电影或文章时,关键属性可能是导演、年份、评分等。
非属性类信息指的是那些可能帮助模型更好理解查询的背景信息。这些信息可能不直接属于查询的核心内容,但在上下文理解中扮演着重要角色。例如,用户可能会提供产品描述、使用场景等信息,帮助模型生成更符合预期的查询。
2. 生成过滤条件
在从查询中抽取关键信息后,接下来是生成过滤条件(filtered fields)。这些过滤条件可以被看作是检索系统的'预筛选器',它们帮助减少与用户查询无关的结果。
过滤条件通常基于元数据(metadata),如产品类别、价格区间、用户评分等。通过对这些条件的设定,向量数据库可以在执行查询之前,先排除掉那些不符合基本需求的文档片段,从而提高整体检索的精度。

