“RAG不就是把文档向量化,然后检索出来给LLM吗?”
很多人对RAG的理解停留在这一句话。
但真正上过生产的RAG系统,每个环节都有坑,每个坑都可能让整体效果崩掉。
RAG的完整链路:
文档加载→切块→Embedding→向量存储 →检索→重排序→生成

看起来简单,但每一步都有选择和权衡。

文档加载与预处理

原始文档可能是PDF、Word、网页、数据库导出......格式混乱,噪音多。
常见问题:
PDF解析出来的文本有乱码、表格变成一行、页眉页脚混入正文
HTML里夹带大量无意义的导航、广告文本
优化方向:
根据文档类型选择合适的解析器(如pdfplumber处理表格比PyPDF2更准)
预处理阶段清洗噪音:去掉页眉页脚、特殊字符、重复段落
结构化文档(如有标题层级的Word)保留结构信息,后续检索时可以按章节过滤

切块

这是被严重低估的一步,直接决定检索质量的上限。
切块太大:一个chunk包含多个话题,检索到的内容不够精准,LLM读到太多无关信息。
切块太小:每个chunk缺乏上下文,LLM无法理解这段话的含义。
咋办咋办:

实战建议:大多数场景从Recursive+10-15% overlap开始调,chunk size在512~1024token之间试验。如果文档结构强(如技术文档、合同),优先按自然段落切。

Embedding

把文本转成向量,这步的选择影响检索的语义理解能力。
几个常被忽视的点:
Embedding模型要和检索场景匹配:OpenAI text-embedding-3-large通用效果好,但如果是专业领域(医疗、法律、代码),考虑用领域微调模型
Query和Document的Embedding方式可以不同:部分模型(如 e5 系列)支持instruction-tuned embedding,query和document分别加前缀,效果更好
向量维度≠质量:高维向量存储和检索开销更大,不是越大越好

向量存储

Embedding生成后,向量需要持久化存储才能检索。
选型核心看三点:数据量、是否需要元数据过滤、能不能接受托管服务。
快速选型参考:本地原型用Chroma,已有PostgreSQL栈直接上pgvector,生产环境需要高性能过滤用Qdrant,不想管基础设施就用Pinecone。
索引方面默认选HNSW,速度快,向量量级超千万再考虑切换IVF。

检索

最基础的是向量相似度检索,但单靠这个往往不够。以下是常用增强策略:
Hybrid Search:向量检索+关键词检索结果融合。对于包含专有名词、编号、代码的场景,关键词检索效果远好于纯向量。
HyDE:先让LLM根据query生成一个假设答案,用这个假设答案去检索,而不是用原始query。在query很短或很模糊时效果显著提升。
Multi-query Retrieval把原始query改写成多个不同角度的问题,分别检索后合并去重。覆盖面更广,召回率更高。

重排序

检索召回的是Top-K候选,但顺序不一定准确。
Reranker对候选结果精排,把最相关的推到前面。
Cross-encoder模型(如bge-reranker)会同时读query和document,比向量相似度判断更准,但速度慢,通常用在Top-20→Top-5的精排阶段。

生成

很多人觉得这步最简单,但prompt工程在这里同样重要。
常见问题:
检索结果质量差,LLM开始“发挥”,答非所问
Context太长,LLM注意力分散,关键信息在中间被忽略
没有citation,用户不知道答案来源,无法核实
优化建议:
限制context长度,宁可少几个chunk,也要保证每个chunk都相关
关键信息放在context开头或结尾,避免放在中间
让LLM在回答中引用来源(标注chunk编号或文件名)
加一句兜底指令:“如果提供的信息不足以回答问题,请明确说明,不要猜测”

整体调优思路

RAG效果差,先定位是哪个环节的问题:
答案内容错误,多半是Chunking或Embedding的问题,检索到了错误内容
答案内容对但不完整,检索召回率不足,试试Multi-query或Hybrid Search
答案不连贯/逻辑乱,Generation阶段prompt问题,或context太杂
速度太慢,检查Embedding和Reranking是否可以缓存或异步处理。
RAG已经是AI工程师的基础能力。
能说清楚每个环节的原理和优化方向,是区分用过RAG和真正理解 RAG的分水岭。
关注我们,看更多求职干货




* 本文原创于直通硅谷【https://www.zhitongguigu.com】,欢迎尊重版权的转载。一般转载请在文章开头或结尾正确注明以下信息:
作者:直通硅谷 公众号:直通硅谷订阅号
直通硅谷,让科技求职更简单。
https://commons.wikimedia.org/wiki/File:T460_lockscreen.jpg

夜雨聆风