当前位置: 首页 > news >正文

检索增强从零落地:检索增强系统的索引、召回与评测

检索增强从零落地:检索增强系统的索引、召回与评测

一、RAG 不是向量库加聊天框

RAG 经常被简化成“文档切片、写入向量库、检索后塞给模型”。这个流程能做演示,但很难支撑生产。真实系统里,文档会更新,权限会变化,用户问题会含糊,召回结果会夹杂噪声,模型还可能把不相关片段拼成看似合理的答案。

RAG 的目标不是让模型“知道更多”,而是让答案有依据、可追溯、可评估。一个能落地的 RAG 系统至少包含五层:文档处理、索引构建、召回排序、上下文组装、答案评测。少任何一层,后期都会变成排障黑盒。

最常见的问题是召回质量差。用户问的是“退款审核超时怎么处理”,系统召回到“退款规则介绍”和“审核人员排班”,却漏掉“超时补偿流程”。模型只能基于错误材料回答。此时继续调 Prompt 没意义,应该先回到索引和召回层。

二、RAG 链路:答案质量由检索上限决定

flowchart LR A[原始文档] --> B[清洗与切片] B --> C[元数据标注] C --> D[向量索引] C --> E[关键词索引] F[用户问题] --> G[查询改写] G --> H[混合召回] D --> H E --> H H --> I[重排序] I --> J[上下文组装] J --> K[LLM 生成] K --> L[引用与评测]

文档切片要保留结构。标题、章节、更新时间、权限范围、业务线都应该进入元数据。只保存纯文本,会让后续过滤和排序非常困难。切片大小也要结合内容类型。制度文档可以按章节切,FAQ 可以按问答对切,代码文档可以按函数或模块切。

召回建议使用混合策略。向量召回适合语义相近的问题,关键词召回适合专有名词、编号和接口名。两者结合后,再用重排序模型或规则排序。生产环境里,单纯向量召回很容易漏掉精确词。

三、实现要点:索引版本和引用链路

下面是一个文档切片结构。关键是把元数据放进索引,而不是只存正文。

type Chunk struct { ID string DocID string Title string Content string SectionPath []string Version string UpdatedAt time.Time Permission string } type SearchResult struct { ChunkID string Score float64 Content string Source string } func BuildPrompt(question string, results []SearchResult) string { var b strings.Builder b.WriteString("请只基于给定资料回答。资料不足时说明缺口。\n\n") b.WriteString("用户问题:") b.WriteString(question) b.WriteString("\n\n资料:\n") for i, r := range results { fmt.Fprintf(&b, "[%d] source=%s score=%.3f\n%s\n\n", i+1, r.Source, r.Score, r.Content) } b.WriteString("回答必须标注引用编号。") return b.String() }

提示词里明确要求“资料不足时说明缺口”,是为了减少模型硬答。更重要的是,每段资料都带source。答案必须标注引用编号,否则无法审计。用户质疑答案时,系统要能回到具体文档和具体切片。

索引版本也不能忽略。文档更新后,旧索引可能仍在服务。如果没有版本号,线上答案会出现“明明文档改了,回答还是旧规则”的问题。建议每次构建索引都有版本,并在答案日志里记录使用的索引版本。

四、评测与边界:RAG 失败时不要只调模型

RAG 评测至少要分三层。第一是召回评测,看正确资料是否进入 top-k。第二是生成评测,看模型是否基于资料回答。第三是端到端评测,看答案是否解决用户问题。只看最终回答,会掩盖召回和生成的责任边界。

RAG 不适合处理强实时数据。比如库存、余额、订单状态,应优先调用实时接口,而不是依赖文档检索。RAG 也不适合处理权限复杂但没有元数据的资料。没有权限过滤,召回越准,泄露风险越高。

上下文长度不是越大越好。塞入过多片段会增加成本,也会引入噪声。更好的方式是提高召回和排序质量,让进入模型的上下文更干净。需要记住一句话:RAG 的上限通常由检索决定,下限由评测决定。

五、总结

RAG 落地的关键是检索、引用和评测。向量库只是其中一环。文档切片要保留结构和元数据,召回要结合语义与关键词,答案要带引用,日志要记录索引版本。

建议从小范围文档开始建设评测集。先让正确资料稳定进入 top-k,再优化生成效果。不要把所有问题都交给 Prompt。RAG 是检索系统和生成系统的组合,只有两端都可观测,答案才可控。

http://www.jsqmd.com/news/1106012/

相关文章:

  • ·系统建模与UML应用
  • 功能极简取舍:每个按钮都要为用户承担重量
  • AI 辅助:Node.js 与 Go 后端选型:高并发不是唯一判断标准
  • 【5天实战】从零构建AI-Native组织:飞书+Bot+Gitee全链路自动化实战指南——Day 2:飞书Bot开发配置
  • Kiran-shell 显示桌面插件:一键隐藏所有窗口的底层机制
  • CPP 学习笔记 语法总结
  • LSTM+Attention时间序列预测实战与优化
  • Java毕业设计-基于 Java 的在线文献分类管理系统的设计与实现 基于 Java 的在线文献检索管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • Wiki-Framework 1.2.0 新能力:wiki-sse 服务端推送
  • 第91题 2026年国家级科研痛点:高压IGBT芯片场截止(FS)结构与背面减薄工艺
  • 为什么现在 RAG 越来越少被提及?
  • CF710F String Set Queries 题解
  • 深度学习核心架构与工业部署实战指南
  • 选芯片编程烧录座,这3个专业性价比最稳
  • 3分钟上手AutoScreenshot:Windows和Linux自动截屏神器
  • Qt-摄像头捕获画面
  • 直流电机静音控制方案:从PWM优化到PCB布局
  • 大规模服务 ROI 评估:别让概念替代成本账本
  • 【2026年华为暑期实习(AI)-7月1日-第一题- 选择题】(题目+思路+JavaC++Python解析+在线测试)
  • 【项目实战】基于OpenCV和BDD100K数据集的辅助驾驶车道线检测与碰撞预警系统
  • 卡梅德生物科普:CD48(SLAMF2)的免疫调控机制与研究工具选择
  • SQL 复杂查询优化:先减少扫描,再谈语法漂亮
  • Better BibTeX 终极指南:告别LaTeX文献管理的混乱时代
  • 6. 深入 Nginx 核心:HTTP 11 个处理阶段与模块开发实战
  • 轻量级AI模型实战:低配设备部署与优化指南
  • 【2026年华为暑期实习(AI)-7月1日-第三题- Certainty Forcing 训练损失计算】(题目+思路+JavaC++Python解析+在线测试)
  • 基于ICM-42605和GD32VF103的6DOF运动追踪系统设计
  • adb截图-------在小程序中实现纯 JS 驱动的 ADB 客户端
  • 输入输出流重载说明:std::ostream operator<<(std::ostream os, const Vector v)
  • AI 辅助:前端工程化效率:快不是少检查,而是少返工