RAG 最佳实践和调优指南

张开发
2026/6/8 6:13:15 15 分钟阅读
RAG 最佳实践和调优指南
前言RAG检索增强生成系统的质量很大程度上取决于各个环节的精细调优。本文将从文档处理、向量转换、检索优化到查询增强系统性地介绍 RAG 的最佳实践。一、文档收集和切割文档的质量决定了 AI 回答的质量这是 RAG 系统中最基础也最重要的环节。1.1 优化原始文档知识完备性是文档质量的首要条件。如果知识库缺失相关内容大模型将无法准确回答对应问题。优化建议内容结构化将零散内容组织成有逻辑的结构内容规范化统一术语和表达方式格式标准化使用统一的文档格式 通过收集用户反馈或统计知识库检索命中率不断完善和优化知识库内容1.2 文档切片切片的目的是将长文档分割成更小的片段方便大模型处理和理解。最佳实践结合智能分块算法和人工二次校验切片方式优点缺点固定长度切分实现简单容易导致语义断裂智能分块算法保持语义完整性需要更多计算资源实施建议使用 Spring AI 的 ETL Pipeline 提供的 DocumentTransformer或使用云服务如阿里云百炼的智能切分功能1.3 元数据标注元数据是对文档内容的补充描述能够帮助大模型更好地理解文档的上下文和语义。标注方式手动添加元信息单个文档利用 DocumentReader 批量添加自动添加Spring AI 提供基于 AI 的关键词解析云服务智能元数据标注如阿里云百炼二、向量转换和存储向量转换和存储是 RAG 系统的核心环节直接影响检索的效率和准确性。2.1 向量存储配置选择向量存储方案时需考虑费用成本数据规模性能要求开发成本常见方案内存 / Redis / MongoDB / 专业向量数据库2.2 选择合适的嵌入模型嵌入模型负责将文本转换为向量其质量直接影响相似度计算和检索准确性。⚠️ 不同场景可能需要不同的嵌入模型建议根据实际数据进行效果测试三、文档过滤和检索这是开发者最能大显身手的地方优化这个环节可以显著提升系统整体效果。3.1 多查询扩展在多轮场景中用户输入的提示词可能不完整或存在歧义。多查询扩展可以提高检索的准确性和完整性。注意事项设置合适的查询数量一般建议 3-5 个保留原始的核心语义避免引入新的歧义代码示例MultiQueryExpander queryExpander MultiQueryExpander.builder() .chatClientBuilder(chatClientBuilder) .numberOfQueries(3) .build(); ListQuery queries queryExpander.expand(new Query(程序员是干嘛的));完整使用流程使用扩展后的查询召回文档整合召回的文档去重合并使用召回的文档改写 Prompt3.2 查询重写和翻译查询重写和翻译可以使查询更加精确和专业。实现方式配置TranslationQueryTransformer支持多语言云服务中开启多轮会话改写功能代码示例Component public class QueryRewriter { private final QueryTransformer queryTransformer; public QueryRewriter(ChatModel dashscopeChatModel) { ChatClient.Builder builder ChatClient.builder(dashscopeChatModel); queryTransformer RewriteQueryTransformer.builder() .chatClientBuilder(builder) .build(); } public String doQueryRewrite(String prompt) { Query query new Query(prompt); Query transformedQuery queryTransformer.transform(query); return transformedQuery.text(); } }3.3 检索器配置检索器配置是影响检索质量的关键因素主要包括三个方面相似度阈值、返回文档数量和过滤规则。设置合理的相似度阈值问题解决方案召回结果不完整缺少相关文本切片降低相似度阈值提高召回片段数召回结果中包含大量无关文本提高相似度阈值排除低相似度信息代码示例DocumentRetriever documentRetriever VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .similarityThreshold(0.5) .build();控制返回文档数量Top-K控制返回给模型的文档数量平衡信息完整性和噪音水平。DocumentRetriever documentRetriever VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .similarityThreshold(0.5) .topK(3) .build(); 在多路召回场景下系统会从多个知识库检索文本切片通过重排序选出最相关的前 K 条配置文档过滤规则场景解决方案知识库包含多类别文档希望限定范围添加标签检索时根据标签筛选多篇结构相似文档希望精确定位提取元数据进行结构化搜索工厂模式示例public class LoveAppRagCustomAdvisorFactory { public static Advisor createLoveAppRagCustomAdvisor(VectorStore vectorStore, String status){ // 过滤特定状态的文档 Filter.Expression expression new FilterExpressionBuilder() .eq(status, status) .build(); DocumentRetriever documentRetriever VectorStoreDocumentRetriever.builder() .vectorStore(vectorStore) .filterExpression(expression) .similarityThreshold(0.5) .topK(3) .build(); return RetrievalAugmentationAdvisor.builder() .documentRetriever(documentRetriever) .build(); } }四、查询增强和关联经过文档检索后系统已获取相关文档。此时需要进一步优化生成效果。4.1 错误处理机制实际应用中可能出现多种异常找不到相关文档、相似度过低、查询超时等。自定义错误处理示例public class LoveAppContextualQueryAugumneterFactory { public static QueryAugmenter createInstance(){ PromptTemplate emptyContextPromptTemplate new PromptTemplate( 你应该输出下面的内容 抱歉我只能回答恋爱相关的问题别的没办法帮到您哦 有问题可以联系我们的客服https://www.baidu.com ); return ContextualQueryAugmenter.builder() .allowEmptyContext(false) .emptyContextPromptTemplate(emptyContextPromptTemplate) .build(); } }应用到 AdvisorRetrievalAugmentationAdvisor.builder() .documentRetriever(documentRetriever) .queryAugmenter(LoveAppContextualQueryAugmenterFactory.createInstance()) .build();4.2 其他建议分离检索阶段和生成阶段的知识块使用不同粒度的文档针对不同阶段使用不同粒度的文档选择合适的模型查询重写、元信息增强等场景可选择轻量大模型不必整个项目只用一种大模型总结环节核心要点文档处理知识完备性 智能切分 元数据标注向量存储根据场景选择合适的存储方案和嵌入模型检索优化多查询扩展 查询重写 合理配置阈值和 Top-K增强关联错误处理 分阶段优化 模型选型RAG 系统的优化是一个持续迭代的过程需要根据实际效果不断调整各个环节的参数和策略。希望本文能为你提供实用的参考。学习资源推荐如果你想更深入地学习大模型以下是一些非常有价值的学习资源这些资源将帮助你从不同角度学习大模型提升你的实践能力。一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示​因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取四、AI大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。

更多文章