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

CAG缓存检索生成 案例流程

用户提问
比如:用户问「黄金基金风险大吗?」

查询缓存层

首先检查缓存(Cache)里是否有与该问题高度相似的历史问题及答案。

如果相似度 > 阈值(比如 0.9),直接返回缓存答案,避免重新检索和生成。

命中缓存(Cache Hit)

如果命中,就直接返回缓存中的答案。

例如,缓存里有「黄金基金风险分析」的结果,就直接复用。

未命中缓存(Cache Miss)

如果没有命中缓存,就调用 检索引擎(RAG:Retrieval-Augmented Generation),从知识库/数据库中找到相关文档。

然后调用大模型(LLM)进行生成。

存入缓存

将新的问题 + 检索结果 + 生成的回答 存入缓存,供下次相似问题直接使用。

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np# 向量模型
model = SentenceTransformer("all-MiniLM-L6-v2")# 模拟缓存数据库(用FAISS做语义检索)
dimension = 384  # embedding维度
index = faiss.IndexFlatL2(dimension)
cache_questions = []
cache_answers = []def add_to_cache(question, answer):embedding = model.encode([question])index.add(np.array(embedding, dtype=np.float32))cache_questions.append(question)cache_answers.append(answer)def search_cache(query, threshold=0.9):embedding = model.encode([query])D, I = index.search(np.array(embedding, dtype=np.float32), 1)if len(I) > 0 and I[0][0] != -1:similarity = 1 / (1 + D[0][0])  # 简化余弦相似度计算if similarity > threshold:return cache_answers[I[0][0]]return None# 模拟使用
query = "黄金基金风险大吗?"
answer = search_cache(query)if answer:print("命中缓存:", answer)
else:# 模拟RAG生成generated_answer = "黄金基金相对股票波动小,但仍有市场风险。"print("新生成:", generated_answer)add_to_cache(query, generated_answer)

📌 输出效果

第一次问:

新生成: 黄金基金相对股票波动小,但仍有市场风险。

第二次问(相似问题):

命中缓存: 黄金基金相对股票波动小,但仍有市场风险。

要不要我帮你写一个 CAG缓存检索生成的完整架构图(流程图/时序图),更直观展示缓存 + 检索 + 生成的逻辑?

http://www.dtcms.com/a/337900.html

相关文章:

  • 04高级语言逻辑结构到汇编语言之逻辑结构转换 do...while 结构
  • Android Studio受难记
  • echarts实现3个y轴的图表
  • 传输层协议——TCP
  • 刺猬的开发笔记之企业级兑换奖励c端链路开发
  • 【图论 次短路】P1491 集合位置|省选-
  • 【typenum】 17 非负数标记
  • Ansible 部署LNMP
  • shell脚本实现读取ini键值
  • 部署过程 99年证书
  • Servlet上传文件
  • 亚马逊新手突围:从流量破冰到持续出单
  • ACCESS窗体如何导出到文件,导入另一个工程?
  • java基础总结
  • mysql 主从架构详解
  • label studio标注时序数据
  • 《Unity Shader入门精要》学习笔记二
  • css中px转rem的计算公式
  • 设置独立显卡,解决游戏卡又慢
  • 【opencv-Python学习笔记(6):阈值处理】
  • 深入理解 depot_tools:Chromium 源码开发全流程(fetch/gclient/git cl 使用详解与踩坑经验)
  • Effective C++ 条款49:了解new-handler的行为
  • JAVA经典面试题:数据库调优
  • 算法题——字符串
  • input 标签的宽度根据内容自动调整
  • 电梯的构造|保养|维修视频全集_电梯安全与故障救援(课程下载)
  • JSX本质是什么
  • AI行业应用深度报告:金融、医疗、教育、制造业落地案例
  • Docker之redis安装
  • linux中的hostpath卷、nfs卷以及静态持久卷的区别