山西过油肉菜谱全解析:从传统晋菜做法到「尝尝咸淡」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),仅供参考

相关新闻

搞定蓝色背景高频面试题:源码拆解助你通关

搞定蓝色背景高频面试题:源码拆解助你通关

搞定蓝色背景高频面试题:源码拆解助你通关 看了一堆教程还是不会写项目?别慌,这是很多开发者的通病。其实,把那些 高频面试题 背后的源码逻辑吃透,比刷一百道八股文都管用。 今天咱们不聊虚的,直接扒一扒前端和后端处理“ 蓝色背景…

2026/9/23 12:57:28 阅读更多 →
维度建模核心概念与术语详解:事实表、粒度、星型模型一次讲清

维度建模核心概念与术语详解:事实表、粒度、星型模型一次讲清

1. 开头:为什么要先搞懂维度建模的概念和术语做过几年数据仓库的人都有这种感受:看建模文档时被各种名词卡住,事实表、维度表、粒度、代理键、缓慢变化维、星型模型、雪花模型……每个词都不算难,但放在一起就晕了。更尴尬的是开评…

2026/9/24 18:53:03 阅读更多 →
变容二极管调频电路课程设计:从原理到实测的全流程指南

变容二极管调频电路课程设计:从原理到实测的全流程指南

简介:变容二极管调频电路课程设计资料面向电子信息、通信工程等专业学生与电路设计入门者,围绕利用变容二极管实现直接调频这一核心课题,提供从方案论证、原理分析到单元电路设计的完整思路。文档以2CC1C变容二极管为例,详细介绍了…

2026/9/24 13:02:32 阅读更多 →

最新新闻

2026年七款主流微信编辑器深度评测:AI、SVG与Markdown选型指南

2026年七款主流微信编辑器深度评测:AI、SVG与Markdown选型指南

1. 为什么2026年还要重新聊微信编辑器这件事我做公众号内容运营快八年了,从最早在后台那个巴掌大的富文本框里一个字一个字敲,到后来用各种第三方编辑器套模板,再到现在团队里一半的稿子先过一遍AI工具再进排版流程,中间踩过的坑、…

2026/9/24 18:59:32 阅读更多 →
微信小程序+Java远程在线诊疗系统:从架构设计到避坑实战

微信小程序+Java远程在线诊疗系统:从架构设计到避坑实战

简介:这是一套面向高校计算机相关专业毕业设计的微信小程序远程在线诊疗系统完整资料,适合正在准备毕设、需要真实项目练手的同学参考。系统划分管理员、医生、用户三种角色:管理员负责用户、医生、科室类型与信息、患者信息、通知公告、医院…

2026/9/24 18:59:32 阅读更多 →
国家中小学智慧教育平台电子课本下载工具:从粘贴网址到 PDF 落地的完整教程

国家中小学智慧教育平台电子课本下载工具:从粘贴网址到 PDF 落地的完整教程

国家中小学智慧教育平台电子课本下载工具:从粘贴网址到 PDF 落地的完整教程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课…

2026/9/24 18:59:32 阅读更多 →
2026企业级代码检查工具选型与落地实战指南

2026企业级代码检查工具选型与落地实战指南

1. 为什么“代码质量左移”在2026年成了绕不开的硬仗“代码质量左移”这个词,前几年还只是架构师们在技术沙龙上聊的前瞻概念,到了2026年,它已经变成了很多研发团队每周例会上被反复提及的硬指标。所谓左移,说白了就是把质量保障的…

2026/9/24 18:59:32 阅读更多 →
论文降重与降AIGC分道扬镳:双引擎如何破解查重与AI检测的困局

论文降重与降AIGC分道扬镳:双引擎如何破解查重与AI检测的困局

又到了一年中最热闹的“论文季”,后台私信里清一色都是同一个问题:老师要求先过一遍查重,再用AIGC检测工具过一遍,结果两边都有红色警告,改到怀疑人生。我太懂这种感觉了——去年我自己的毕业论文就是这样熬过来的&…

2026/9/24 18:59:32 阅读更多 →
Flutter在OpenHarmony上的家庭相册实战:分组设计与性能优化

Flutter在OpenHarmony上的家庭相册实战:分组设计与性能优化

做 OpenHarmony 应用也有一段时间了,最近刚好在做一个家庭相册 App 的实战项目,框架用的是社区维护的 Flutter for OpenHarmony,功能里最有意思、也是最花心思的部分,就是“家庭分组”的实现。整个项目做完,我对 Flutt…

2026/9/24 18:58:32 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →