本文较长,建议点赞收藏,以免遗失。
在垂直行业(金融风控)系统的开发中,我们团队曾因RAG召回文档不准确导致合规报告生成错误。这个惨痛教训让我们意识到:把RAG跑通只需要三天,但让召回精准却需要三个月。今天我将分享踩坑经验,聚焦文档处理、召回策略、生成优化三大环节的关键解决方案。希望能帮助到大家,如有更好的建议,欢迎指出,共同学习。
一、文档处理:格式兼容性决定召回上限
当客户同时提供PDF合同、Excel数据表、Word需求文档时,传统方案直接崩盘。我们遇到的核心问题包括:
- 混合内容解析失效:PDF中的表格与文本分离,架构图被识别为乱码

- 结构化数据丢失:Excel关联字段在向量化时被拆解成独立片段
我们的解决方案:
- 建立文档预处理流水线:
ini
# PDF处理示例(使用pymuPDF提取图文关系)
def parse_pdf(doc):
for page in doc:
text = page.get_text("dict")
tables = page.find_tables()
# 保持表格与上下文文本的坐标关联
- 非格式化数据采用分块-重组策略:将图片区域映射到相邻文本区块
- 关键突破:为架构图等特殊内容建立元数据描述索引(替代传统向量化)
二、召回优化:多策略融合才是王道
在召回环节,我们发现纯向量搜索存在致命缺陷:
- 业务术语召回缺失(如"KYC流程"查不到"客户尽职调查")
- 相关文档淹没在相似度陷阱中(召回TOP5包含3个无关文件)

实测有效的组合技:
- Query重写引擎:通过LLM生成同义问法(将用户问题扩展2-3倍)
- HyDE假设文档召回:先让模型生成假想答案,用答案向量搜索
- 混合检索架构:

特别提醒:向量库管理是持续运营的关键。我们采用分层存储方案:
ps:这里提一下,关于检索增强也是优化RAG的重要一步,之前我也分享过一个RAG检索增强的技术文档,这里就不过多去解析了。没看到的粉丝朋友自行领取:《检索增强生成(RAG)》
三、生成阶段:被低估的文档清洗
直接抛给LLM的原始召回数据,存在三大隐形成本:
- 表格解析残留的XML标签干扰模型
- 页眉页脚等噪声降低有效信息密度
- 多文档间重复内容导致注意力分散
我们的清洗流水线:
- 格式转换器:HTML表格→Markdown,保留表头关联性
- 噪声过滤器:基于位置权重的文本修剪(页眉页脚消除)
- 冗余检测器:余弦相似度去重(阈值设0.87效果最佳)
革命性升级:接入智能体框架后,RAG系统获得动态信息抓取能力:
ini
# 智能体调用示例
agent.execute(
tool_name="web_search",
params={"query": "2024年金融监管新规"},
callback=rag.retrieve # 将搜索结果注入召回管道
)
写在最后
经过半年迭代,我们的RAG系统召回准确率从63%提升至91%,核心经验就三条:
- 文档处理没有银弹:必须为每种格式定制解析器
- 召回要玩组合拳:单一算法永远不够用
- 生成质量是洗出来的:清洗流程比模型选择更重要
好了,今天的分享就到这里,点个小红心,我们下期见。