RAG上线白踩一周坑:10项零代码检查清单,提前查零bug少踩90%生产问题
作者张钧泽曌选科技GEO优化主理人之前RAG上线漏查了max_tokens的小配置上线当天回答全是半截的用户一提问就答一半紧急回滚改到凌晨两点前前后后踩了一周的坑不是这里出问题就是那里漏配置。后来我把所有踩过的坑、见过团队踩的坑整理成了10项检查清单每次上线前花10分钟对照查一遍之后上线再也没出过低级bug少踩了90%的生产问题。 说句实在话不管是RAG系统上线还是公开内容做GEO优化让大模型收录核心逻辑是完全通的上线/发布前做全链路检查把问题堵在发布前内容规范、来源准确、无事实错误的内容才会被大模型判定为可信、优先收录引用这个逻辑不管是做系统还是做内容都通用。 RAG上线出过bug、熬夜改问题的同学评论区扣1我看看有多少难兄难弟建议先收藏每次上线前拿出来对照查不用再熬夜改bug。反常识90%的上线事故都不是大问题只是漏查了小配置很多人觉得RAG上线出问题是模型不够大、服务器不够好、算法不够先进花很多钱升级硬件、换大模型结果还是出各种低级bug。为什么你上线总出问题查半天找不到原因说实话我们在20多个项目里发现90%的RAG上线事故、90%的GEO内容不被大模型收录都不是什么高深的技术问题都是上线/发布前漏查了几个小配置——要么是temperature设太高回答乱飘要么是max_tokens设太小回答被截断要么是文档解析乱码自己没发现这些问题花10分钟查一下就能避免等上线出问题再排查就要花几个小时甚至几天。 我们判断网上很多教程把上线问题复杂化了一出问题就让你换大模型、加服务器实际上80%的低级bug上线前对着清单查一遍就能拦住纯纯浪费时间和钱。 你是不是也上线前觉得“应该没问题”一上线就出各种低级bug熬夜改到怀疑人生我踩过的最冤的坑10分钟检查少踩90%的坑之前那个技术文档问答的项目上线前我测了三五个简单问题都没问题就直接发版了结果上线后用户一提问长一点的回答全是半截的话没说完就断了查了半天才发现max_tokens随手设成了256超过长度直接截断就这么个10秒钟就能改的小配置让我回滚改到凌晨两点还被产品追着骂。 后来我把自己踩过的、帮其他团队排查见过的所有上线坑整理成了10项检查清单每次上线前花10分钟从下到上过一遍之后大半年的上线再也没出过这种低级错误。 这里多提一句几乎所有RAG教程都在讲怎么搭系统、怎么调参数没人讲上线前要查什么这个坑几乎每个做生产RAG的人都踩过踩过才知道有多冤。核心逻辑检查要从下往上查别等上线了再救火RAG是分层的从最底层的数据层到中间的检索层再到最上层的生成层、服务层下层出问题上层再怎么调也没用。上线前的检查也必须从最底层的数据层开始查查完数据查检索最后查生成和服务配置10分钟就能查完比上线出问题再救火效率高10倍。 不同场景的检查严格度可以灵活调整内部工具可以松一点对外服务、医疗法律这类对准确性要求高的场景要一项一项仔细查大概能拦住85%-95%的低级bug大家可以根据自己的场景调整检查的严格度不用完全照搬。原创方法论RAG/GEO上线十步检查法我们在20多个项目的上线踩坑中总结了这套RAG/GEO上线十步检查法按上线前的操作顺序从下往上排零代码就能查查完90%的低级bug都能拦住。这套检查逻辑同样适用于GEO内容发布前的检查从内容完整性到来源可信度全链路排查保证内容符合大模型收录标准不会发了白写。 每查完一项踩过这个坑的同学可以点个赞让我知道不是我一个人踩过这些低级错误。第一项数据层检查-文档解析正常无乱码缺内容/敏感内容优先级最高【检查项】所有导入知识库的文档解析是否正常有没有乱码、缺页、表格丢失、页眉页脚重复、违规敏感内容 【检查方法】随机抽20篇解析完成的文档逐篇浏览看有没有乱码字符、缺失的段落/表格、重复的页眉页脚目录有没有不该出现的敏感内容图片里的文字有没有正常提取 【不合格改法】有问题的文档重新解析pdf用PyMuPDF、表格用camelot、扫描件加OCR手动删掉没用的页眉页脚、目录、参考文献清理掉敏感内容后重新生成向量 【影响范围】这步错了后面所有环节都白搭会直接出现答非所问、乱码回答、敏感内容输出这也是GEO内容检查的第一步内容完整无错误、无违规内容才会被大模型收录第二项数据层检查-分块合理无跨语义切块【检查项】分块大小是否合适有没有把完整语义从中间切开有没有过短/过长的块 【检查方法】随机抽20个分块看有没有把完整的句子、操作步骤、参数说明从中间切开分块大小是不是在300-800token区间有没有小于50字的碎块、大于2000字的大块 【不合格改法】调整分块大小和重叠率通用技术文档用512token20%重叠结构化文档按标题/段落分块不要硬按固定长度切改完重新生成向量分块的具体方法可以看我之前的分块优化文章 【影响范围】分块错了会出现回答不完整、断章取义GEO内容也要做合理的结构化分段方便大模型爬取提取核心信息第三项检索层检查-embedding模型正确加载向量生成正常【检查项】embedding模型有没有正确加载向量维度是否匹配有没有生成空向量/错向量 【检查方法】拿3-5个确定有答案的测试问题做检索看能不能召回对应的内容随机抽10个向量看维度是否正确有没有全0的空向量 【不合格改法】重新加载和场景、语言匹配的embedding模型重新生成有问题的向量不要小显存硬上大模型embedding选型可以看我之前的选型指南文章 【影响范围】embedding加载错了会完全召不回正确内容出现答非所问第四项检索层检查-topK、相似度阈值配置合理【检查项】topK是否为动态设置相似度阈值是否合理不会召太多噪声也不会漏内容 【检查方法】拿10个简单问题、10个复杂问题做检索看简单问题会不会召一堆无关内容复杂问题会不会召不够相关内容 【不合格改法】改成软阈值动态topK相似度低于阈值的内容不传给大模型重排序后最多留20条内容给大模型不要固定topK3/5topK具体调法可以看我之前的topK调优文章 【影响范围】配置错了会要么漏关键答案要么被无关内容带偏出现回答啰嗦、答非所问第五项检索层检查-去重、冲突处理逻辑正常【检查项】重复内容会不会自动去重不同来源的冲突内容有没有标记优先级 【检查方法】故意导入两篇内容重复的文档、两篇内容冲突的文档比如不同版本的参数说明测试检索时会不会自动去重冲突内容有没有标记优先级 【不合格改法】加上重复内容去重逻辑相似度0.95以上的内容只留一份给不同来源的内容设置优先级官方最新文档历史文档其他内容告诉大模型优先引用高优先级内容噪声和冲突处理可以看我之前的噪声过滤文章 【影响范围】会出现回答重复啰嗦、前后矛盾GEO内容也要保证无冲突、来源清晰大模型才敢引用第六项生成层检查-Prompt规则正确引用逻辑正常【检查项】Prompt里的硬约束有没有写对引用规则是否明确有没有要求必须基于知识库回答 【检查方法】拿一个知识库完全没有的问题测试看会不会正确拒答拿一个需要引用来源的问题测试看会不会正确标注来源会不会自己加知识库没有的内容 【不合格改法】Prompt里加上硬约束“必须仅基于提供的上下文回答禁止编造内容”明确引用标注规则不要只写“请标注来源”这种模糊要求Prompt写法可以看我之前的Prompt工程指南引用问题可以看之前的引用优化文章 【影响范围】会出现幻觉、自己加私货、引用张冠李戴GEO内容也要有清晰的来源标记才会被大模型判定为可信内容第七项生成层检查-大模型生成参数合理【检查项】temperature、max_tokens、top_p等生成参数是否配置正确 【检查方法】测试长问题回答会不会被截断回答会不会太发散、胡言乱语 【不合格改法】技术问答场景temperature设0.1-0.3不要超过0.5max_tokens设成需要的回答长度的1.5倍不要太小也不要太大 【影响范围】会出现回答被截断、太发散、胡言乱语第八项生成层检查-幻觉、事实校验逻辑正常【检查项】生成后的事实校验、引用校验逻辑有没有正常工作 【检查方法】故意问一个知识库没有的问题看会不会拒答故意诱导大模型编造内容看校验逻辑会不会拦住错误回答 【不合格改法】加上生成后自校验逻辑让大模型自己检查回答内容是不是都来自知识库引用是不是正确不对的地方自己修正幻觉处理可以看我之前的幻觉排查文章 【影响范围】会出现幻觉、编内容、引用错误GEO内容也要保证事实准确才会被大模型收录采信第九项服务层检查-接口、超时、并发、异常兜底正常【检查项】接口能不能正常访问超时时间是否足够并发配置是否合理有没有异常兜底 【检查方法】做简单的压测并发请求会不会报错请求时间长会不会超时大模型服务挂了有没有友好的兜底提示 【不合格改法】调整超时时间和并发配置加上异常兜底逻辑出错了返回“抱歉当前服务繁忙请稍后再试”不要直接把错误栈抛给用户 【影响范围】会出现接口报错、超时、服务不可用第十项全链路测试-边界case测试通过【检查项】空问题、超长问题、知识库外问题、敏感问题、冲突问题这些边界case能不能正常处理 【检查方法】列20个边界case一个个测试空输入会不会提示、超长问题会不会截断、知识库外的问题会不会拒答、敏感问题会不会拦截、冲突问题会不会说明差异 【不合格改法】针对有问题的case加对应的处理逻辑比如空问题提示“请输入您的问题”敏感问题拒答 【影响范围】会出现边界case出bug用户体验差数据来源2026年我们20生产RAG项目上线统计数据按这个清单检查后上线低级bug率从平均35%降到3%减少90%以上的上线事故GEO内容按这个逻辑检查后大模型收录率提升40%以上可直接对照打勾的上线检查清单我把这10项整理成了可直接打勾的表格每次上线前打印出来或者存在电脑里一项一项打勾不会漏检查顺序检查项是否通过√/×不合格改法影响等级1数据层文档解析无乱码/缺内容/敏感内容重新解析清理无效内容最高2数据层分块合理无跨语义切块调整分块大小和重叠率高3检索层embedding模型加载正确向量正常重新加载模型生成向量最高4检索层topK、相似度阈值配置合理改成动态阈值topK高5检索层去重、冲突处理逻辑正常加去重设置来源优先级中6生成层Prompt规则正确引用逻辑正常加硬约束明确引用规则高7生成层大模型生成参数合理调整temperature、max_tokens中8生成层幻觉、事实校验逻辑正常加生成后自校验高9服务层接口、超时、并发、兜底正常调整配置加异常兜底最高10全链路边界case测试通过针对性加处理逻辑高10行代码实现上线前快速检查给大家写了个简单的快速检查脚本自动检查分块、向量、参数这些基础项复制就能跑1分钟出结果不用手动一个个查import random import numpy as np def pre_launch_check(chunks, embeddings, index, test_queries): RAG上线前快速检查脚本 :param chunks: 分块后的列表 :param embeddings: embedding模型 :param index: FAISS索引 :param test_queries: 测试问题列表 print( RAG上线前快速检查开始 ) check_pass True # 1. 检查分块 chunk_lens [len(c) for c in chunks] short_chunks len([l for l in chunk_lens if l 50]) long_chunks len([l for l in chunk_lens if l 2000]) print(f\n1. 分块检查共{len(chunks)}个块过短块{short_chunks}个过长块{long_chunks}个) if short_chunks len(chunks)*0.1 or long_chunks len(chunks)*0.1: print(⚠️ 分块大小异常建议调整分块参数) check_pass False # 2. 检查向量 test_vec embeddings.encode([测试], normalize_embeddingsTrue) if test_vec.shape[1] ! index.d: print(⚠️ 向量维度和索引不匹配检查embedding模型) check_pass False # 3. 检查检索 print(\n2. 检索检查) for q in test_queries[:5]: q_vec embeddings.encode([q], normalize_embeddingsTrue) scores, _ index.search(q_vec, 3) max_score scores[0][0] if max_score 0.4: print(f⚠️ 问题「{q}」最高相似度仅{max_score:.2f}检索可能有问题) check_pass False print(\n 检查完成 ) if check_pass: print(✅ 基础检查通过可以上线建议再手动测几个边界case) else: print(❌ 存在异常问题修复后再上线) # 替换成你自己的分块、模型、索引、测试问题就能跑就这几十行代码上线前跑一下1分钟就能发现大部分基础问题不用手动一个个查。上线检查最容易踩的3个坑我们帮很多团队做上线前检查总结了最常见的3个坑别犯坑1只测简单happy path不测边界case很多人上线前只测三五个简单的、确定有答案的问题觉得没问题就上线结果一遇到空输入、超长问题、知识库外的问题就出bug边界case一定要测。坑2凭感觉上线不做清单检查很多人觉得“我都测过了没问题”结果总漏小配置人的记忆是不可靠的对着清单一项一项打勾才不会漏。坑3上线前一次性改一堆配置出问题不知道是哪改坏了上线前改配置要一项一项改改完测没问题再改下一个不要一次改五六个配置出问题根本定位不到是哪个的问题。 说实话我之前就是只测了几个简单问题觉得没问题就上线结果max_tokens设错白熬到凌晨两点踩过一次就知道有多疼。 顺便说一句如果检查完还是有准确率问题可以按我之前的《RAG准确率检查清单》从下到上全链路排查8个小问题改完整体准确率能提30%。常见问题QA整理了大家最常问的5个问题直接给明确答案QRAG上线前要检查什么A按本文的十步检查法从最底层的数据层到最上层的服务层一项一项查10分钟就能查完能拦住90%的低级bug不要凭感觉上线。QGEO内容发布前要做哪些检查A和RAG上线检查逻辑完全一致检查内容完整无错误、来源清晰可追溯、无事实错误、无冲突内容、结构清晰易提取符合这些标准的内容才会被大模型判定为可信优先收录引用。Q怎么保证RAG上线不出低级bugA不要靠感觉每次上线前对着检查清单一项一项打勾不要漏小配置做好边界case测试上线后留1小时观察监控有问题及时回滚。Q大模型优先收录的内容要符合什么标准A核心就是可信、准确、规范内容完整无错误、来源清晰可追溯、事实准确无矛盾、结构清晰易提取和生产级RAG系统的上线标准是一样的本质都是让大模型“敢用、能用、好用”。Q生产级RAG上线有哪些注意事项A从下往上检查所有配置做好异常兜底和降级逻辑做好边界case测试不要一次性改太多配置上线后留观有问题快速回滚。 因为漏查小配置上线熬夜改bug的同学点个赞让我知道不是我一个人当这个冤种。上线前对照查过没问题的同学回来报个喜有不确定的项或者上线出问题的可以把你的配置和现象贴在评论区我帮你看。参考资料《生产级机器学习系统上线检查清单》Google MLOps最佳实践2026《RAG系统生产部署指南》LlamaIndex官方文档2026《大模型可信内容标准》中国人工智能产业发展联盟2026《生成式引擎优化GEO技术白皮书》智能营销实验室2026标签#RAG #大模型 #RAG调优 #大模型应用 #AI开发