RAG 探索解析

R(检索- Retrieval)

检索源(Source)

RAG 依靠外部知识来增强 LLMs,而检索源的类型和检索单元的粒度都会影响最终的生成结果。

数据结构

  • 非结构化数据,如文本,是使用最广泛的检索源,主要是从语料库中收集(或者百科)。
  • 半结构化数据,通常是指包含文本和表格信息组合的数据,如 PDF。
  • 结构化数据,如知识图谱(KGs),通常经过验证,可以提供更精确的信息。Knowledge pt 生成 KB 搜索查询并将知识存储在个性化的基础上,增强 RAG 模型的知识丰富性。

除了从原始的外部来源进行检索之外,也可以 LLMs 自身产生的内容进行检索和增强。

检索粒度

粗粒度检索单元理论上可以为问题提供更多的相关信息,但它们也可能包含冗余内容,这可能会分散下游任务中检索器和语言模型的注意力;细粒度检索单元粒度虽然精准划分,但增加了检索的负担,并且不能保证语义完整性和满足所需的知识。在推理过程中选择合适的检索粒度是提高密集检索器的检索和下游任务性能的一个简单而有效的策略。

检索优化(Indexing Optimization)

在索引阶段,文档将被处理,分段,并转换成嵌入,存储在矢量数据库中。索引构造的质量决定了在检索阶段是否能够获得正确的上下文。

分块策略

最常用的方法是将文档按固定数量的token(例如,100、256、512)分割成块。更大的块可以捕获更多的上下文,但它们也会产生更多的噪音,需要更长的处理时间和更高的成本。虽然较小的块可能无法完全传达必要的上下文,但它们的噪音确实较小。然而,语块导致句子中的截断,促使递归分割和滑动窗口方法的优化,通过跨多个检索过程合并全局相关信息实现分层检索。尽管如此,这些方法仍然不能在语义完整性和上下文长度之间达到平衡。因此,可以使用 Small2Big 方法,其中句子(小)作为检索单元,前面和后面的句子(大)作为LLMs的上下文。

元数据附件

chunks可以丰富元数据信息,如页码,文件名,作者,类别时间戳。检索可以基于这些元数据进行过滤,限制检索范围。在检索过程中为文档时间戳分配不同的权重可以实现时间感知的 RAG,确保知识的新鲜性和避免过时的信息。

除了从原始文档中提取元数据之外,还可以人工构造元数据。例如,添加段落摘要,以及引入假设性问题。这种方法也被称为 Reverse HyDE。

结构检索

提高信息检索的一个有效方法是为文档建立一个层次结构。通过构建结构,RAG 系统可以加快相关数据的检索和处理。

  • 层次索引:文件是按照父子关系排列的,有链接到它们的块。数据汇总存储在每个节点上,帮助快速遍历数据,帮助 RAG 系统决定提取哪些块。这种方法也可以减轻块提取问题造成的错觉。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

1

LLM

我们将对比确定性编程与概率编程的根本差异,理解从“编写逻辑”到“设计引导”的范式转移。同时,将API设计、参数调试等传统研发直觉,快速映射到提示词工程与生成参数驯化上,让您在AI时代继续发挥工程优势。
2

Transformer

我们将建立从软件模块到模型组件的认知桥梁,把Transformer理解为一个新的“运行时环境”。目标是让您能像分析JVM GC或线程调度一样,洞察注意力机制、Token生成等核心过程的资源消耗与性能瓶颈。
3

Prompt Engineering

我们将建立从软件模块到模型组件的认知桥梁,把Transformer理解为一个新的“运行时环境”。目标是让您能像分析JVM GC或线程调度一样,洞察注意力机制、Token生成等核心过程的资源消耗与性能瓶颈。
4

Fine-tuning

我们将建立清晰的决策框架,像在“使用开源库”和“自研核心组件”之间做权衡一样,在提示工程与模型微调之间做出成本最优解。深入LoRA等关键技术,理解其如同软件工程中的“依赖注入”般高效参数更新原理。
5

RAG

我们将对比传统数据库查询与向量检索的核心差异,构建混合检索的新心智模型。深入文本分块、Embedding选型等生产细节,让RAG系统从“能跑”到“好用”,解决准确性、幻觉治理等实际工程挑战。
6

Agent

我们将智能体架构理解为“一个高度自治的微服务集群”,其工具调用如同服务间API调用,记忆体系如同分布式缓存与数据库。在此基础上,设计能够规划、执行并从容应对失败的鲁棒性AI系统。