Terminal 4.

AI相关

2026/03/15
loading

RAG

什么是 RAG?

RAG (Retrieval-Augmented Generation,检索增强生成)
RAG 是一种技术框架,旨在通过从外部知识库中检索实时、准确的信息,来增强大语言模型(LLM)的生成能力。

  • 核心痛点: LLM 存在知识滞后(训练数据有截止日期)和幻觉(虚构事实)的问题。
  • 解决方案: 既然模型不能记住所有东西,就在它回答之前,先帮它“翻书”查资料。

RAG 的核心工作流程

RAG 的过程通常被概括为 5 个阶段

A. 数据准备 (Ingestion)

  1. 载入 (Load): 读取 PDF、HTML、数据库等原始数据。
  2. 切片 (Chunking): 将长文档切分成小块(Chunks),因为 LLM 的上下文窗口有限。
  3. 向量化 (Embedding): 使用 Embedding 模型将文本转化为数值向量。
  4. 存储 (Store): 将向量和原始文本存入向量数据库(如 Pinecone, Milvus, Chroma)。

B. 检索 (Retrieval)

根据用户提问,计算提问向量与数据库中 Chunks 向量的余弦相似度,召回最相关的 Top-K 个文本块。

C. 增强 (Augmentation)

将用户的问题和检索到的文本块拼接进一个特定的 Prompt 模板中。

D. 生成 (Generation)

将拼接好的 Prompt 发送给 LLM,模型基于提供的参考资料生成回答。

RAG vs. 微调 (Fine-tuning)

特性 RAG 微调 (Fine-tuning)
知识更新 极快(只需更新数据库) 慢(需要重新训练)
外部透明度 高(可以提供引用来源) 低(黑盒,难以追溯)
幻觉控制 强(基于事实参考) 弱(仍可能胡编乱造)
成本 低(主要是推理和存储费) 高(算力成本昂贵)
擅长领域 事实性、实时性任务 学习特定风格、语气或领域术语

RAG 的分类

类别 核心特征 适用场景
Naive 简单的向量匹配 内部文档问答、简单 FAQ
Advanced 引入 Rerank 和查询转换 对准确率要求较高的企业知识库
Modular 组件化、插件化 需要整合网页搜索、数据库等多种数据源
Agentic 自主规划、反思、迭代 复杂的深度调研、逻辑推理任务

Naive RAG (初级 RAG)

这是最基础的流程,遵循传统的“检索-增强-生成”模式。

流程: 将文档切片(Chunking),通过 Embedding 模型存入向量数据库。用户提问时,匹配 Top-K 个相似切片,直接喂给 LLM 生成答案。
局限性: 检索精度低(容易断章取义)、缺乏上下文语义、容易在处理复杂问题时产生幻觉。

高级 RAG 优化技术 (Advanced RAG)

针对 Naive RAG 的痛点,在检索前后增加了精细化的处理。

  • 预检索策略 (Pre-Retrieval): 包含查询重写(Query Rewriting)、子查询分解,以及更科学的分块策略。
    • 查询改写 (Query Rewriting): 使用 LLM 将用户模糊的问题改写得更清晰,便于检索。
    • 多查询生成 (Multi-Query): 针对一个问题生成多个变体,分别检索再合并结果。
  • 检索中优化 (Retrieval Optimization)
    • 混合搜索 (Hybrid Search): 结合语义搜索(向量)和关键词搜索(BM25),解决专有名词搜不到的问题。
    • 句子窗口检索 (Sentence Window Retrieval): 检索单句,但喂给模型该句子周围的上下文。
  • 后检索策略 (Post-Retrieval):

    • 重排序 (Rerank): 对初筛出来的文档进行二次精排,确保最相关的片段排在最前面。
    • Prompt 压缩: 去除冗余信息,节省 Token 并减少噪声。
  • 上下文压缩 (Context Compression): 剔除冗余信息,只保留精华。

Modular RAG (模块化 RAG)

随着技术发展,RAG 不再是线性结构,而变成了可灵活组合的模块。

核心理念: 引入了诸如“搜索模块”(接入 Web 搜索)、“内存模块”(利用用户对话历史)和“对齐模块”等。

特点: 支持跨模态检索,且允许根据不同任务动态调整组件。

Agentic RAG (智能体 RAG)

这是目前最前沿的方向,将 Agent 的决策能力引入 RAG 系统。

自主决策: 模型不再是被动检索,而是像一个研究员一样,自主判断:

“当前的知识够了吗?如果不够,我需要去哪里再搜一下?”

“检索到的资料是否有冲突?我该如何筛选?”

多步骤推理: 能够处理需要跨文档、跨领域推理的复杂长链路问题。

RAG召回

在面试中被问到“RAG 项目如何做召回(Retrieval)”,面试官实际考查的是你对检索质量控制多路召回策略以及工程化落地的理解。

你可以按照以下逻辑由浅入深地回答,展现你从基础选型到高级优化的全栈思路:


向量检索 (Dense Retrieval)

这是 RAG 的核心,利用 Embedding 模型将语义向量化。

  • 模型选型: 提到的模型(如 BGEm3eOpenAI-text-embedding-3),解释为什么选它(长文本支持、多语言能力等)。
  • 切片策略 (Chunking):固定长度分块/语义分块(基于标点或段落)以及 重叠度 (Overlap),防止语义在切割处断裂。(滑动窗口)
  • 索引优化: 提及向量数据库(如 Milvus, Pinecone, FAISS)使用的索引算法(如 HNSW 或 IVF-PQ),以及如何平衡检索速度和召回率。

多路召回 (Multi-way Retrieval)

单一向量检索在处理“精确关键词匹配”(如:产品型号、人名、缩写)时效果很差。多路召回是企业级项目的标配。

  • 关键词召回 (Sparse Retrieval): 使用传统的 BM25 算法。这能弥补向量模型对长尾词、专有名词不敏感的缺陷。
  • 混合检索 (Hybrid Search): 将向量检索和 BM25 结果结合。
  • RRF (Reciprocal Rank Fusion)/线性加权

检索增强 (Pre-Retrieval)

在正式检索前,先对用户的原始提问(Query)动手脚。

  • 查询改写 (Query Rewriting): 利用 LLM 把用户的口语化表达转为更利于检索的专业术语。
  • 查询分解 (Multi-Query): 将复杂问题拆解为多个子问题,分别检索后再汇总。
  • 假设性文档生成 (HyDE): 先让 LLM 根据问题生成一个“假答案”,用这个假答案去库里搜。因为“假答案”与“真文档”在语义空间更接近,召回率往往更高。

重排序 (Rerank)

召回是为了保证“全”,重排是为了保证“准”。

  • Cross-Encoder 架构: 解释为什么检索阶段用向量(快),而重排阶段用 Rerank 模型(慢但极准)。
  • 实战选型: 提到 BGE-Reranker 或 Cohere Rerank。
  • 工程价值: 即使初路召回了 50 个片段,通过 Rerank 选出最相关的 Top-5,能显著减少 LLM 的上下文压力,降低幻觉。

常见的 RAG 技术栈

  • 框架: LangChain, LlamaIndex (目前最流行)。
  • 向量存储: Pinecone, Weaviate, Milvus, FAISS (本地)。
  • Embedding 模型: OpenAI text-embedding-3-small, HuggingFace 上的 BGE 系列。
  • LLM: GPT-4o, Claude 3.5, Llama 3。

RAG 的挑战与评价指标 (RAGas)

评价 RAG 好坏通常看这三个维度(RAG 三元组):

  1. 忠实度 (Faithfulness): 回答是否完全来自检索到的上下文?
  2. 相关性 (Answer Relevance): 回答是否直接解决了用户的问题?
  3. 上下文精度 (Context Precision): 检索回来的内容是否真的有用?

语义漂移

向量空间的“坐标偏移” (Embedding Drift)

MCP & Skills & Agent

MCP (Model Context Protocol)

定位:标准化接口协议 MCP 是由 Anthropic 推出的开放协议,旨在解决 AI 模型与外部数据源(如 GitHub、Google Drive、本地数据库)之间的连接标准。

  • 本质: 一种“通用插座”。
  • 作用: 允许模型通过统一的方式访问不同平台的上下文(Context)和工具,而无需为每个应用编写特定的集成代码。
  • 层级: 基础设施层/通信协议层。

Skills

定位:原子的功能函数 (Functions) Skills 通常指模型能够调用的具体工具(Tool Use/Function Calling)。

  • 本质: 封装好的代码逻辑或 API 调用。
  • 作用: 赋予模型执行特定任务的能力,例如“查询天气”、“发送邮件”或“执行一段 Python 代码”。
  • 特点: 被动的、离散的。模型只有在识别到明确需求时才会触发特定的 Skill。

Agent (智能体)

定位:具备自主性的逻辑系统 Agent 是利用 LLM 作为核心控制器,结合规划、记忆和工具调用来完成复杂目标的系统。

  • 本质: “大脑 + 躯干 + 技能”的组合体。
  • 作用: 给定一个模糊的目标(如“帮我写一份调研报告并同步到飞书”),Agent 会自行规划步骤:
    1. 搜索资料(利用 Skills);
    2. 整理内容(利用模型推理);
    3. 上传文档(利用 MCP 协议连接的存储服务)。
  • 特点: 主动性、多步循环、具备自我修正能力。
CATALOG
  1. 1. RAG
    1. 1.1. 什么是 RAG?
    2. 1.2. RAG 的核心工作流程
      1. 1.2.1. A. 数据准备 (Ingestion)
      2. 1.2.2. B. 检索 (Retrieval)
      3. 1.2.3. C. 增强 (Augmentation)
      4. 1.2.4. D. 生成 (Generation)
    3. 1.3. RAG vs. 微调 (Fine-tuning)
    4. 1.4. RAG 的分类
      1. 1.4.1. Naive RAG (初级 RAG)
      2. 1.4.2. 高级 RAG 优化技术 (Advanced RAG)
      3. 1.4.3. Modular RAG (模块化 RAG)
      4. 1.4.4. Agentic RAG (智能体 RAG)
    5. 1.5. RAG召回
      1. 1.5.1. 向量检索 (Dense Retrieval)
      2. 1.5.2. 多路召回 (Multi-way Retrieval)
      3. 1.5.3. 检索增强 (Pre-Retrieval)
      4. 1.5.4. 重排序 (Rerank)
    6. 1.6. 常见的 RAG 技术栈
    7. 1.7. RAG 的挑战与评价指标 (RAGas)
    8. 1.8. 语义漂移
  2. 2. MCP & Skills & Agent
    1. 2.1. MCP (Model Context Protocol)
    2. 2.2. Skills
    3. 2.3. Agent (智能体)