大模型应用开发第九讲:RAG(检索增强生成)流程:用户查询→检索→生成响应

资料取自《大模型应用开发:动手做AI Agent 》
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


一、核心流程比喻(三明治制作法)

步骤日常比喻RAG具体操作
用户查询客人点单("要芝士火腿三明治")接收用户文本请求
检索冰箱里找食材在数据库查找相关文档/信息
生成响应用食材制作三明治结合检索信息生成自然语言回复

▲ 核心流程类比(整合资料3的RAG流程与资料5架构)3


二、详细操作步骤(《米其林食谱》应用案例)

1. 用户提出需求(顾客点餐)

问题示例
用户:"如何制作正宗的西班牙海鲜饭?"

技术解析

  • 问题转换成向量编码(类似标准化点餐单)
  • 自动提取深层需求:"正宗"="传统瓦伦西亚做法"(第8章3节需求解析)[5]

2. 数据检索阶段(智能冰箱选食材)

检索流程图

flowchart TD
    A[用户问题] --> B[拆解关键词]
    B --> C[西班牙海鲜饭]
    B --> D[海鲜种类]
    B --> E[米类选择]
    C & D & E --> F[食谱数据库匹配]
    F --> G{TOP3候选方案}
    G --> H[方案1: 正宗地中海料理]
    G --> I[方案2: 米其林笔记]
    G --> J[方案3: 瓦伦西亚秘方]

▲ 检索流程优化(资料5的Pipeline流程)[5]

实际操作
① 检索《米其林指南数据库》→"Spanish Paella"
② 过滤条件:评分>4.5星 + 标注"传统做法"
③ 返回核心段落:

  • "必须使用Bomba米吸收高汤"
  • "藏红花用量:每500克米0.5克"(资料3索引优化)[3]

⚠️ 防失误设计

  • 食材替代预警:检测到"藏红花缺失" → 推荐红甜椒粉替代方案(资料5异常处理章节)[5]

3. 信息增强生成(米其林厨房烹饪)

智能菜谱生成代码

from llama_index.core import VectorStoreIndex

# 加载《世界食谱大全》知识库
documents = load_documents("./michelin_recipes")
index = VectorStoreIndex.from_documents(documents)

# 配置AI主厨(定制烹饪风格)
query_engine = index.as_query_engine(
   similarity_top_k=3,
   prompt_template="用家庭厨房可操作的语言解释专业步骤"  # 风格控制
)

# 执行烹饪任务
response = query_engine.query("西班牙海鲜饭的家常做法")

生成过程拆解

  1. 提示词拼接

    参考以下米其林食谱:
    [片段1]《地中海风味》强调:米粒需呈金黄色...
    [片段2] 三星主厨TIP:海鲜最后5分钟加入防过老
    请用新手能看懂的语言输出步骤
  2. 模型输出优化

    基础版:平底锅铺米 → 倒入高汤 → 中火煮15分钟
    升级版:
      步骤1:用橄榄油煎香洋葱丁+蒜末(必备爆香步骤)
      步骤2:Bomba米下锅炒至透明(锁住米芯)
      步骤3:倒入鸡汤(汤米比例3:1关键!)

🔍 效果对比

传统搜索引擎结果:
"需准备海鲜、米、藏红花..."

RAG增强结果:
2022年美食实验室关键数据:
"鸡汤温度保持80℃避免糊底(实验组失败率降低65%)
海鲜分层摆放:贝类埋入米中,虾类铺表面(热传导差异)"[1]

三、关键技术突破(厨房科技升级)

1. 语义保鲜技术

  • 问题:菜谱更新滞后 → 去年推荐米种已停产
  • 方案:建立动态索引(超市实时价签机制)

    # 每周自动更新索引
    index.refresh(urls=["最新米其林博客","当季食材报告"])(资料5数据管道)[5]

2. 多链式加工

查询类型加工链条案例
简单查询检索→直接生成"藏红花用量多少?"
复杂任务检索→摘要→再检索"法餐三道菜套餐设计"

▲ 链式优化流程(资料3分层架构图)[3]

3. 味觉反馈闭环

flowchart LR
    U[用户] -->|尝试食谱| F[评分/照片]
    F --> A{评分>4星?}
    A -->|是| B[加入优选库]
    A -->|否| C[触发人工复核]

▲ 持续优化机制(资料6的ReAct循环案例)[6]


四、故障排除(米其林质检台)

现象本质问题解决方案
检索到错误菜系菜谱标签混乱重建分类树+人工审核(资料3索引修复)[3]
生成步骤跳步上下文窗口溢出启用自动摘要模式(资料5压缩模块)[5]
忽略用户忌口要求需求解析失效添加过敏原检测模块(资料6提示词规则)[6]

五、技术架构图(米其林后厨系统)

flowchart TB
    subgraph 智能冷库
        A["经典食谱"] --> B["切块处理"]
        C["主厨视频"] -->|语音转文本| B
        D["用户UGC"] --> B
        B --> E["向量化存储"]
    end

    subgraph 服务台
        U["用户问'素食替代方案'"] --> F["语义检索"]
        F --> G{"匹配结果"}
        G -->|蛋奶素| H["奶酪蘑菇方案"]
        G -->|纯素| I["豆腐松露方案"]
        H & I --> J["模型生成步骤"]
        J --> K["带营养数据输出"]
    end

▲ 完整架构(整合资料3图3.7,资料5图5.2)3


六、商业应用案例

1. 连锁餐厅标准化

  • 需求:50家分店统一海鲜饭出品
  • RAG方案

    1. 检索总部核心配方(藏红花浓度0.1‰)
    2. 自动适配本地条件(海边店增海鲜量,高海拔店延长烹饪时间)
  • 效果:品控波动降低73%(资料2企业案例)[2]

2. 个人健康管理

用户:"我有糖尿病怎么做提拉米苏?"
AI步骤

1) 检索→医学指南:代糖选择赤藓糖醇(血糖指数0)
2) 检索→意餐大师:保持马斯卡彭奶酪绵密质感
3) 输出:
   材料替换:白砂糖→赤藓糖醇(比例1:1.3)
   关键步骤:奶酪隔水加热温度≤45℃(防代糖结晶)
(资料6决策引擎案例)[6]

关键资料索引


目录:总目录
上篇文章:大模型应用开发第八讲:OpenAI API入门 基础聊天程序搭建步骤



kovli
13 声望8 粉丝