乐于分享
好东西不私藏

干货分享 | RAG不是“把文档塞进去”这么简单......

干货分享 | RAG不是“把文档塞进去”这么简单......

RAG不就是把文档向量化,然后检索出来给LLM吗?

很多人对RAG的理解停留在这一句话。

但真正上过生产的RAG系统,每个环节都有坑,每个坑都可能让整体效果崩掉。

RAG的完整链路:

文档加载→切块→Embedding→向量存储 →检索→重排序→生成

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

  1. 文档加载与预处理

原始文档可能是PDF、Word、网页、数据库导出......格式混乱,噪音多。

常见问题:

  • PDF解析出来的文本有乱码、表格变成一行、页眉页脚混入正文

  • HTML里夹带大量无意义的导航、广告文本

优化方向:

  • 根据文档类型选择合适的解析器(如pdfplumber处理表格比PyPDF2更准)

  • 预处理阶段清洗噪音:去掉页眉页脚、特殊字符、重复段落

  • 结构化文档(如有标题层级的Word)保留结构信息,后续检索时可以按章节过滤

  1. 切块

这是被严重低估的一步,直接决定检索质量的上限。

切块太大:一个chunk包含多个话题,检索到的内容不够精准,LLM读到太多无关信息。

切块太小:每个chunk缺乏上下文,LLM无法理解这段话的含义。

咋办咋办:

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

  1. Embedding

把文本转成向量,这步的选择影响检索的语义理解能力。

几个常被忽视的点:

  • Embedding模型要和检索场景匹配:OpenAI text-embedding-3-large通用效果好,但如果是专业领域(医疗、法律、代码),考虑用领域微调模型

  • Query和Document的Embedding方式可以不同:部分模型(如 e5 系列)支持instruction-tuned embedding,query和document分别加前缀,效果更好

  • 向量维度≠质量:高维向量存储和检索开销更大,不是越大越好

  1. 向量存储

Embedding生成后,向量需要持久化存储才能检索。

选型核心看三点:数据量、是否需要元数据过滤、能不能接受托管服务。

快速选型参考:本地原型用Chroma,已有PostgreSQL栈直接上pgvector,生产环境需要高性能过滤用Qdrant,不想管基础设施就用Pinecone。

索引方面默认选HNSW,速度快,向量量级超千万再考虑切换IVF。

  1. 检索

最基础的是向量相似度检索,但单靠这个往往不够。以下是常用增强策略:

Hybrid Search:向量检索+关键词检索结果融合。对于包含专有名词、编号、代码的场景,关键词检索效果远好于纯向量。

HyDE:先让LLM根据query生成一个假设答案,用这个假设答案去检索,而不是用原始query。在query很短或很模糊时效果显著提升。

Multi-query Retrieval把原始query改写成多个不同角度的问题,分别检索后合并去重。覆盖面更广,召回率更高。

  1. 重排序

检索召回的是Top-K候选,但顺序不一定准确。

Reranker对候选结果精排,把最相关的推到前面。

Cross-encoder模型(如bge-reranker)会同时读query和document,比向量相似度判断更准,但速度慢,通常用在Top-20→Top-5的精排阶段。

  1. 生成

很多人觉得这步最简单,但prompt工程在这里同样重要。

常见问题:

  • 检索结果质量差,LLM开始“发挥”,答非所问

  • Context太长,LLM注意力分散,关键信息在中间被忽略

  • 没有citation,用户不知道答案来源,无法核实

优化建议:

  • 限制context长度,宁可少几个chunk,也要保证每个chunk都相关

  • 关键信息放在context开头或结尾,避免放在中间

  • 让LLM在回答中引用来源(标注chunk编号或文件名)

  • 加一句兜底指令:“如果提供的信息不足以回答问题,请明确说明,不要猜测”

整体调优思路

RAG效果差,先定位是哪个环节的问题:

  1. 答案内容错误,多半是Chunking或Embedding的问题,检索到了错误内容

  2. 答案内容对但不完整,检索召回率不足,试试Multi-query或Hybrid Search

  3. 答案不连贯/逻辑乱,Generation阶段prompt问题,或context太杂

  4. 速度太慢,检查Embedding和Reranking是否可以缓存或异步处理。

RAG已经是AI工程师的基础能力。

能说清楚每个环节的原理和优化方向,是区分用过RAG真正理解 RAG的分水岭。

关注我们,看更多求职干货

* 本文原创于直通硅谷【https://www.zhitongguigu.com】,欢迎尊重版权的转载。一般转载请在文章开头或结尾正确注明以下信息:

作者:直通硅谷  公众号:直通硅谷订阅号

直通硅谷,让科技求职更简单。

封面来源:

https://commons.wikimedia.org/wiki/File:T460_lockscreen.jpg