RAG 场景下模型回答分层与缓存优化方案
一、背景与问题在基于 RAGRetrieval-Augmented Generation的知识库问答系统中当前主流技术栈通常包括应用层Spring Boot Spring AI向量存储MilvusEmbedding / LLMDeepSeek高质量推理豆包DoubaoMimo低成本模型典型流程如下文档切块Chunking向量化Embedding向量检索TopK拼接上下文ContextLLM 生成回答核心问题在实际落地过程中会遇到以下问题成本问题上下文较长文档块 用户问题每次都调用 LLM尤其是 DeepSeekToken 消耗高输入成本远高于输出性能问题LLM 响应延迟高高频重复问题无法复用效果问题每次都是“从头推理”无法利用历史高质量回答二、优化目标本方案主要围绕以下目标展开目标描述降低成本减少 LLM 调用次数 使用低成本模型提升响应速度命中缓存直接返回提升回答稳定性复用高质量历史回答保证数据一致性文档更新后不污染结果三、总体架构设计整体优化思路为模型分层 对话缓存复用 智能存储策略架构分层用户请求 ↓ 【1】历史对话向量库缓存层 ↓命中 直接返回 / 半命中 → 低成本模型优化 ↓未命中 【2】知识库向量检索Milvus ↓ 【3】模型分层调用 - 低成本模型Doubao / Mimo - 高质量模型DeepSeek ↓ 【4】回答评估与存储四、核心优化策略4.1 对话缓存机制核心设计思想RAG 本质是“知识检索”用户问题具有明显的重复性FAQ 类问题操作类问题业务规则类问题没有必要每次都调用 LLM存储结构设计向量库存储内容字段内容embedding向量content问题文本metadatachunkIds/ai_answer/question_textidid关键点只对“问题”做 embedding降低成本回答和上下文作为 metadata 存储4.2 查询阶段优化对话复用Step 1查询历史对话库对用户问题进行向量检索情况一相似度 ≥ 0.9强命中直接返回历史回答 不调用 LLM 响应速度最快 成本为 0情况二0.5 ≤ 相似度 0.9弱命中处理策略取历史库 Top1获取历史回答历史文档块同时执行知识库 Top5 检索合并上下文 历史文档块 知识库文档块 → LLM模型选择策略此阶段使用低成本模型 原因模型输入成本DeepSeek~2元 / 百万 tokenDoubao~0.4元 / 百万 tokenmiMO~0.7元 / 百万 token成本降低约 80%情况三相似度 0.5未命中标准 RAG 流程4.3 模型分层策略分层原则不是所有请求都需要高质量模型。模型分层设计层级模型使用场景L1缓存层无直接返回L2低成本层Doubao / Mimo弱命中、简单问题L3高质量层DeepSeek复杂问题4.4 智能存储策略关键为什么不能全部存如果所有回答都存储会带来噪音数据错误传播存储膨胀存储策略仅对 DeepSeek 生成的回答进行存储判断原因DeepSeek 质量更高更适合作为“知识沉淀”存储判断流程LLMDeepSeek生成回答后再调用一次 LLM或规则引擎进行判断判断内容是否通用问题是否具备复用价值是否包含敏感/权限信息存储规则设计按实际业务场景设计存储规则通常是通用类问题进行存储五、数据一致性设计问题文档更新后历史缓存可能失效回答可能错误解决方案文档版本控制每个 chunk 绑定 doc_version变更清理机制当文档更新时删除相关历史缓存按 doc_id六、收益分析1. 成本优化优化点效果缓存命中0 成本低成本模型替代降低 80%embedding 优化减少向量计算2. 性能提升缓存命中毫秒级避免重复推理降低 LLM 压力3. 效果提升复用高质量回答降低 hallucination提升稳定性