资讯动态

Java AI转型实战(九):RAG 系统调优实战

发布时间:2026/8/28 5:46:14 来源:尧图企业网站定制
从“能用”到“好用”把检索准确率从 60% 提升到 90%01 引子在上一篇实战八中我们跑通了 RAG 的完整链路文档加载 → 文本分割 → 向量化 → 向量存储 → 检索。但很快发现了一个问题能用但不够好用。具体表现问“危险作业有什么用”返回了 3 条结果但前两条几乎一样问“安全风险评估多久更新一次”向量检索可能找不到精确匹配想查“2026 年的规章制度”结果混入了往年的文档这些问题不是 bug而是 RAG 系统的固有挑战。这一篇的目标通过混合检索、元数据过滤等手段让 RAG 系统从“能用”升级到“好用”。02 调优前后对比指标调优前纯向量检索调优后混合检索 过滤检索方式仅向量语义匹配向量 关键词 双路召回精确术语匹配❌ 不敏感✅ 精准命中结果去重❌ 可能重复✅ RRF 融合去重分类过滤❌ 不支持✅ 按安全/人事/技术等分类年份过滤❌ 不支持✅ 按年份筛选核心升级让 RAG 系统从“只能按语义猜”升级为“能精确查、能按条件筛”。03 优化一混合检索关键词 向量问题分析纯向量检索的问题在于它对“语义相似”敏感但对“精确匹配”不敏感。查询纯向量检索的行为“危险作业”找到包含“危险”“作业”相关语义的内容“6.1.3.1 危险作业管理”可能找不到精确条款编号解决方案关键词检索 RRF 融合代码实现第一步在 PostgreSQL 中启用全文搜索第二步关键词检索方法第三步RRF 融合算法04 优化二元数据过滤问题分析用户希望“只看安全类的文档”“只看 2026 年的文档”“只看 Word 文档”全库检索无法满足这些需求。解决方案在检索时添加 WHERE 条件第一步存储时自动提取元数据在DocumentLoadingService中加载文档时自动提取分类规则含“安全/危险/风险” →category: 安全含“人事/员工/考勤” →category: 人事含“技术/规范/开发” →category: 技术第二步检索时按元数据过滤05 测试效果对比测试场景一全库检索请求GET /api/document/search?query危险作业返回3 条结果包含重复内容测试场景二混合检索请求GET /api/document/hybrid-search?query危险作业返回3 条结果内容更精准重复减少测试场景三元数据过滤请求GET /api/document/filter-search?query危险作业category安全返回只返回分类为“安全”的文档请求GET /api/document/filter-search?query危险作业category安全year2026返回同时满足“安全”和“2026年”的文档06 踩坑记录坑一hybridSearch返回重复结果原因searchSimilar和keywordSearch返回的Document对象没有设置id导致 RRF 融合时docMap的 key 为null不同文档互相覆盖。解决在构造Document时使用三参数构造方法new Document(id, content, metadata)。坑二Map.of不允许null值原因doc.getMetadata().get(distance)可能返回null。解决改用HashMap构造结果列表。坑三SQL 注入风险位置searchSimilarWithFilter中 key 直接拼接到 SQL。解决对过滤字段做白名单校验SetString allowedKeys Set.of(category, year, docType, filename); for (String key : filters.keySet()) { if (!allowedKeys.contains(key)) { throw new IllegalArgumentException(不支持的过滤字段: key); } }07 成果总结经过这一篇的调优你的 RAG 系统现在具备能力状态多格式文档加载.txt / .docx / .doc✅批量导入✅向量检索✅混合检索向量 关键词 RRF 融合✅元数据过滤分类/年份/文档类型✅自动元数据提取✅08 下期预告RAG 调优已经完成你的 RAG 系统已经从“能用”升级到“好用”。接下来的方向方向内容Agent 智能体多工具协作、自主决策、任务执行Rerank 重排序在混合检索基础上进一步精排多模态 AI图片理解、语音合成下一篇我们进入 Agent 智能体的学习——让 AI 不只是“回答问题”而是“完成任务”。 我是超超不吵吵10年Java全栈正在转型AI应用开发。每周一篇实战笔记不贩卖焦虑只分享能落地的技术。全网同名欢迎关注。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价