RAG(检索增强生成)的召回策略主要包括以下方面:
开发:产品视角的大模型RAG应用[heading1]一文看懂RAG:大语言模型落地应用的未来[heading2]RAG中的核心组件RAG的核心组件分为三个部分检索(Retrieval)、增强(Augmentation)、生成(Generation),其分类结构如下图:[heading3]RAG中的检索(Retrieval)[content]检索是检索增强生成(RAG)框架的核心组件之一,它负责从外部数据源或知识库中获取与用户查询相关的信息。检索的质量和效率对于RAG系统的性能至关重要,因为它直接影响生成的文本或回答的准确性和相关性。以下是与检索相关的一些关键概念和技术:检索策略:RAG系统需要确定何时进行检索以及如何选择要检索的信息。检索策略可以根据任务和上下文进行调整,以提高系统的效率和性能。检索粒度:检索可以以不同的粒度进行,从单个标记或实体到更大的文本块或知识图。选择适当的检索粒度取决于任务的要求和数据的结构。检索方法:有多种检索方法可供选择,包括基于关键字的检索、实体检索、自然语言查询和知识图检索等。每种方法都有其适用的情境和优势。检索效率:高效的检索是关键因素之一,尤其是在实时应用中。优化检索过程以降低延迟和资源消耗是重要任务之一。外部数据源:RAG系统可以从各种外部数据源中进行检索,包括互联网上的文档、知识库、数据库和API。选择合适的数据源对于获取准确和丰富的信息至关重要。在RAG框架中,检索与生成和增强技术密切合作,以生成最终的文本或回答。因此,检索的质量和效率对于整个RAG系统的性能和效果至关重要。
随着RAG的发展,逐步超越被动的检索的方式,出现了自适应的检索(也被称作主动检索),这一方面也是受益于LLM的强大能力。在核心思想上与LLM Agent相似。RAG系统可以主动判断的检索时机,以及判断时候结束整个流程,输出最终的结果。根据判断的依据,又可以分成和Prompt-base和Tuning-basePrompt-base.通过Prompt Engineering的方式让LLM对流程进行控制。一个典型的实现案例是FLARE。它的核心思想是LM应该仅在缺乏所需知识时进行检索,以避免被动检索增强的LM中出现不必要或不适当的检索。FLARE迭代地生成下一个临时句子,并检查是否包含低概率标记。如果是这样,系统将检索相关文档并重新生成句子。Tuning-base.对LLM进行微调使其生成特殊的token,以此来触发检索或生成。这种思想可以追溯到Toolformer中,通过生成特俗的内容,来辅助调用工具。在RAG系统中则是用于控制检索和生成两个步骤。一个典型的案例是Self-RAG。具体而言,1.给定一个输入提示,和前面的生成结果,首先预测特殊token“Retrieve"判断是否通过检索段落对继续的生成进行增强是有帮助。2.如果有帮助,调用检索模型。模型会生成一个critique token来评估检索段的相关性,下一个响应片段,和一个批判令牌来评估响应片段中的信息是否得到了检索段的支持.3.最后,一个新的批判令牌评估响应的整体效用。模型会并行处理这些内容,并选择最佳结果作为最终的输出。
论文指出:“答案所在的文档虽从数据库中检索出来,但并未包含在生成答案的上下文中。”这种情况通常发生在数据库返回众多文档,并需通过一个整合过程来选取答案的场景。为了解决上述问题,除了增加排序器和对其进行微调外,我们还可以尝试以下建议的解决方案:[heading3]调整检索策略[content]LlamaIndex提供了多种从基础到高级的检索策略,以确保我们在RAG流程中能够准确地检索信息。详细的检索策略列表请参见[检索器指南](https://docs.llamaindex.ai/en/stable/module_guides/querying/retriever/retrievers.html),其中包括:基础检索:针对每个索引执行高级检索与搜索自动检索知识图谱检索组合/层级检索等等!这一系列的策略为我们提供了灵活性和多样性,以适应不同的检索需求和场景,从而提高检索的精确度和有效性。[heading3]微调嵌入技术[content]如果您在使用开源嵌入模型,对其进行微调是提高检索准确度的有效手段。LlamaIndex提供了一份详细的微调指南([查看微调指南](https://docs.llamaindex.ai/en/stable/examples/finetuning/embeddings/finetune_embedding.html)),展示了如何微调开源嵌入模型,并证明了这一过程能够在多个评估指标上持续提升性能。下方是一个示例代码片段,介绍了如何创建微调引擎、执行微调过程以及获取微调后的模型: