- 教程
- 人工智能
- 大模型
- RAG
【免费下载链接】all-in-rag
🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/
水煮肉片是一道以麻辣鲜香著称的经典川菜,讲究"肉片滑嫩、刀口椒香、红油亮泽",适合下饭,但制作流程较长、细节较多,初学者通常需要 1~2 小时才能完成。本文以 Datawhale all-in-rag 项目仓库中收录的水煮肉片菜谱为蓝本,完整还原其原料清单、精确用量配比与全流程操作步骤,并在此基础上结合项目 C8 章"尝尝咸淡"RAG 食谱问答系统的实现,说明这样一份结构化 Markdown 菜谱是如何被解析、分块并转化为可检索知识库数据的。读完本文,你既能按图索骥做出一道合格的水煮肉片,也能理解它在 RAG 数据管道中的角色。
一、菜品概览:麻辣鲜香背后的难度来源
水煮肉片的核心味型是"麻辣鲜香",灵魂在于两个关键点:
- 肉片滑嫩:通过腌制(盐、胡椒粉、生抽、料酒打底味)加上鸡蛋清与土豆淀粉形成的"润滑膜",再以植物油封油防止粘连,最终实现久煮不柴的口感;
- 刀口辣椒:干辣椒与青花椒小火干煸后剁细,最后以高温菜籽油一次性泼香,激发出浓郁的糊辣香气。
这份菜谱在仓库中被标注为预估烹饪难度:★★★★★(五颗星),属于最高难度档位。从烹饪时间看,初学者一般需要 1~2 小时,主要耗时集中在切肉片、腌制、炒底料与泼油等环节。
值得一提的是,在 all-in-rag 项目的 C8 章 RAG 系统中,星级标记并非只是给人看的装饰。数据准备模块data_preparation.py 会通过正则表达式re.search(r'★+')匹配正文中连续出现的星号数量,并将星级映射为结构化难度元数据:5 星 →非常困难,4 星 →困难,3 星 →中等,2 星 →简单,1 星 →非常简单。也就是说,用户向问答系统提问"有什么非常困难的菜"时,这份菜谱就会凭借difficulty=非常困难的元数据被精确过滤命中。
二、必备原料与工具清单
按用途可将原料分为五组,便于备菜时对照检查:
| 类别 | 原料 |
|---|---|
| 主料 | 猪里脊肉 |
| 腌制料 | 食用盐、胡椒粉、生抽酱油、料酒、鸡蛋清、土豆淀粉 |
| 配菜 | 豆芽、凤尾、芹菜、蒜苗 |
| 小料 | 大蒜、生姜、红泡椒 |
| 香料与调味 | 青花椒、干辣椒(小米辣)、红油豆瓣、鸡精、白砂糖、小葱 |
| 油脂 | 植物油、菜籽油 |
其中凤尾是莴笋的嫩尖部分(带叶的莴笋头),与豆芽、芹菜、蒜苗一起构成垫底蔬菜;红油豆瓣(即郫县豆瓣)是炒出红油的底味来源;菜籽油用于最后一步高温泼油,其特有的油脂香气是川菜糊辣风味的关键。此外还需要一把趁手的菜刀和一口深口炒锅(或汤锅),以及用于盛装成品的碗。
三、用量配比:一份 300g 里脊肉的精确计算
菜谱原文档的"计算"章节给出了基于300g 里脊肉的精确配比,其中多个调料标注了可调节范围,方便按口味灵活增减:
| 原料 | 用量 | 说明 |
|---|---|---|
| 猪里脊肉 | 300g | 主料基准量 |
| 小葱 | 2 根 | 最后撒面用 |
| 生姜 | 10g | 剁碎炒料 |
| 大蒜 | 20g | 剁碎炒料 |
| 红泡椒 | 20g | 根据受辣程度可选 0~40g |
| 蒜苗 | 2 根 | 拍散切段垫底 |
| 芹菜 | 3 根 | 切段垫底 |
| 红油豆瓣 | 5ml(步骤中实际用到 10g) | 炒出红油 |
| 鸡精 | 1.5g | 调味提鲜 |
| 生抽酱油 | 5g | 腌制打底味 |
| 食用盐 | 5g | 分多次使用(腌制 1.5g、垫底菜 1g、汤汁 2.5g) |
| 胡椒粉 | 2g | 腌制 1g,汤汁调味 1g |
| 料酒 | 3g | 腌制去腥 |
| 鸡蛋清 | 1 个 | 上浆锁嫩 |
| 土豆淀粉 | 7g | 与蛋清混合成浆 |
| 植物油 | 280g | 想吃重油可多加 100g;其中 30g 封油、50g 炒香料、100g 炒配菜、150g 炒底料 |
| 菜籽油 | 200g | 想吃重油可多加 100g;用于最后泼油 |
| 绿豆芽 | 100g | 垫底 |
| 凤尾 | 1 根 | 改刀成小条垫底 |
| 白砂糖 | 1g | 提鲜 |
| 小米辣干辣椒 | 20g | 根据受辣程度可选 0~40g |
| 青花椒 | 5g | 想吃麻可多加 5g |
提示:原文档中"红油瓣酱 5ml"与操作步骤中"豆瓣 10g"存在单位口径差异,实操中以炒制时实际下锅的豆瓣量为准,5ml 与 10g 都属于常规用量范围,可按口味调整。
这份用量表的特点是"小料精确到克、大料给足余量",尤其是植物油与菜籽油总计约 480g,体现了水煮肉片"重油重辣"的川菜底子。在 RAG 数据准备模块中,这一节会被MarkdownHeaderTextSplitter切分为独立的子块(chunk),元数据带有doc_type=child、chunk_index与parent_id,从而保证用户问"水煮肉片需要什么食材"时能精确命中"必备原料和工具 / 计算"子块,而不是整篇文档。
四、操作步骤详解
4.1 肉片处理:切薄片与去血水
将里脊肉改刀成小块,再切成约 2 毫米的薄片(可根据自己口感调整厚度)。切好的肉片放入碗中,加入清水清洗两遍以去除血水和杂质,捞出后挤干水分备用。这一步是后续腌制入味的基础——血水处理不干净,肉片容易发腥且上浆不牢。
4.2 腌制:打底味 + 上浆 + 封油
腌制是"肉滑嫩"的核心,分三步完成:
- 打底味:碗中加入食用盐 1.5g、胡椒粉 1g、生抽酱油 5g、料酒 3g,朝一个方向搅拌 2 分钟使其充分入味;
- 上浆:另取一个碗,加入 1 个鸡蛋清与 7g 土豆淀粉,朝一个方向搅拌均匀后倒入肉中,再次朝一个方向搅拌均匀——此时肉表面会形成一层润滑膜,这是肉片鲜嫩的关键;
- 封油:最后加入 30g 植物油轻轻搅拌,防止肉片互相粘连。
原文档特别强调:搅拌要始终朝一个方向,且血水务必处理干净,二者共同保证肉片的滑嫩质地。
4.3 配菜与小料预处理
- 绿豆芽 100g、凤尾 1 根(改刀成小条)、芹菜 3 根(切小段)、蒜苗 2 根(拍散后切段);
- 大蒜 20g 剁碎、生姜小块剁碎、红泡椒 20g 剁碎。
4.4 制作刀口辣椒
取小米辣干辣椒 15g、青花椒 3g。锅内加入油滑锅,油稍许热后将多余的油倒出,留 50g 底油,下入干辣椒、花椒,开小火炒香——切记不要炒糊,颜色变黑即可(注意:此处"变黑"指辣椒炒至酥脆略焦的临界状态,需全程小火盯守),倒出后在菜板上剁细。这就是川菜中经典的"刀口辣椒",是水煮肉片糊辣风味的来源。
4.5 炒垫底配菜
锅烧热,放入 100g 植物油烧至6 成热,加入 2g 青花椒与干辣椒爆香,随后将配菜(豆芽、凤尾、芹菜、蒜苗)下锅,加入 1g 食用盐,炒至断生后盛入碗中垫底备用。
4.6 炒底料与熬汤
将锅洗干净,加入 150g 植物油烧至 6 成热,加入制作好的姜蒜红泡椒爆香,随后加入豆瓣约 10g,开小火将豆瓣爆香并炒出红油即可——小火慢炒是为了让豆瓣的红油充分释放而不焦糊。
接着加入800 毫升清水(根据实际情况选择水量),大火烧开后转小火调味:
- 食用盐 2.5g
- 鸡精 1.5g
- 白砂糖 1g(提鲜)
- 胡椒粉 1g
- 水淀粉 5g(根据实际情况选择,用于将汤汁收浓稠一点)
4.7 汆煮肉片
汤汁烧开后,开小火将腌制好的肉片分开依次下锅(逐片下锅防止成坨),随后开中火将肉片烫熟,期间用锅铲轻轻推动避免粘连。待汤汁再次烧开、肉片熟后,用漏勺捞出放入碗中配菜上,再将原汤倒入碗中(汤量不超过菜品)。
4.8 泼油激香
在碗中均匀撒上刀口辣椒、蒜蓉和葱花。将锅洗干净,加入 200g 菜籽油,烧至7 成热,然后一次性均匀泼在碗中肉片上(注意安全,防止热油飞溅)。高温菜籽油瞬间激发出刀口辣椒与葱蒜的香气,水煮肉片即告完成。
五、附加技巧与口味变化
原文档"附加内容"给出了三条实战经验,同样值得完整保留:
- 垫底蔬菜可自由替换:根据自己口味选择蘑菇、白菜、油麦菜等,不一定拘泥于豆芽、凤尾、芹菜、蒜苗的固定组合;
- 刀口辣椒可简化:如果嫌制作刀口辣椒麻烦,可以直接用干辣椒段和青花椒代替,风味略有差异但步骤更省;
- 腌制是成败关键:搅拌始终朝一个方向、血水处理干净,配合鸡蛋清与淀粉的上浆,是保证肉片滑嫩的核心要点。
此外,原文档还提示了一条重要变化:水煮牛肉也可以按照同样的做法,只需将主料由猪里脊肉替换为牛肉(建议选用牛里脊或牛通脊并逆纹切薄片),其余流程与配比基本一致。本做法参考了美食作家王刚的公开视频教程,其"刀口辣椒 + 高油温泼香"的操作细节正是川菜水煮系列的通用范式。
六、延伸:这份菜谱在 all-in-rag 项目中的 RAG 化处理
这份水煮肉片菜谱并非孤立文件,它是 all-in-rag 项目 C8 章实战项目"尝尝咸淡 RAG 系统"的语料样本之一。整个菜谱库以data/C8/cook/为数据根目录,按菜系类别组织子目录,水煮肉片.md位于dishes/meat_dish/目录下。在数据准备模块中,data_preparation.py 通过Path.rglob("*.md")递归加载全部菜谱,并执行三类元数据增强:
- 分类推断:从文件路径中匹配
meat_dish目录名,映射为中文分类荤菜(映射表见代码中的CATEGORY_MAPPING); - 菜品名称:直接取文件名
水煮肉片作为dish_name; - 难度提取:通过正则匹配正文中的
★★★★★,解析为非常困难。
在分块环节,02_data_preparation.md 详细说明了"父子文本块"架构:使用MarkdownHeaderTextSplitter按#、##、###三级标题分割,并设置strip_headers=False保留标题以利于理解上下文。以水煮肉片为例,父文档会被切分为五个子块:
父文档:水煮肉片.md(完整菜谱) ├── 子块1:# 水煮肉片的做法 + 简介 + 难度评级 ├── 子块2:## 必备原料和工具 + 食材清单 ├── 子块3:## 计算 + 用量配比 ├── 子块4:## 操作 + 详细制作步骤 └── 子块5:## 附加内容每个子块都会携带parent_id(指向父文档)与独立的chunk_id,建立parent_child_map映射。检索阶段使用小块精确匹配(例如"水煮肉片需要什么食材"可精准命中子块 2/3),生成阶段则通过get_parent_documents()按命中次数聚合排序、智能去重后返回完整父文档给 LLM,实现"小块检索、大块生成"的设计目标。这一整套流程在 config.py(data_path = "../../data/C8/cook"、top_k = 3、embedding_model = "BAAI/bge-small-zh-v1.5")与 main.py(RecipeRAGSystem主类)中落地为可运行的问答系统。
参考资料
- 本做法参考美食作家王刚的公开视频教程(《水煮肉片的做法》)。
- all-in-rag 项目 C8 章完整讲解:环境配置与项目架构、数据准备模块实现、索引构建与检索优化、生成集成与系统整合。
- 教程
- 人工智能
- 大模型
- RAG
【免费下载链接】all-in-rag
🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/
相关推荐
CookLikeHOC 铜锅川味水煮肉片:标准汤底调配与铜锅煮制全流程详解
CookLikeHOC 铜锅川味水煮肉片:标准汤底调配与铜锅煮制全流程详解 铜锅川味水煮肉片是 CookLikeHOC 项目中「煮锅」系列的代表性川味菜品之一,
文档知识库教程鳊鱼炖豆腐的家常做法:原料配比、煎制火候与炖煮流程全解析
鳊鱼炖豆腐的家常做法:原料配比、煎制火候与炖煮流程全解析 本文以 鳊鱼炖豆腐.md https://link.gitcode.com/i/0e5ca676b52
教程人工智能大模型RAGCookLikeHOC 菜品复刻指南:爆炒牛肉的原料溯源、精确配比与大火快炒工艺
CookLikeHOC 菜品复刻指南:爆炒牛肉的原料溯源、精确配比与大火快炒工艺 导读 本文基于 CookLikeHOC 仓库中 炒菜/爆炒牛肉.md http
文档知识库教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考