Skip to content

# AI 实战系列:检索增强生成 (RAG) 从入门到精通

课程说明:检索增强生成 (Retrieval Augmented Generation, RAG) 是一种优化大语言模型 (LLM) 输出的技术。通过将外部可靠的知识库与模型生成能力相结合,RAG 解决了模型处理超长文档、数据过时以及事实幻觉等核心痛点。


第一课:为什么需要 RAG?

1.1 处理超长文档的困境

当您需要分析数百页的财务报告或庞大的技术文档时,直接将所有文本塞进提示词(Prompt Stuffing)会面临以下限制:

  • Token 限制:文档长度可能超出模型的上下文窗口。
  • 性能下降:上下文越长,模型捕获关键细节的能力往往会减弱。
  • 成本与延迟:过长的提示词会导致推理成本飙升且响应变慢。

1.2 RAG 的核心思路

RAG 不再尝试一次性处理所有信息,而是采用“按需检索”的模式:

  1. 预处理:将海量文档切分成更小的块(Chunks)。
  2. 检索:当用户提问时,仅找出与问题最相关的几个块。
  3. 增强生成:将提问与这些相关块一起交给 AI,让它基于事实回答。

第二课:文档切分策略 (Chunking Strategies)

切分质量直接决定了 RAG 系统的上限。如果切分不当(如将一句话从中间切断),AI 将无法获得完整的上下文。

2.1 基于大小的切分 (Size-Based)

最简单的方法,按照固定字符数切割。

  • 优点:实现简单,通用于任何格式。
  • 改进:引入重叠 (Overlap)。在相邻块之间保留一部分重复内容,确保语义的连续性。

2.2 基于结构的切分 (Structure-Based)

根据文档的自然结构(如 Markdown 的标题 #、段落 \n\n)进行切分。

  • 优点:块的语义最完整,逻辑清晰。

2.3 基于语义的切分 (Semantic-Based)

利用自然语言处理技术,判断句子间的语义相关性,将意思相近的句子组合在一起。

  • 优点:最精准,但计算成本最高。

第三课:语义搜索与向量化 (Embeddings)

3.1 什么是文本嵌入 (Text Embeddings)?

嵌入是将文本转换成一串数字(向量)的过程。这串数字代表了文本的“语义内涵”。

  • 数值化语义:意思相近的文本,在向量空间中的距离也更近。
  • 模型推荐:目前推荐使用 VoyageAI 等专业的嵌入模型服务。

3.2 向量数据库 (Vector Database)

专门用于存储和检索数值向量的数据库。它通过数学计算(如余弦相似度)快速找出与用户问题最匹配的文档块。


第四课:混合搜索 (Hybrid Search) —— 语义与词频的结合

单纯依靠语义搜索有时会漏掉特定术语(如工单 ID INC-2023-Q4-011)。

4.1 BM25 算法 (词频搜索)

传统的关键词搜索算法。它会对稀有的、独特的词给予更高的权重。

4.2 混合检索 (Retriever)

将**语义检索 (Vector)词频检索 (BM25)**并行运行,然后使用 RRF (Reciprocal Rank Fusion, 倒数排名融合) 算法合并结果。这能兼顾“意思相近”和“词汇匹配”。


第五课:进阶优化:重排序 (Re-ranking)

即使混合检索找到了相关块,排名也不一定百分之百准确。

  • 核心逻辑:先用快速检索找出前 N 个候选块,再调用 Claude 等强大的模型对这 N 个块进行精准评分和重新排序。
  • 效率技巧:在重排时给文档分配 ID,让模型只返回 ID 序列,避免重复输出全文。

第六课:上下文检索优化 (Contextual Retrieval)

核心痛点:独立的文本块往往丢失了原始文档的背景信息(例如:这个段落属于哪一章?讨论的是哪个项目?)。

6.1 做法

在存入数据库前,让 AI 为每个块写一段简短的“背景说明”并拼接在一起。

  • 做法示例:原本只是“该项目由于资金问题停工”,优化后变为“【背景:这是关于 2024 年度基础设施建设报告的总结部分】该项目由于资金问题停工”。

知识自测 (Quiz)

Q1: BM25 算法是如何对搜索词进行优先级排序的? A. 只考虑每句话的第一个词 B. 优先考虑长单词 C. 给所有词分配相同的权重 D. 对在文档中出现频率较低(更具体、罕见)的词给予更高的重要性权重

Q2: 语义搜索 (Semantic Search) 与词频搜索 (Lexical Search) 的主要区别是什么? A. 语义搜索更快 B. 词频搜索需要更多算力 C. 语义搜索仅适用于短文档 D. 语义搜索使用嵌入向量理解含义,而词频搜索寻找精确的词汇匹配

Q3: 向量数据库的主要优化方向是什么? A. 压缩大文件以节省空间 B. 备份原始文档 C. 存储传统的传统关系型表格 D. 存储、比较和检索数值型嵌入向量 (Embeddings)

Q4: 什么是检索增强生成 (RAG)? A. 一种生成随机文本输出的系统 B. 一种将大文档切块并在回答问题时仅检索相关片段的技术 C. 一种提高 AI 模型处理速度的方法 D. 一种从头开始训练大语言模型的方法

Q5: 上下文检索 (Contextual Retrieval) 解决的是什么问题? A. 文档太小没有用 B. 搜索结果返回太慢 C. 文本块在切分后丢失了与其所在文档背景的联系 D. 嵌入模型太贵

Q6: 什么是文本嵌入 (Text Embedding)? A. 文档要点的摘要 B. 文本语义特征的数值表示 C. 存储在数据库中的原始文本 D. 文本文件的压缩版本

Q7: 在 RAG 系统中,倒数排名融合 (RRF) 的作用是什么? A. 将文档切分成块 B. 根据检索到的文本生成回答 C. 合并并对来自多种检索方法的结果进行重新排名 D. 将文本转换为嵌入向量

Q8: 什么时候“基于结构的切分”效果最好? A. 文档非常短时 B. 面对没有格式的纯文本文件时 C. 面对格式良好、有清晰标题和段落层次的文档时 D. 当您追求最快的处理速度时


测验答案 (Answers)

  1. D
  2. D
  3. D
  4. B
  5. C
  6. B
  7. C
  8. C

基于 VitePress 构建