大多数人搭 RAG,第一步就错了

大多数工程师搭 RAG 系统,第一步就去研究选哪个 embedding 模型。这其实是反的。

我见过不止一个团队,在 text-embedding-ada-002bge-m3 之间来回横跳,跑了无数次 benchmark,最后发现系统效果不好------问题压根不在 embedding,在 chunking。


那个把两周时间烧在 embedding 选型上的工程师

去年有个朋友在做内部知识库 RAG,产品要求"用户问什么都能答"。他把前两周全用在了这件事上:

  • 跑了 OpenAI、Cohere、BGE、Jina 四家 embedding 的对比
  • 搭了评测脚本,统计 top-k 召回率
  • 换了三次向量数据库(Pinecone → Qdrant → pgvector)

最终 top-3 召回率到了 78%,他觉得差不多了。

上线两周后,用户反馈"答非所问"的 ticket 不断涌入。他去翻 log,发现命中的 chunk 虽然语义相关,但内容是文档的某个孤立段落------没有上下文,模型根本无法给出有用的回答。

问题不是 embedding 不准,是 chunk 切得太碎,上下文完全割断了。


Embedding 选型的收益边际在递减

这是一个经常被忽视的现实:主流 embedding 模型之间的性能差距,在通用文本任务上已经非常小。

2025 年的 MTEB 榜单前 10 名,top-3 召回率差距普遍在 3% 以内。而一个糟糕的 chunking 策略,能把这个指标直接打掉 20%。

换句话说,你花两周做 embedding 选型,收益可能是 +3%;而花两天优化 chunking 策略,收益可能是 +20%。

这不是说 embedding 不重要,而是优先级错了


真正的三个瓶颈

1. Chunking 策略

固定长度切分(fixed-size chunking)是最常见的起点,也是最快到达瓶颈的选择。

几个实测中收益更稳定的策略:

  • 句子级 + 滑动窗口:保留上下文连续性,适合叙述型文档
  • 按语义分段:用小模型做段落边界检测,适合结构化报告
  • 父子 chunk:检索时用小 chunk,送给 LLM 时附上父 chunk,兼顾精度和上下文

没有银弹,关键是要有评估集来量化不同策略的差异,而不是凭感觉换。

2. 评估闭环

这是大多数 RAG 项目最缺的一环。

没有评估集,你就是在用眼睛观测一个黑盒。改了 chunking 是更好还是更差?改了 retrieval 策略有没有回归?你不知道。

一个最小可行的评估闭环:

  1. 从真实用户问题中抽取 50-100 个代表性 case
  2. 人工标注每个问题的"理想 chunk"(ground truth)
  3. 每次改动后跑一次,对比 Recall@3 和 MRR

工具层面,RAGAS 框架可以半自动化这个流程,值得一试。

3. 检索质量:别只用向量检索

纯向量检索有一个经典失效场景:精确词匹配。

用户搜"Claude Sonnet 4.6 的 context window 是多少",向量检索很可能把语义相近的"Claude 3.5 context window"排在前面。

混合检索(BM25 + 向量)在这类场景下表现更稳。pgvector 0.7+ 已经支持混合检索,实现成本不高,效果提升显著。


一个可以参考的迭代顺序

  1. 先用固定 chunking + 任意主流 embedding 跑通 pipeline,别在这两步卡太久
  2. 搭最小评估集,给自己一把尺
  3. 优化 chunking 策略,用评估集量化每次改动
  4. 加混合检索
  5. 调 reranker(可选,收益视场景而定)
  6. 这时候再考虑换 embedding 模型是否有额外收益

RAG 系统的效果,80% 在数据处理和检索质量,20% 在模型选择。

相关推荐
Rust研习社2 分钟前
Rust 的 move 语义,一次讲透
后端·rust·编程语言
IT_陈寒5 分钟前
用了Vue的动态组件之后,我被坑得找不着北
前端·人工智能·后端
undefinedType33 分钟前
深入理解 Rails includes:为什么一个 order(users.xxx) 会导致超级 JOIN 性能问题
后端
baviya43 分钟前
用 Spring AI Alibaba JManus 构建零售智能客服工单系统:从 0 到日处理 10 万单
后端·ai编程
叫我少年1 小时前
C# 基础数据类型:布尔类型
后端
字节跳动开源1 小时前
局中局!给 Agent 装上 OpenViking,它们竟然学会了“记仇”和“伪装”?
人工智能·开源·llm
鹏程十八少1 小时前
12. Android 协程通关秘籍:31 道资深工程师面试题精讲
前端·后端·面试
白宇横流学长2 小时前
基于Spring Boot的校园考勤管理系统的设计与实现
java·spring boot·后端
ReSearch2 小时前
sfsEdgeStore:边缘计算时代的轻量级数据存储解决方案
数据库·后端·github
SamDeepThinking2 小时前
拼单模块设计实战
java·后端·架构