RAG实战拆解:检索增强生成原理、选型与避坑清单
RAG实战拆解检索增强生成原理、选型与避坑清单【免费下载链接】awesome-generative-ai-guideA one stop repository for generative AI research updates, interview resources, notebooks and much more!项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-generative-ai-guide为什么你的 RAG 系统总是答非所问问题多半不在模型而在检索这一环。本文把检索增强生成RAG拆开讲核心链路、关键选型、高频坑位最后给一条从最小可用到生产级的落地路径。RAG 在做什么输入、处理、输出RAG 一句话定义先去外部知识库查资料再把证据和问题一起交给 LLM照着写。它针对性地解决两个老毛病——模型知识截止带来的过期以及参数化记忆带来的编造。整条链路分两个时期、三段处理数据流向如下索引期只做一次文档进来 → 分块 → 向量化 → 写入索引。查询期每次请求都跑query 向量化 → 召回 Top-K → 重排 → 拼 prompt → 生成。最容易被忽视的是拼接这一步证据的顺序、总长度、是否带来源标记都会直接改变答案质量。很多模型不行的案例拆开后其实是拼接把关键证据挤到了中间或者把两段互相矛盾的文档塞在了一起。为什么不直接 fine-tune三个理由知识可热更新改索引不用重训答案可挂来源可追溯可审计领域知识不进权重新业务线加数据就行。这也是 RAG 而不是微调成为生产默认选择的原因。研究侧三篇关键工作各一句话Lewis et al.2020首次把非参数化记忆接进生成过程奠定 RAG 范式Self-RAG2023让模型自己判断要不要检索、要不要引用把固定流水线变成自反思的决策循环GraphRAG2024引入知识图谱索引补上扁平向量检索答不了全库级问题的短板。分块、检索、融合一张表看懂选型直接说结论没有银弹组合只有和语料匹配的起点组合。当前工程上投入产出比最高的默认值是中等分块 混合检索 重排。选型点轻量方案增强方案差异分块固定 512 token语义边界窗口扩展后者上下文更完整检索纯向量 Top-K向量BM25 混合后者兜住专名和错字融合分数截断取前 NCross-encoder 重排更准但多一跳延迟这三行对应三个杠杆分块决定证据切得干不干净检索决定该找的找没找到融合决定找到的用没用上。⚙️ 建议路径先固定分块 纯向量跑通badcase 里出现专名漏检再加 BM25出现排序不稳再加 rerank。每一级升级都要有真实 badcase 驱动别一次上全家桶。踩坑实录三个高频问题坑一检索噪声相关内容进不了 Top-K症状文档明明在库里就是捞不到或者捞回一堆半相关文档。根因是单一向量召回对专名、型号、错字非常脆弱。# 混合召回 重排专名走BM25语义走向量 def retrieve(query): dense vector_db.search(embed(query), k20) sparse bm25.search(query, k20) pool rrf_fuse(dense, sparse) # RRF融合两路结果 top rerank(query, pool, n5) # cross-encoder重排 return [d for d in top if d.score 0.4] # 低分直接丢弃最后那行分数阈值别省与其让垃圾文档占坑不如让系统承认证据不足。坑二上下文塞太满反而答错Top-K 从 5 加到 20准确率不升反降是常态——注意力被稀释关键证据淹没在中间。解法是句子窗口检索用短句做检索锚点命中之后再把整段上下文交给 LLM。# 句子窗口锚点精、上下文全两者兼得 def window_retrieve(query, before2, after2): hit sentence_index.search(embed(query), k1) lo max(0, hit.para_idx - before) hi hit.para_idx after return \n.join(doc.sentences[lo:hi])️ 一个经验值进 prompt 的证据总量控制在 2~3K token宁缺毋滥。坑三多轮对话我刚才说的检索全崩第二轮开始query 里全是代词和省略直接拿去检索等于自毁。先做查询改写把多轮历史压缩成一句独立、完整的检索句。# 会话级检索配置改写在前检索在后 multi_turn: rewrite: 历史压缩为一句自包含query消解代词 retrieve: 仅用改写后的query检索不拼原始历史 memory: 记录已引用的doc_id下一轮优先复用第三行是很多人漏掉的跨轮复用已引用文档能显著降低越聊越偏的概率。RAG 评估指标速查先拆环节再定指标 端到端准确率是最差的起点因为它无法告诉你锅在检索还是生成。正确姿势是先拆环节分别评估每个指标只回答一个问题维度指标直白解释检索准不准RecallK、MRR该找到的文档进 Top-K 了吗答案对不对人工抽检 / LLM 裁判与参考答案或业务标准一致吗有没有幻觉忠实度 Faithfulness每个论断能否在证据里找到出处答非所问回答相关性是否真的回应了用户的问题两条落地建议一是先建 50~100 条 golden set真实问题 人工标注的理想答案任何索引、模型、prompt 变更都跑回归不过线就不上线二是忠实度权重应最高——检索场景里答错了比没答出来危害大宁可让模型说证据不足。落地阶梯最小可用到生产级L0 最小可用固定分块 单向量库 Top-5几十行代码跑通 demo先验证业务是否真的需要 RAG。L1 混合检索引入 BM25 与 reranker专名、错字、排序不稳一次解决是投入产出比最高的一级。L2 结构化流水线句子窗口检索、元数据过滤、查询改写、强制引用来源开始啃长尾问题。L3 生产级golden set 评估 线上 badcase 回流 变更回归把拍脑袋调参换成数据驱动。每上一级之前先问一句当前层级的 badcase 是否已被下一层方案覆盖覆盖不了就继续打磨当前层。仓库里 RAG 主题索引 整理了从入门到智能体检索的课程路线RAG 研究论文表 持续跟踪 2023 年至今的代表性工作评估主题页 覆盖指标设计细节可以按阶梯逐级取用。RAG 的上限从来不在模型多强而在你喂给模型的证据多干净——把 80% 的时间花在数据和评估上你的系统会赢过绝大多数只调 prompt 的同行。【免费下载链接】awesome-generative-ai-guideA one stop repository for generative AI research updates, interview resources, notebooks and much more!项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-generative-ai-guide创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →