ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

山西过油肉菜谱全解析:从传统晋菜做法到「尝尝咸淡」RAG 系统的结构化实战

山西过油肉菜谱全解析:从传统晋菜做法到「尝尝咸淡」RAG 系统的结构化实战 山西过油肉菜谱全解析从传统晋菜做法到「尝尝咸淡」RAG 系统的结构化实战【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag过油肉是山西传统名菜历经多年传承几乎家家都会做。本文以仓库中 data/C8/cook/dishes/meat_dish/山西过油肉.md 这份结构化菜谱为样本一方面完整还原这道经典晋菜的原料配比、操作步骤与烹饪技巧另一方面借助 all-in-rag 项目第 8 章「尝尝咸淡」食谱问答系统的源码实现剖析这份 Markdown 菜谱从入库、元数据增强、按标题分块到混合检索与 LLM 生成回答的完整 RAG 链路帮助读者同时掌握一道家常硬菜的做法与一套可落地的菜谱 RAG 数据工程方法。一、菜品概览与难度评估山西过油肉是典型的晋菜代表主料为猪里脊辅以蒜苔、木耳、葱头通过「过油滑肉 快炒」的技法成菜讲究肉片滑嫩、咸鲜微醋香。原菜谱对烹饪难度给出了明确的星级评估预估烹饪难度★★★★这个星级标记在「尝尝咸淡」RAG 系统中并非摆设。参考 data_preparation.py 中的_enhance_metadata实现系统会使用正则r★匹配文档中的连续星号数量并映射为五档难度标签difficulty_map {5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单} doc.metadata[difficulty] difficulty_map.get(star_count, 未知)因此★★★★会被自动解析为「困难」级别并作为结构化元数据写入该菜谱的索引供后续按难度过滤与查询路由使用。这与 docs/chapter8/02_data_preparation.md 中「从内容中的星级标记自动提取难度等级」的设计完全对应——菜谱只要保持统一的星级书写规范系统就能零标注地完成难度画像。二、必备原料与工具清单制作山西过油肉所需的原料与工具如下类别原料/工具主料猪里脊、鸡蛋配菜蒜苔、木耳、葱头调料盐、酱油生抽、料酒、陈醋、花椒粉、鸡精辅料葱姜蒜、淀粉建议红薯淀粉、食用油其中木耳需提前泡发蒜苔提供清甜口感陈醋是点睛之笔——起锅前淋醋是这道菜「咸鲜中带微酸」风味的关键。工具方面一口炒锅即可无需特殊设备。从 RAG 数据工程视角看这张清单对应菜谱文档中的## 必备原料和工具小节。在 data_preparation.py 的_markdown_header_split中系统配置了三级标题分割器headers_to_split_on [ (#, 主标题), # 菜品名称 (##, 二级标题), # 必备原料、计算、操作等 (###, 三级标题) # 简易版本、复杂版本等 ]也就是说这份菜谱会被自动切分成「菜名简介」「必备原料和工具」「计算」「操作」「附加内容」等多个独立子块。当用户问「山西过油肉需要什么食材」时检索系统能精确命中「必备原料和工具」这一子块这正是 docs/chapter8/01_env_architecture.md 中强调的「小块检索」优势。三、用量计算一人份的精确配比原菜谱基于作者本人饭量给出了一人份用量单位明确、便于按比例缩放原料用量猪里脊150 g蒜苔6 根食用油300 ml其中约 10 ml 用于炒菜葱姜蒜50 g生抽20 ml食盐10 g鸡蛋1 个淀粉10 g木耳20 g葱头100 g其他调料料酒、陈醋、花椒粉、鸡精20 g几个值得注意的配比要点油量偏大是这道菜的底色300 ml 食用油主要用于滑肉过油并非全部下锅食用炸完后需倒出余油仅留约 10 ml 炒菜。蛋液 淀粉双重上浆一个鸡蛋搭配 10 g 红薯淀粉保证里脊肉片在高温过油时形成保护层锁住水分口感滑嫩。盐与生抽分工明确生抽在腌制时加入入底味食盐在出锅前调味两者互补避免过咸。在 RAG 系统中这个## 计算小节是「用量配比」类查询的高频命中区。用户提问「山西过油肉一人份要多少肉」系统通过向量检索 BM25 关键词检索即可定位到该子块再经父子文档映射取回完整菜谱交给 LLM 生成答案。四、操作步骤详解4.1 准备工作泡发木耳木耳提前泡发好如果着急可以用热水泡发以缩短等待时间。腌制肉片猪里脊切片放入碗中加入 20 ml 生抽、料酒、花椒粉打入一个鸡蛋搅拌均匀后加入淀粉建议红薯淀粉拌匀最后倒入 300 ml 食用油封浆腌制 15 分钟。食用油封浆的作用是隔绝空气、锁住水分同时让肉片下锅时更易打散。切配辅料蒜苔切段约 3 cm葱头切菱形块备用。菱形块受热均匀、成熟度一致也利于摆盘美观。4.2 过油与快炒滑肉起锅烧油油量要多油温五成热约 150 ℃筷子插入周围泛起细密小泡下入腌制好的肉片迅速将肉片打散待表面微焦后捞出控油备用。五成热油温下肉片既不会脱浆又能快速定型。爆香将锅中多余油倒出留 10 ml 油油温七成热约 180 ℃微微冒烟下入葱姜蒜爆香。炒配菜先下蒜苔炒至断生再下木耳、葱头加入生抽、花椒粉翻炒几下。合炒调味将之前炸好的肉片下入翻炒加 10 g 盐起锅前加 10 ml 醋和鸡精翻炒均匀后起锅装盘。4.3 附加技巧原文档要点火候控制炸肉片时表面微焦即可出锅过度油炸会导致肉质变老、失去滑嫩口感。薄芡提口感起锅前也可以打一个薄薄的水淀粉水淀粉勾芡让汤汁略微挂在肉片和配菜上口感更佳。五、纵深视角这份菜谱在「尝尝咸淡」RAG 系统中的完整流转5.1 元数据增强文件路径即分类依据这份菜谱位于data/C8/cook/dishes/meat_dish/目录下文件名即菜品名。系统在加载时通过 data_preparation.py 的_enhance_metadata完成三项自动标注菜品分类匹配路径中的meat_dish目录标注为「荤菜」菜品名称取文件主干名山西过油肉难度等级按前文所述正则解析★★★★为「困难」。最终该菜谱的元数据可概括为{dish_name: 山西过油肉, category: 荤菜, difficulty: 困难}这些字段被复制到其下所有子块中成为检索过滤与回答路由的关键依据。5.2 结构分块与父子映射按标题分割后本菜谱形成类似如下的子块结构山西过油肉的做法.md父文档 ├── 子块1# 山西过油肉的做法 简介 预估难度 ├── 子块2## 必备原料和工具原料清单 ├── 子块3## 计算用量配比表 ├── 子块4## 操作详细制作步骤 └── 子块5## 附加内容火候与勾芡技巧每个子块都会继承父文档的parent_id并生成独立的chunk_id映射关系记录在parent_child_map中。这正是 docs/chapter8/02_data_preparation.md 所讲的「小块检索大块生成」用户问「过油肉怎么做」时检索阶段命中「操作」子块实现精确召回生成阶段则通过get_parent_documents按命中次数排序并去重取回完整的山西过油肉菜谱交给 LLM保证回答上下文完整。5.3 查询流转与回答生成用户输入「山西过油肉怎么做」后main.py 中的主流程会依次执行查询路由LLM 将问题分类为detail详细查询走分步指导模式查询重写因问题包含具体菜名按规则保持原查询不变混合检索向量检索BGE 嵌入模型与 BM25 关键词检索并行再经 retrieval_optimization.py 的 RRF 重排融合取 top_k 子块父子还原命中子块回溯父文档按相关性排序去重分步生成调用 generation_integration.py 中的烹饪导师提示词产出包含「菜品介绍 / 所需食材 / 制作步骤 / 制作技巧」的结构化回答——其「制作技巧」小节会优先采用本菜谱「附加内容」中的火候与勾芡建议。5.4 配置说明与运行前提本菜谱作为知识库数据的一份子参与系统构建时无需任何额外标注。相关运行配置见 config.py其中data_path默认指向../../data/C8/cook即本菜谱所在目录的父级嵌入模型默认使用BAAI/bge-small-zh-v1.5LLM 默认使用 MoonshotKimi系列模型需要预先配置MOONSHOT_API_KEY环境变量。按 docs/chapter8/01_env_architecture.md 的说明在code/C8目录执行pip install -r requirements.txt安装依赖后运行python main.py即可启动交互式问答向系统提问「山西过油肉怎么做」或「推荐一道困难级别的荤菜」。小结山西过油肉这道菜本身浓缩了传统晋菜「过油滑肉、旺火快炒、陈醋收尾」的技法精髓而它在 all-in-rag 项目中的意义远不止一份菜谱——它同时是「尝尝咸淡」RAG 系统数据管道的一个典型样本路径提供分类、星级提供难度、标题结构提供分块边界、附加内容提供生成阶段的技巧素材。掌握这份菜谱的做法也就顺带理解了结构化菜谱数据如何零标注地流入 RAG 索引并产出高质量问答这正是本项目第 8 章实战的核心价值所在。【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表