← GEO Tutorial Series
AI TechnicalP2-02

RAG 机制拆解:AI 搜索引擎怎么找到你的内容并生成回答

2026-04-01·37 min read

RAG 机制拆解:AI 搜索引擎怎么找到你的内容并生成回答

如果做 GEO 只能理解一个技术概念,那么我选 RAG。

RAG(Retrieval-Augmented Generation,检索增强生成)是几乎所有 AI 搜索引擎的核心架构。Perplexity 用它,ChatGPT Search 用它,Google AI Overviews 也用它。你的内容能不能被 AI 引用,取决于你的内容能不能在 RAG 管道的每个环节「活下来」——从被爬虫抓取、被切成小块、被转换成向量、被检索命中、被精排选中,一直到最终进入 LLM 的上下文窗口并被写进回答。

这篇文章我会把 RAG 的完整流程拆开揉碎,每个环节都说清楚两件事:「技术上发生了什么」和「这对你的内容策略意味着什么」。不需要写代码,也不需要懂高数。读完之后你会明白为什么有些内容就是比其他内容更容易被 AI 引用——GEO 不是玄学,背后有完整的逻辑和架构。

读完你会搞清楚这几件事:

  1. RAG 的本质——为什么 LLM 需要"开卷考试"而不是靠"记忆"答题
  2. 离线阶段四步——你的内容怎么被爬取、切块、向量化、存入 AI 的索引库
  3. 在线检索:粗筛精排——AI 怎么从几十亿个内容块里选出最相关的那几个
  4. 在线生成:引用是怎么产生的——LLM 怎么基于检索内容生成回答并标注来源
  5. 各平台 RAG 差异——为什么同一内容在 Perplexity 被引用、在 ChatGPT 却没有
  6. 从 RAG系统 反推出的 GEO 行动清单——每个环节对应一条可执行的优化策略

这篇文章是 AI 技术系列的核心支柱。后续关于向量嵌入内容切块混合搜索重排序与信任信号的文章都会在这个框架上展开。LLM 的基础知识可以先看《大语言模型怎么生成答案》;GEO 整体框架见《GEO 是什么》


RAG 是什么:一个类比就够了

LLM 有一个根本问题:它的知识是固定的。训练截止之后发生的事情,它不知道;训练数据里没覆盖到的冷门细节,它也不知道。但它不会老实告诉你"我不知道"——它会继续预测下一个 token,生成一段听起来很合理但可能完全错误的内容。这就是幻觉(Hallucination)的根源。

为了解决这个问题,RAG应运而生。RAG 的解决思路非常直白:别让 LLM 只靠记忆答题,给它参考资料。

打个比方。闭卷考试,学生只能靠脑子里记住的东西——记得的就对,记不清的就编。开卷考试不一样,学生可以翻参考书——即使碰到没复习过的题,只要参考书里有,就能找到靠谱的答案。

RAG 就是让 LLM 从闭卷考试变成开卷考试的机制。

把"检索增强生成"这六个字拆开:

  • 检索(Retrieval):从外部知识库——大部分情况下就是互联网——里找到跟用户问题相关的内容
  • 增强(Augmented):把找到的内容塞进 LLM 的上下文窗口,作为"参考资料"
  • 生成(Generation):LLM 基于参考资料生成回答,而不是纯靠"记忆"

RAG 的概念由 Meta AI 的研究团队在 2020 年正式提出(Lewis et al., 2020),论文标题就叫 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks。之后几乎所有 AI 搜索产品都采用了这个架构。Perplexity 的 CEO Aravind Srinivas 公开说过,Perplexity 从第一天起就是一个 RAG 系统。

对 GEO 从业者来说,RAG 的意义在于:它是你的内容能被 AI 引用的前提条件。如果你的内容没有进入 RAG 的索引库,或者在检索阶段没有被选中,LLM 在生成回答时根本"看不到"你——无论你的内容写得多好、多权威、排名多靠前都没用。GEO 优化的本质,就是让你的内容在 RAG 管道的每个环节都不被淘汰。


RAG 全流程:从你发布内容到 AI 引用你

RAG 管道分两大阶段:离线阶段(你发布内容之后,AI 在后台默默做的事)和在线阶段(用户提问时实时发生的事)。

                         RAG 完整管道

 ┌────────────────── 离线阶段(Offline)──────────────────┐
 │                                                        │
 │  你发布 / 更新内容                                       │
 │      │                                                  │
 │      ▼                                                  │
 │  ① 爬取(Crawling)                                     │
 │      AI 爬虫(PerplexityBot、OAI-SearchBot 等)          │
 │      访问你的页面,抓取 HTML 内容                          │
 │      │                                                  │
 │      ▼                                                  │
 │  ② 切块(Chunking)                                     │
 │      把长文档切成 300–500 token 的小块(chunk)             │
 │      通常按段落边界或标题边界切割                            │
 │      │                                                  │
 │      ▼                                                  │
 │  ③ 向量化(Embedding)                                   │
 │      Embedding 模型把每个 chunk 转换成一串数字(向量)        │
 │      语义相近的内容 → 向量距离近                            │
 │      │                                                  │
 │      ▼                                                  │
 │  ④ 入库(Indexing)                                      │
 │      向量 → 存入向量数据库(语义搜索用)                     │
 │      原文 → 存入倒排索引(关键词搜索用)                     │
 │                                                        │
 └────────────────────────────────────────────────────────┘
                          ↓ 等待用户提问
 ┌────────────────── 在线阶段(Online)──────────────────┐
 │                                                        │
 │  用户提问                                               │
 │      │                                                  │
 │      ▼                                                  │
 │  ⑤ 查询理解(Query Understanding)                       │
 │      LLM 解析用户意图,改写查询,生成检索信号                │
 │      │                                                  │
 │      ▼                                                  │
 │  ⑥ 粗筛(Coarse Retrieval)                             │
 │      BM25 关键词匹配 + 向量语义搜索(混合搜索)              │
 │      从几十亿 chunk 中召回 50–200 个候选                    │
 │      │                                                  │
 │      ▼                                                  │
 │  ⑦ 精排(Reranking)                                    │
 │      Cross-Encoder 逐一精细打分                           │
 │      选出最终 5–10 个最相关 chunk                          │
 │      │                                                  │
 │      ▼                                                  │
 │  ⑧ 生成 + 引用(Generation)                             │
 │      选中的 chunk 填入 LLM 上下文窗口                      │
 │      LLM 基于上下文逐 token 生成回答                       │
 │      同时标注每个观点对应的引用来源                          │
 │                                                        │
 └────────────────────────────────────────────────────────┘
                          ↓
                    用户看到 AI 回答 + 引用链接

离线阶段 vs 在线阶段——你能影响什么:

阶段什么时候发生你能影响什么
离线 · 爬取你发布/更新内容后robots.txt 放行 AI 爬虫、页面加载速度、服务端渲染
离线 · 切块爬取完成后自动进行内容的段落结构、H2 划分、每段的独立完整性
离线 · 向量化切块后自动进行内容的语义清晰度、术语准确性、命题密度
离线 · 入库向量化后自动进行几乎不能直接影响
在线 · 粗筛用户提问时实时发生内容与目标查询的关键词和语义匹配度
在线 · 精排粗筛完成后首句结论性、信息密度、来源 E-E-A-T 信号
在线 · 生成精排完成后数据具体性、结论明确性、可引用的命题式陈述

RAG 管道是一个漏斗。 你的内容在任何一个环节被淘汰,都不会出现在最终的 AI 回答里。GEO 的本质,就是让你的内容在每个环节都"活下来"。


离线阶段:你的内容怎么进入 AI 的索引库

离线阶段发生在你的内容被发布之后、用户提问之前。AI 搜索引擎在后台做四件事:爬取、切块、向量化、入库。我把它叫做**「入库四步」**——你的内容必须完整走完这四步,才有资格在后续的检索中被选中。

第一步:爬取——AI 爬虫能不能进你家门

整条 RAG 管道的起点。如果 AI 爬虫被你的 robots.txt 挡在门外,后面的一切都不存在。

我在 GoEast 的网站上经历过这个。GoEast 的 robots.txt 曾经用了过于激进的规则,把所有非 Googlebot 的爬虫一刀切全部屏蔽。Google SEO 一切正常——排名、流量都没受影响。但在 Perplexity 里搜"上海学中文",GoEast 完全不存在;在 ChatGPT 里问同样的问题,也没有任何提及。修复 robots.txt 明确放行主要 AI 爬虫之后,Perplexity 引用量在六周内有了明显增长。这是最简单、也是最根本的 GEO 修复之一——成本接近零,但不做的话其他所有优化全部白费。

你需要放行的主要 AI 搜索爬虫:

爬虫名称所属平台用途
OAI-SearchBotChatGPT Search为 ChatGPT 搜索功能抓取内容
PerplexityBotPerplexity构建 Perplexity 搜索索引
ClaudeBotClaude为 Claude 搜索抓取内容
Google-ExtendedGoogle GeminiGemini AI 功能
BingbotMicrosoft CopilotBing 搜索 + Copilot 索引

还有一个容易踩的坑:页面速度。AI 爬虫有超时机制,PerplexityBot 和 GPTBot 在爬取时如果页面加载太慢,超时未完成的内容不会进入索引。我负责的另一个网站,有个页面曾经有 68 个第三方请求来自 30 个域名,导致首次渲染时间一度达到 32 秒——这种速度,AI 爬虫大概率抓不完整。

第二步:切块——你的内容被怎么"切"

RAG 系统不会把整个网页当作一个单位来处理。它会把你的页面切成几百个 token 的小块,每块通常 300–500 个 token,中文大概 200–350 字。

切块的方式因平台而异,但大致逻辑是:按段落边界或标题边界切割。一个 H2 小节如果在 500 token 以内,通常会被作为一个完整 chunk;超过了,就在段落边界处再切一刀。

这就是为什么每个段落的独立完整性对 GEO 这么重要。切出来的 chunk 要能独立回答一个问题——它脱离了上下文被提取出来之后,读者(也就是 LLM)还能看懂。如果你的段落以"如上所述"或"基于前面的分析"开头,这个 chunk 被单独拿出来时就是残缺的,reranker 打分会受影响。

测试方法我在之前的文章里提过,叫**「200 字独立测试」**:随机选一个段落复制出来单独读,如果需要“参考上文”或者“请看下文”才能理解,就要重写。详细的写法指导见《如何写出 AI 愿意引用的内容》

第三步:向量化——把文字变成数字

每个 chunk 会被一个 embedding 模型(比如 OpenAI 的 text-embedding-3-large)转换成一串数字,也就是向量。向量的核心作用:让 AI 能用数学方法计算两段内容之间的语义距离

语义相近的内容,向量距离近。"怎么做 GEO"和"生成式引擎优化的方法"这两句话几乎没有共同关键词,但在向量空间里它们的距离非常近——因为 embedding 模型理解它们说的是同一件事。

你不需要自己做 embedding,但需要知道一个关键推论:AI 判断“你的内容是不是在回答这个问题”,靠的不是关键词匹配,而是语义相似度。所以与其堆砌关键词,不如用自然语言把问题说清楚——embedding 模型看的是语义,不是词频(TF)。更多关于向量嵌入的详细解释,见《向量嵌入是什么》

第四步:入库——存进两套系统

向量化之后,数据会同时存进两个地方:

  • 向量数据库(如 Pinecone、Weaviate、Qdrant):存储 chunk 的向量表示,用于后续的语义搜索
  • 倒排索引(如 Elasticsearch):存储 chunk 的原文,用于后续的关键词搜索(BM25)

为什么要两套?因为单独任何一套都有短板。向量搜索懂语义但对精确术语不敏感;关键词搜索精确但不懂同义词。两套一起用——也就是混合搜索(Hybrid Search)——才是目前的行业标准。

到这里,你的内容已经「入库」了。接下来就等用户提问。


在线阶段第一步:检索——粗筛精排,从几十亿个 chunk 里选出你的

用户在 Perplexity 输入一个问题。接下来几百毫秒内,RAG 系统要从索引库里几十亿个 chunk 中挑出最相关的那几个。

这个过程分两步。我把它叫做**「粗筛精排」**——先用快速算法海选候选,再用精细模型逐一评分。

粗筛:混合搜索

两种算法同时运行:

BM25(关键词匹配):经典搜索算法,基于"你的内容包含多少跟查询相关的关键词"来打分。优点是速度快、对专有名词精确;缺点是不懂语义——"如何做 GEO"和"生成式引擎优化方法"在 BM25 看来几乎毫无关系。

向量搜索(语义匹配):把用户的查询也转换成向量,然后在向量数据库里找距离最近的 chunk。优点是理解语义,同义表达都能匹配上;缺点是对精确术语和数字不够敏感——搜"GPT-5.4 上下文窗口大小"时,向量搜索可能会召回一些讲"LLM 参数"但完全没提 GPT-5.4 的内容。

混合搜索(Hybrid Search):把关键词匹配和语义匹配的结果按权重合并,取各自的长处。这是目前 Perplexity、ChatGPT Search、Google AI Overviews 等主流平台的标准做法。

粗筛阶段通常会召回 50–200 个候选 chunk。

对你的内容意味着什么:你需要同时照顾两种检索方式。一方面,在文章里使用用户真正会搜的关键词和术语(给 BM25 用);另一方面,用自然语言把概念讲清楚,覆盖各种可能的同义表达(给向量搜索用)。只优化其中一个方向,就只能被一半的检索系统找到,大大降低被AI引用的概率。

精排:Cross-Encoder Reranker

粗筛选出来的 50–200 个候选太多了,不可能全部塞进 LLM 的上下文窗口。这时候需要一个更精细的模型来逐一打分——Cross-Encoder Reranker。

Cross-Encoder 的工作方式跟粗筛不同。粗筛是把查询和文档分开计算再合并分数;Cross-Encoder 是把查询和每个候选 chunk 拼在一起,让模型看完整的"查询 + 内容"之后给一个综合打分。这种方式更准确,但计算量大得多,所以只能在粗筛之后的小规模候选集上用。

Reranker 打分的核心维度——这也是 GEO 优化的核心靶向:

  • 语义相关度:chunk 内容跟用户问题有多匹配
  • 信息完整度:chunk 是否独立提供了一个完整的答案(还是只是残缺的片段)
  • 信息密度:chunk 里包含多少具体信息(数据、结论、可操作建议),而不是空话和背景铺垫
  • 来源权威度:这个 chunk 来自的网站 E-E-A-T 信号强不强(96% 的 AI Overview 引用来自 E-E-A-T 信号强的来源)。更多关于重排序和信任信号的详细机制,见《AI 怎么决定引用谁》

精排后,通常 5–10 个 chunk 会被选中,送入 LLM 的上下文窗口。

一个重要的数据:根据 GEO 学术研究(Aggarwal et al., KDD 2024),44.2% 的 AI 引用来自页面前 30% 的文字。这不是巧合——chunk 的开头如果就是结论和核心信息,reranker 的语义相关度和信息密度打分都会更高。这也是为什么**「首句写结论」**是 GEO 最基础的写作原则:你每个段落的第一句话,很大程度上决定了这个 chunk 能不能过精排这一关。


在线阶段第二步:生成——从 chunk 到 AI 回答

精排选出的 chunk 被填入 LLM 上下文窗口后,生成阶段开始了。

上下文组装

LLM 的上下文窗口现在包含三部分:预设的系统提示词(告诉 LLM"请基于以下参考内容回答问题")、检索到的参考内容 chunk(每个都带着来源 URL)、以及用户的原始问题。LLM 会基于这些内容,逐 token 生成回答。

关于上下文窗口的大小和"中间迷失"现象,可以参考《大语言模型怎么生成答案》

引用是怎么产生的

这是做 GEO 最关心的问题:AI 到底怎么决定引用谁?

不同平台的实现细节有差异,但基本机制是:LLM 在生成回答时,会追踪每个观点或数据来自上下文中的哪个 chunk。如果某个 chunk 提供的信息被用在了回答里,那个 chunk 的来源 URL 就会被标注为引用。

几个关键数据帮你建立直觉:

  • Perplexity 平均每个回答引用 21.87 个来源——所有平台中最多,意味着进入引用名单的机会其实不少
  • ChatGPT Search 引用数较少,但 90% 的引用来自 Google 自然搜索前 20 名以外的页面——传统 SEO 排名不高也有机会
  • Google AI Overviews 偏好在 Google 搜索中排名靠前的页面——传统 SEO 仍然重要

Grounding:让回答"有据可查"

"Grounding"(接地/落地)是 RAG 生成阶段的一个重要概念。它的意思是:限制 LLM 只能基于上下文窗口里的检索内容来生成回答,不能自由发挥

没有 grounding 的 LLM 会用参数化知识填补空白——这就容易产生幻觉。有 grounding 机制的 RAG 系统会要求 LLM 每个观点都"对得上"上下文里的某个 chunk——对不上的就不说。

坦白讲,grounding 不完美。LLM 有时候还是会偏信自己的参数化知识。但对我们做 GEO 的人来说,grounding 机制的存在是好消息——它意味着只要你的内容进入了上下文窗口,被引用的概率是很高的。关键战场在前面的检索和精排阶段,而不是生成阶段。

RAG 的失效模式

RAG 不是万能的。了解它怎么失效,能帮我们少踩坑:

  1. 检索失败:相关内容存在,但粗筛和精排都没选中。通常原因:内容的措辞和用户查询的语义差距太大,或者内容被切块后信息不完整
  2. 上下文污染:检索到了太多不够相关的 chunk,"淹没"了真正好的那个——LLM 在一堆噪音里找不到重点
  3. 参数覆盖:LLM 偏信参数化知识,忽略上下文里的检索内容——这在 ChatGPT 上比 Perplexity 上更常见
  4. 引用漂移(Citation Drift):今天引用你,下周可能就换了。40%–60% 的引用来源每月都在变化,只有 20% 的来源能在同一查询的五次连续回答中稳定出现

不管哪种失效模式,做 GEO 本质上都回到同一件事:让你的内容在 RAG 管道的每个环节尽可能"强"——爬虫能抓到、chunk 完整独立、语义匹配准确、reranker 给高分、信息足够具体和可引用。


各平台的 RAG 有什么不同

同一个 RAG 框架,不同平台的实现差异非常大。这直接导致:同一内容在不同 AI 平台上的引用表现可能完全不同。我把这种差异叫做**「平台偏好差」**。

维度PerplexityChatGPT SearchGoogle AI OverviewsGoogle AI Mode
RAG 触发方式几乎所有回答都走实时搜索参数知识为主,需要"触发"才搜索只对特定查询类型展示(约 20%)多轮迭代检索
引用密度高(平均 21.87 个/回答)较低,但每个引用权重高中等,1–5 个来源中高,多来源交叉验证
偏好来源Reddit(46.7%)、新鲜内容Wikipedia(47.9%)、百科式权威源已有高排名的页面、结构化数据综合深度内容
新鲜度偏好极强(6 个月后引用率骤降)中等中等(偏好近期更新)中等
你的策略重点内容新鲜度、FAQ 格式、Reddit 参与提供参数知识里没有的独特数据先做好传统 SEO、结构化数据内容深度、内部链接结构

一个实际例子。GoEast 的 HSK 备考页有 FAQ 结构和具体学员数据,在 Perplexity 上表现不错(FAQ 格式天然匹配 Perplexity 的问答检索)。但在 ChatGPT 里问"HSK 备考技巧",它几乎不出现——因为 ChatGPT 对这类常识性问题倾向直接用参数知识回答,根本不触发 RAG 搜索。直到我在页面里加入了非常具体的、参数知识里不可能有的数据(「学员平均 5.2 个月达到 HSK3,每周 6 小时,2024 内部数据,n=380」),ChatGPT 才开始引用。同样的逻辑适用于任何服务类网站:想让 ChatGPT 引用你,你必须提供它"记忆"里没有的具体信息。

更多各平台的详细运作方式,见《AI 搜索引擎怎么工作》


从 RAG 系统反推出的 GEO 行动清单

理解了 RAG 的完整流程,GEO 的每一条优化策略都能找到它的「机制依据」。下面这张表把 RAG 系统的每个环节和对应的优化动作一一对应。

RAG 环节你的内容在这里可能被淘汰的原因对应的 GEO 优化动作优先级
① 爬取AI 爬虫被 robots.txt 拦截,或页面加载超时放行 OAI-SearchBot、PerplexityBot、ClaudeBot 等;优化页面速度🔴 最高
② 切块chunk 不独立,脱离上下文后信息残缺每个 H2 小节控制在 200–350 字,段落独立完整(「200 字独立测试」)🔴 高
③ 向量化内容语义模糊,向量位置偏离目标查询使用明确术语,写命题式陈述("X 是 Y"),避免"如上所述"类空洞表达🟡 中
④ 入库这一步你几乎无法直接影响
⑤ 粗筛既不匹配关键词也不匹配语义同时覆盖目标关键词 + 语义同义表达,标题包含核心查询词🟡 中
⑥ 精排信息密度低、首句是背景铺垫、来源 E-E-A-T 弱首句写结论(首 chunk 原则);包含具体数据和来源;完善 Schema 和作者实体🔴 高
⑦ 生成内容缺乏可引用的具体"点"(数据、结论、定义)每 150–200 字包含一个可验证的数据点;每个 H2 给出明确的命题式结论🟡 中

如果只做三件事,按这个顺序:

  1. 确认 AI 爬虫可以访问你的网站——5 分钟,免费。去看你的 robots.txt,确保没有把上面表格里的爬虫屏蔽掉。这是前提条件,没有它一切白搭。

  2. 重写每个 H2 小节的第一句话——改成结论句。"AI 搜索引擎在用 RAG 填充上下文时,不会把整个网页塞进去"比"关于 RAG 的上下文填充机制,有几个重要的方面需要了解"在 reranker 面前得分高得多。每篇文章 30 分钟就能改完。

  3. 在核心页面添加 FAQ + FAQPage Schema——FAQ 天然是“预切块”的内容,每个 Q&A 对就是一个完整的、自包含的 chunk,RAG 系统天然偏好这种格式。有 FAQPage Schema 的页面 AI 引用率是无 Schema 页面的 2.7 倍(Relixir, 2025)。每个页面大约 1 小时能加完。关于 AI 偏好的内容格式,还可以参考《AI 搜索引擎偏好引用的内容格式》

术语不熟的话,《GEO 术语表》可以随时查阅。


常见问题

RAG 和传统搜索引擎有什么区别?

传统搜索引擎返回链接列表,让用户自己去看;RAG 系统把检索到的内容直接喂给 LLM,由 LLM 综合生成一个回答。本质区别在终点不同:传统搜索的终点是"帮你找到信息",RAG 的终点是"直接给你答案"。对内容创作者来说,传统搜索需要你的页面排名高,RAG 需要你的内容块在检索和精排中得分高——两者有重叠,但侧重点不同。

我的内容被 AI 爬虫抓取了,是不是就一定会被引用?

不是。被抓取只是 RAG 管道的第一步。你的内容还要经过切块、向量化、入库,然后在用户提问时通过粗筛和精排的层层筛选。每一步都在淘汰,最终只有最相关、质量最高的 5–10 个 chunk 进入 LLM 的上下文窗口。被抓取是必要条件,不是充分条件。

为什么同一内容在 Perplexity 被引用、在 ChatGPT 却没有?

因为两个平台的 RAG 实现完全不同。Perplexity 几乎所有回答都走实时搜索(RAG 优先),ChatGPT 对很多常识性问题直接用参数化知识回答,只在参数知识不够时才触发 RAG 搜索。想被 ChatGPT 引用,你需要提供它"记忆"里没有的独特信息——具体数据、最新研究、反直觉结论等。

RAG 能完全消除 AI 幻觉吗?

不能。RAG 大幅减少了幻觉,但没有完全消除。几种情况下 RAG 仍会出错:检索到不相关的内容、检索的内容本身有误、LLM 偏信参数知识而忽略检索结果。RAG 是目前最有效的幻觉缓解方案,但不是完美方案。这也是为什么 AI 搜索平台都会标注"AI 生成内容仅供参考"。

RAG 和微调(Fine-tuning)有什么关系?

两者解决不同的问题。微调是修改模型本身的参数,让模型在某个领域表现更好——但知识仍然是固化的,有截止日期。RAG 是在推理时实时注入外部知识——灵活、可更新、不需要重新训练模型。目前主流 AI 搜索引擎全部采用 RAG 架构。对做 GEO 的人来说,你要优化的是 RAG 管道里的环节,不是想办法影响模型微调。