首页 › AI产品经理入门 › AI 产品经理必学的20个RAG概念

AI 产品经理必学的20个RAG概念

写在最前​

RAG上线效果差,产品经理第一反应永远是换大模型,从 GPT 换到 Claude,再换到通义千问,数据没变好,反而越换越乱。​

90% 上线后效果差的 RAG,问题压根不在大模型,在建库那一刀 Chunking切歪了,后面所有检索、所有 Prompt 优化都是在给前面的坑擦屁股。 ​

​

飞书文档 - 图片

​

我带过的学员的 RAG 项目,真正决定生死的是建库那 4 步加检索那 4 步,大模型只负责最后两步收尾。​

把这 8 步搞清楚比换十次模型管用,这篇就把产品经理必须吃透的 20 个核心概念一次说清楚,不讲数学,直接说每个概念在产品里干什么、怎么用、怎么踩坑。​

01​

PART​

RAG 到底是什么​

你问一个只读过通识课本的学生一道专业题,他大概率瞎编一通,因为他脑子里压根没这块内容。但如果你把相关资料先递给他看一眼,再让他回答,他至少能照着资料说,不会瞎编。​

RAG 就是让 AI 回答时,先去翻相关资料再说话,英文叫 Retrieval-Augmented Generation,中文叫检索增强生成。​

为什么需要这玩意?大模型自带的知识有两个硬伤,一是训练数据有截止日期,你公司上周新出的产品政策它不知道,二是它不知道的事会瞎编,业内管这叫幻觉。​

把企业内部资料、最新文档、专业知识塞进一个能被搜索的库,每次回答前先去库里捞相关片段,再把片段和问题一起喂给大模型,大模型就有据可查,不靠瞎编。​

老王见过很多产品经理把 RAG 当成黑科技,其实它的本质就一句话,先查再说,不让大模型凭空回答。​

​

飞书文档 - 图片

​

02​

PART​

离线索引 vs 在线检索​

外卖平台你下单的时候,商家不可能临时去市场买菜再做饭,他必须提前把菜买好、洗好、切好、备齐,你下单他才能 15 分钟出餐。​

RAG 也一样。把所有资料处理成可被秒级搜索的向量、存到向量库,这件事必须提前做完,叫 离线索引,英文 Offline Indexing。用户提问的那一刻,系统只能临场做三件事,把问题转成向量、去库里查、把结果排好,这叫 在线检索,英文 Online Retrieval。​

为什么要分这两段?因为速度。建库可能要跑几小时甚至几天,用户提问不能等,必须毫秒级响应。所有 RAG 工程化的设计逻辑都从这一刀分割开始,建库慢一点没关系,检索必须快。​

老王看产品经理设计 RAG 产品最常见的错,是把所有事情都想成“用户提问的时候才做”,结果一上线就发现根本撑不住并发。这一刀切清楚,后面的资源规划、成本核算、性能优化才有依据。​

​

飞书文档 - 图片

​

03​

PART​

Chunking,把资料切成块​

你拿一本 300 页的产品手册扔给大模型,它装不下也读不完。必须先把这本手册切成一段一段的小块,每块几百字,这个动作叫 Chunking,中文叫分块或者切片。​

为什么必须切?两个原因,一是大模型上下文窗口有限,塞不下整本书,二是检索的时候要找的是“跟用户问题最相关的那一段”,不是整本书,切成块才能精准定位。​

切的好不好,直接决定后面所有事情的上限。切得太大,一块里塞了 5 个不相关的话题,检索回来一大坨噪音。切得太小,一句话切成两块,语义被切断,大模型读到一半看不懂。​

老王见过最离谱的翻车,一个团队把 Word 文档按段落切,结果一个表格被切成 10 块,每块只有一行,检索回来的全是孤立的表格行,大模型完全拼不出原表格的意思。Chunking 不是技术活,是产品决策,你得知道你的资料长什么样、用户会问什么样的问题、按什么粒度切才能精准命中。​

​

​

04​

PART​

Chunk Size 和 Overlap​

切块有两个参数永远绕不开,一个是 Chunk Size 块大小,一个是 Overlap 块重叠。​

Chunk Size 就是每块多长。主流默认 300 到 600 字,但这只是默认,不是标准答案。你切的是法律条款,每条本身就两百字,那 200 字一块刚好。你切的是技术白皮书,一段论述要 800 字才能讲清一个观点,那 200 字一块就是灾难。​

Overlap 是相邻两块之间故意重叠的部分。比如 500 字一块,前一块的最后 50 字也出现在下一块开头,这 50 字就是 Overlap。为什么要重叠?因为切块的位置永远是机械的,可能正好切在一个关键论述的中间,Overlap 让被切断的语义在两块里都能被找到,避免漏召回。​

主流配置是 Overlap 占 Chunk Size 的 10% 到 20%,500 字的块配 50 到 100 字的 Overlap。重叠太多浪费存储和检索成本,重叠太少又起不到弥补作用。​

老王的经验是,这两个参数没有标准答案,只有适合你数据的答案。第一版上线后,看用户问的问题召回率怎么样,如果发现一类问题总是漏召,大概率是切块在那个语义上断了,加大 Overlap 或者换切法。​

​

​

05​

PART​

Embedding,把文本变成数学坐标​

切好的每一块文本,计算机本身不认识中文,它要做相似度判断,得先把文字变成数字,变成的这个数字叫向量,这个过程叫 Embedding,中文叫嵌入或者向量编码。​

打个比方,地图上每个地点都有经纬度坐标,北京是一个坐标,上海是一个坐标,两个城市离得近不近,看坐标差多少就能算。Embedding 干的就是这事,把每段文字变成几百维的坐标,语义相近的文字坐标距离近,语义远的距离远。​

具体怎么变?用一个叫 Embedding Model 的专门模型,常见的有 OpenAI 的 text-embedding-3、智源的 bge、Cohere 的 embed,模型读进一段文字,吐出一个 768 维或者 1536 维的数字数组。这个数组就是这段文字在语义空间里的坐标。​

老王想强调一件事,Embedding 模型选什么,直接决定你的 RAG 上限。中文场景用纯英文训练的 Embedding,效果会差一截。垂直领域比如医疗、法律,通用 Embedding 也可能打不过专门微调过的小模型。​

选型阶段必须实测,不能看排行榜,排行榜上的中英文混合榜对你的中文垂直场景未必有参考价值。​

​

​

06​

PART​

向量数据库​

每段文本被 Embedding 成几百维的向量后,要存到一个能按相似度极速搜索的地方,这个地方叫 向量数据库,英文 Vector Database。​

普通的 MySQL、MongoDB 不行,它们设计的查询逻辑是“id 等于 123”“标题包含某关键词”,做不了“找语义最接近的 10 条”。向量数据库底层用专门的算法和索引结构,能在千万级甚至上亿条向量里毫秒级找出最相近的几条。​

主流的向量数据库有 Milvus、Pinecone、Qdrant、Weaviate、Chroma。Milvus 国产开源,Pinecone 是云服务,Qdrant 性能口碑好,Chroma 适合小规模本地起步。选型要看几件事,数据量多大、是云上还是本地、要不要支持元数据过滤、有没有运维团队。​

老王见过一个常见误区,产品经理觉得向量数据库就是装向量的桶,选哪个都一样。错。不同向量库在召回准确率、查询延迟、过滤能力上差距很大,百万级以下随便选,千万级以上必须严格压测,否则上线被并发打爆是分分钟的事。​

​

​

07​

PART​

Query Embedding 的一致性​

用户输入“如何申请退款”,这句话也必须先变成向量,才能跟库里的向量做比较,这个动作叫 Query Embedding 问题向量化。​

这里有一个产品经理最容易踩的坑,问题向量化用的 Embedding 模型,必须跟建库时用的模型完全一致。不一样不行,差一个版本号都不行。​

为什么?Embedding 模型本质上是把文本投影到一个特定的语义空间,不同模型投出来的坐标系完全不同。你在 A 模型的坐标系里建库,用 B 模型的坐标系去查,等于拿北京地铁图找上海某个站,坐标对不上,结果全错。​

老王见过一个真实案例,团队建库用了 bge-large,后来觉得查询慢想省钱,查询时改用 bge-small,结果召回率从 80% 暴跌到 20%,排查了三天才发现是模型不一致。建库和查询的 Embedding 必须锁定同一个版本,这是工程纪律,不是优化点。​

​

​

08​

PART​

余弦相似度​

两段文本变成向量后,怎么判断它们像不像?用一种叫 余弦相似度 的算法,英文 Cosine Similarity。​

想象向量是空间里从原点出发的箭头,两个箭头方向越接近,夹角越小,这两个文本就越相似。余弦相似度算的就是这个夹角的余弦值,值域 -1 到 1,越接近 1 越相似,接近 0 表示不相关,负值表示相反。​

为什么用余弦而不用别的?因为它只看方向不看长度。两段文本一段长一段短,但讲的是同一个事,向量长度不一样但方向一致,余弦相似度能识别出来。换成欧氏距离就会被长度干扰,长文本和短文本即使语义相近,距离也会很大。​

主流向量库默认就是余弦相似度,99% 场景不用动。老王见过一些产品经理在选型时纠结要不要换成欧氏距离或者内积,实测下来对最终效果影响极小,不如把精力放在 Chunking 和 Embedding 模型选型上。​

​

​

09​

PART​

ANN 近似最近邻搜索​

向量库里可能存着几千万甚至上亿条向量,用户问一个问题,系统要在毫秒内找出最相似的 10 条,怎么做到的?​

如果用最暴力的方法,跟每条向量都算一遍余弦相似度再排序,叫精确最近邻搜索,千万级数据要算几秒钟,完全不能用。实际生产用的是 ANN 近似最近邻搜索,英文 Approximate Nearest Neighbor。​

ANN 的思路是,牺牲一点点准确率,换巨大的速度提升。它提前把所有向量按某种结构组织好,比如分簇、建图、构建多层索引,查询时只在一小部分候选里搜,不全量比对。主流算法有 HNSW、IVF、PQ。​

ANN 的“近似”两个字意味着,它找回来的 Top 10 跟真正的 Top 10 可能差 1 到 2 条,但 95% 以上场景这点偏差对最终效果毫无影响,换来的是速度从秒级到毫秒级。​

老王想说的是,产品经理不用懂 HNSW 的数学原理,但要知道一件事,当你的向量库越来越大,召回速度变慢,通常不是机器不够,是 ANN 索引参数没调好。这是技术问题,但产品经理要能识别出来,不要一上来就要求扩容。​

​

​

10​

PART​

Top K 检索​

查询的结果不会只返回一条,会按相似度排序返回前 K 条最相关的,这个 K 就是 Top K。​

K 取多少有讲究。K 太小比如只取 3 条,万一最相关的那条没在前 3,后面 LLM 就拿不到正确信息,直接答错。K 太大比如取 50 条,大模型上下文窗口塞不下,塞下了也大部分是噪音,反而干扰回答。​

主流默认 K 取 5 到 10,这是经验值。但具体多少合适,要看你的资料密度和问题类型,密集型资料(每块信息量大)K 可以小一点,稀疏型资料 K 要大一点。​

老王见过一个常见错误,产品经理觉得 K 越大越保险,直接设成 30,结果大模型读到一堆不相关片段,被噪音带偏,反而比 K=5 时还差。Top K 不是越大越好,是要刚好够,够回答的同时不带噪音。​

跟 Top K 配套的还有一个 相似度阈值,低于某个分数的就不要,哪怕排在前 K 里。比如 K=10 但只有前 3 条余弦相似度超过 0.7,后面 7 条全在 0.3 以下,那就只取前 3 条。这能有效过滤掉强行凑数的低质量召回。​

​

飞书文档 - 图片

​

11​

PART​

召回率​

检索阶段最关键的一个指标,叫 召回率,英文 Recall,衡量的是该被找到的资料,有多少被真的找回来了。​

公式很简单,召回率 = 检索到的相关片段数量 ÷ 全部应该被找到的相关片段数量。比如你的库里关于退款政策一共有 8 个相关片段,这次检索返回了 6 个,召回率就是 75%。​

为什么召回率这么重要?因为大模型的回答上限,被召回率死死锁住。如果该找到的资料压根没被找回来,大模型再聪明也答不对,巧妇难为无米之炊。一切检索优化的核心目标,就是把召回率往上推。​

召回率低的常见原因有三个:​

•

Chunking 切坏了把关键内容割断。​

•

Embedding 模型对你的领域不敏感。​

•

Top K 设得太小漏了相关片段。​

这三个是排查召回问题的固定动作。​

老王见过的最离谱的产品事故,RAG 上线测下来效果烂,团队第一反应是换大模型,换了三个月没改善,最后发现是建库时一个表格被切碎了,关键数据根本没进库,召回率天生只有 30%。先看召回,再看生成,不要本末倒置。​

​

​

12​

PART​

Rerank 重排序​

向量检索召回的 Top K 是按相似度排好序的,但这个序未必是“最适合大模型用”的序,会有第二轮筛选,叫 Rerank 重排序。​

为什么需要重排?向量检索本质是粗筛,看的是整体语义相似度,不擅长理解细节。比如用户问“退款最长多少天”,向量检索可能召回 10 条都跟退款相关,但只有 1 条直接讲了“15 天”这个数字。Rerank 模型会逐条精细判断,把直接命中答案的那条排第一。​

Rerank 用的模型叫 Reranker 或 Cross-Encoder,跟 Embedding 模型完全不是一类东西。Embedding 是把问题和片段分别变成向量再比,叫双塔模型,速度快但精度低。Reranker 是把问题和片段拼在一起一起处理,精度高但慢,所以只能在 Top K 内做精排,不能在全库做。​

工业级 RAG 几乎都是 双段架构,Embedding 粗筛 + Reranker 精排,先用快的拉出几十条候选,再用慢的精排前 5 条。​

老王想说,Rerank 是 RAG 效果优化里性价比最高的一步,加上 Reranker 模型,召回质量通常能再提 10% 到 20%,远比换大模型来得划算。​

​

​

13​

PART​

Prompt 组装​

检索到的片段不能直接扔给大模型,得跟用户问题、回答指令、输出格式一起组装成一段完整的输入,这个动作叫 Prompt 组装,也叫 Context Assembly。​

一个典型的 RAG Prompt 结构长这样:​

•

先一段系统指令告诉大模型你是谁、应该怎么答。​

•

再贴上检索到的资料片段。​

•

再贴用户原问题。​

•

最后约束输出格式比如必须附引用、必须用 JSON。​

这几个部分的顺序、措辞、有没有引用标记,都会显著影响大模型的回答质量。同一份资料,Prompt 写得好可能答对,写得乱可能答错或者答得啰嗦没用。​

老王想提醒产品经理一个特别容易被忽视的细节,Prompt 里给资料片段加序号和来源标签,比如“片段 1 来源:产品手册第 3 章”,大模型在回答时就能照着标签生成引用。如果片段一锅烩塞进去,大模型根本无法标引用。​

Prompt 组装是产品经理能直接参与的 RAG 优化点,不需要懂代码,只要会写清楚的指令、对输出格式有要求,就能把 Prompt 调到 70 分以上。​

​

​

14​

PART​

上下文窗口和 Token 预算​

大模型不是想塞多少东西就塞多少,有一个硬上限,叫 上下文窗口,英文 Context Window,衡量单位是 Token。​

Token 是大模型处理文本的最小单位,一个中文字大概是 1 到 2 个 Token,一个英文单词大概是 1 个 Token。GPT-4o 上下文窗口 128k Token,Claude 200k Token,通义千问 long 也有 32k 到 1M 不等。​

为什么产品经理必须懂这个?因为 Token 是有预算的。每次调用大模型,从系统指令 + 检索资料 + 用户问题 + 输出回答全部算 Token,API 按 Token 计费。Token 用得越多,响应越慢、钱花得越多。​

实际工程里,Token 预算决定了 Top K 能取多大、每个 chunk 能多长。一个 128k 窗口的模型,你不能把所有 Token 都用来塞 chunk,得留出来给输出。如果一次调用预算上限定 8k Token,系统指令 + 输出预留 2k,留给检索资料的就剩 6k,按一块 500 字 750 Token 算,最多塞 8 块,Top K 就锁死在 8。​

做 RAG 产品前必须先算 Token 预算,这是产品成本的核心变量。不算就上,上线一周账单到了才发现一个月烧几十万,这种事老王见过不止一次。​

​

​

15​

PART​

引用与可溯源​

RAG 跟纯大模型问答最大的交付物差别,在于回答必须附 引用与可溯源,英文叫 Citation 或 Attribution。​

为什么这事必须做?因为 RAG 的核心价值就是“不让大模型瞎编”,那用户怎么知道大模型这次没编?只有把回答里每句话对应的资料片段标出来,用户能点进去看原文,才证明这是查出来的不是编出来的。​

实现上分两层:​

•

第一层是 Prompt 里给每个片段编号,大模型回答时引用编号。​

•

第二层是产品 UI 上把编号渲染成可点击的来源链接或者悬浮卡片,用户能直接跳转到原文位置。​

没有引用的 RAG 不能叫严肃 RAG,只能叫“用了一下检索的聊天机器人”。对企业级应用尤其是金融、法律、医疗,引用是合规底线。​

老王见过很多产品经理设计 RAG 产品时,把引用当成锦上添花的功能放在 P2 优先级。错。引用是 P0,是 RAG 区别于普通 ChatGPT 的核心定位,产品上线第一版就必须有。​

​

​

16​

PART​

幻觉​

大模型胡说八道、把不知道的事情编得头头是道,这种现象叫 幻觉,英文 Hallucination。RAG 存在的根本意义,就是把幻觉降下去。​

幻觉分两种:​

•

事实型幻觉,大模型把张三的事编到李四头上、把 2023 年的事说成 2024 年。​

•

逻辑型幻觉,大模型在推理过程中编造一个看起来合理但其实不存在的中间步骤。​

RAG 能解决第一种,通过把真实资料喂给大模型,让它有据可查。第二种解决不了,需要靠 Prompt 工程和模型本身能力。​

但 RAG 并不能 100% 消除幻觉,有三种情况它会失效:​

•

检索没召回到相关资料,大模型在没资料的情况下还是会编。​

•

召回的资料本身错了,大模型会照着错的资料编。​

•

大模型不老实,即使资料给了它也偷懒回答自己脑子里的版本。​

衡量幻觉的指标叫 幻觉率,工业上常用的做法是让另一个大模型做 Judge,逐句判断回答里每个事实是否能在召回资料里找到依据,找不到就算幻觉。降低幻觉率的核心三招是提召回率、加引用约束、用更强的指令遵循模型。​

幻觉率不是 0 就是 100,而是一个连续指标。100 个回答里有 5 个有幻觉,幻觉率就是 5%。要把这个指标接进监控,而不是抽几条人工看看就完事。​

​

​

17​

PART​

Recall vs MRR/NDCG​

检索阶段评估指标不止召回率一个。召回率回答“该找的有没有找回来”,但找回来排在第几位它不管。第 1 位是它,第 30 位也是它,召回率都算 100%。​

但对大模型来说,排第 1 和排第 30 完全是两件事。Top K 截断后排第 30 的片段根本进不了 Prompt,等于没召回。所以还需要看 排序质量,常用两个指标。​

MRR 平均倒数排名,衡量的是“正确答案平均排在第几位”。如果正确答案 50% 时间排第 1、50% 时间排第 2,MRR 大约是 0.75。越接近 1 越好。​

NDCG 归一化折损累积增益,比 MRR 更细,它不只看排第几,还看每条召回的相关性强弱。最相关的排第 1、次相关的排第 2,NDCG 才高;如果次相关的排到了最相关前面,NDCG 就会降低。​

产品经理不用记公式,但要知道这两个指标的存在,只看召回率不够,排序质量是隐藏在召回率背后的杀手。如果你的产品 Reranker 没接,光看召回率 80% 觉得不错,实际上正确答案可能都排在第 8 第 9 位,根本进不了大模型,等于白召回。​

​

​

18​

PART​

RAGAS 评测框架​

光评估检索阶段不够,要看 RAG 整体好不好,得做端到端评估,这事现在的事实标准工具叫 RAGAS。​

RAGAS 把 RAG 拆成 4 个维度自动打分。​

•

答案正确性,Answer Correctness,衡量大模型给出的回答是否事实正确。​

•

完整性,Answer Completeness,衡量是否覆盖了问题所有方面。​

•

自然度,Answer Fluency,衡量语言是否通顺。​

•

无幻觉,Faithfulness,衡量回答里的每句话是否都能在检索资料里找到依据。​

这 4 个维度比单独看一个指标全面得多。它特别擅长发现一类隐蔽问题:回答看起来通顺、看起来覆盖了问题,但其实是大模型编的、跟资料对不上。这种问题人工抽检不出来,RAGAS 能。​

RAGAS 是工业级 RAG 的必需品,不是可选项。产品上线后,每次更新模型、改 Chunking、调 Top K,都要跑一遍 RAGAS 看 4 个维度有没有退化。用感觉判断 RAG 好不好,迟早翻车,用 RAGAS 跑出数字才有迭代依据。​

​

​

19​

PART​

LLM-as-Judge​

RAGAS 里那些“答案正不正确”“完不完整”是怎么自动判断的?用一个能力更强的大模型当评委,这个做法叫 LLM-as-Judge,大模型当评分员。​

为什么用大模型评?因为这些维度没有标准答案,人工评太慢太贵。比如“这个回答完整不完整”,规则写不死,只有人能判断,但找人评 1000 个回答要花一周。换 GPT-4 当评委,1000 个回答几小时就跑完,质量跟人工评的吻合度能到 80% 以上。​

具体做法是给评委模型一个详细的评分 Prompt:这是用户问题、这是检索资料、这是回答,请你按照以下标准从 0 到 1 打分。不同维度有不同的评分 Prompt。​

LLM-as-Judge 不完美,它会有自己的偏见,比如倾向给长回答打高分、对自己同门模型的回答打高分。工业上的做法是用一个跟生成模型不同家族的评委,比如生成用 Claude 评委用 GPT-4,避免同门偏袒。​

老王说个常见误区,产品经理觉得用大模型评不靠谱、坚持人工评,结果迭代速度被人工评卡死,一个月只能跑两轮实验。LLM-as-Judge 不是完美但够用,它换来的是迭代速度,这才是 RAG 优化的真正瓶颈。​

​

​

20​

PART​

Hybrid Search 混合检索​

纯向量检索不是万能的,在三类问题上它会输,专有名词、短查询、代码片段。这时候要混合用关键词检索 BM25,叫 Hybrid Search 混合检索。​

为什么纯向量打不过?向量擅长理解语义但对精确字符不敏感。用户搜“iPhone 16 Pro Max”,向量检索会找到所有 iPhone 相关的文档,但 16 Pro Max 这几个精确字符可能被弱化。BM25 是基于关键词匹配的传统算法,它就盯着字符出现频率和稀有度,精确命中专有名词非常稳。​

Hybrid Search 的做法是两条路并行,向量检索返回一份 Top K,BM25 返回另一份 Top K,然后做结果融合,常用算法叫 RRF 倒数排名融合,把两份排序合并成一份总排序。​

工业级 RAG 几乎都在用混合检索。纯向量适合做原型,上线版本 99% 都得加 BM25。老王想说,这是产品经理在 RAG 进阶阶段必须知道的最后一块拼图,单一检索打不过混合检索,这一仗已经打完了,别再纠结只用向量。​

中文场景下还有一个细节,BM25 需要先分词,分词器选择对效果影响很大,jieba、IK、HanLP 各有适用场景,垂直领域可能还要自己加词典。这个细节产品经理不用动手做,但要知道存在,否则上线后中文召回拉胯都不知道找谁问。​

​

​

21​

PART​

写在最后​

老王这几年看过的 RAG 项目,真正做得好的团队有一个共同特征,他们在 Chunking 和 Embedding 选型上花的时间,远多于纠结用 GPT 还是 Claude。前者决定召回率天花板,后者只决定最后一公里。​