
All-in-RAG 实战数据解析手撕包菜食谱的标准化写法与 RAG 知识库接入【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag导读本文以 All-in-RAG 项目第八章食谱问答系统知识库中的 手撕包菜.md 为样本系统拆解一份结构化食谱文档的完整写法从必备原料、用量计算到可复现的分步操作并进一步揭示这份文档如何作为 RAG 数据源被项目源码加载、自动打标、按标题分块并最终被检索问答。读完本文你既能按图索骥做出一道地道的湘味手撕包菜也能掌握为 RAG 知识库编写高解析度文档的工程规范。菜品背景一道色香味俱全的湘菜代表手撕包菜是一道色香味俱全的汉族名菜属于湘菜系。与刀切的包菜相比手撕的断面不规则、纤维保留更完整在爆炒时更容易挂汁入味口感爽脆与软嫩兼具是素菜中少见的下饭神器。在 All-in-RAG 的食谱知识库中它被归档在vegetable_dish素菜分类下预估烹饪难度为 ★★★中等恰好是验证 RAG 系统分类标签与难度标签解析能力的典型样本。必备原料与工具在动手之前先把原料清单备齐。这份清单全部来自原文档是后续计算环节的物料基础主料包菜1 颗荤料五花肉200 g用于煸出油脂增香配料小米辣 2 根、姜 2 片、蒜头 2 粒、蒜苗 0.5 根调味料食用油、料酒、生抽、香醋、鸡精、盐工具方面无需特殊厨具菜刀、砧板、炒锅推荐铁锅、锅铲、用于清洗和沥干的碗盆即可。整道菜对设备要求极低属于家常可复现的范畴。用量计算每份的精确配比原文档给出了每份的精确用量这是文档中最重要的可复现参数直接决定了成品的咸淡与油润度食材/调料每份用量包菜1 颗五花肉200 g小米辣2 根食用油60 ml分两次各 30 ml料酒5 ml生抽5 ml香醋5 ml鸡精2 g姜2 片蒜头2 粒蒜苗0.5 根盐5 g2 g 用于洗菜腌制3 g 用于炒菜注意油量分为两段使用第一段 30 ml 用于单独煸炒包菜第二段 30 ml 用于煸炒五花肉这是先分炒、后合炒工艺的量化体现。盐同样分两处2 g 用于清洗时腌制锁水3 g 在炒制中途加入。操作步骤五步出锅的完整流程原文档的操作步骤是本文的骨架下面按顺序展开并融入附加内容中的关键技巧说明。第一步处理包菜包菜对半切开去掉中间白色部分菜帮只保留叶片。菜帮纤维粗、水分大若保留会让成品口感生硬且出水过多。第二步手撕与预处理将包菜手撕成大小适中的片状放入碗中加入 2 g 盐用手抓拌均匀后清洗再沥干备用。这一步有两个作用其一盐腌能锁住包菜水分防止后续爆炒时大量出水变成煮菜其二提前给包菜上一层底味。注意清洗后务必充分沥干否则下锅遇热油易溅油且水分会拉低锅温。第三步备料姜切片、蒜头拍碎或切片、小米辣切圈、蒜苗切段处理后备用。配料提前备齐是为了在爆炒的高火阶段不手忙脚乱——这也正是预处理在烹饪流程中的工程意义。第四步处理五花肉五花肉切片清水清洗后备用。五花肉是这道素菜的灵魂荤料通过煸炒逼出猪油让包菜吸收肉香与油脂达到素菜荤做的效果。第五步分炒与合炒这是整道菜的核心工艺分四个小环节单独煸炒包菜锅中加入 30 ml 食用油倒入包菜大火翻炒 1 分钟加入 3 g 盐继续大火翻炒 2 分钟后取出备用。翻炒时间需根据实际情况调整一般炒到包菜七分熟即可——判断标准是包菜已出水质感变软煸炒五花肉锅中加入 30 ml 食用油倒入五花肉大火翻炒 1 分钟逼出油脂至肉片微卷爆香配料倒入姜片、蒜头、小米辣等材料翻炒 1 分钟激发出香料的辛香合炒调味倒回包菜翻炒加入香醋、料酒、鸡精原文档步骤中料酒出现两次实际操作按 5 ml 总量把控即可大火继续翻炒2 分钟后出锅。最后一步的翻炒时间可根据实际情况和个人口感灵活调整喜欢爽脆口感的缩短时间喜欢软糯入味的多炒一会儿。烹饪技巧小结原文档附加内容七分熟判断步骤五第一阶段的目标不是炒熟而是炒到出水质感变软为后续合炒预留成熟空间先盐锁水中途加盐的核心是锁住包菜水分并赋予底味避免合炒阶段大量出水稀释调味时间弹性炒制时间以实际火候和个人口感为准文档中的分钟数是参考基线而非硬性规定。从 RAG 视角看这份食谱标准化文档的工程价值这份食谱文档之所以值得剖析不仅因为菜谱本身更在于它恰好是 All-in-RAG 第八章食谱问答 RAG 系统知识库中的一份标准数据。以它为样本可以完整看到仓库源码如何处理这类 Markdown 食谱。1. 目录结构即分类标签在 data_preparation.py 中CATEGORY_MAPPING将目录名映射为中文分类vegetable_dish: 素菜。加载文档时_enhance_metadata会从文件路径中提取category本文件为素菜、以文件名stem提取dish_name手撕包菜。这意味着文档所在目录本身就是 RAG 元数据的一部分命名规范直接决定检索过滤的准确性。2. 难度星号被正则解析为等级_enhance_metadata使用正则r★匹配文档中的连续星号再映射到{5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单}。本文件的★★★会被自动解析为中等难度这就是为什么文档开头要保留星号标记——它是机器可读的结构化信息。3. 标题结构驱动分块chunk_documents使用MarkdownHeaderTextSplitter按#菜品名、##必备原料、计算、操作等二级标题、###三级标题将文档切分成多个带chunk_id、parent_id的子块并建立父子映射。手撕包菜这份文档原料清单/用量计算/操作步骤的清晰标题划分正是为了让检索时能精准命中需要 200g 五花肉或怎么处理包菜这类局部问题。4. 检索与问答链路文档被分块后经 retrieval_optimization.py 的混合检索向量检索 BM25 RRF 重排召回再通过 main.py 中的ask_question结合查询路由列表/详细/一般生成回答详细查询还会经get_parent_documents还原完整父文档保证分步指导回答不缺步骤。运行时可通过 config.py 配置数据路径、模型与top_k等参数。如何在本仓库中运行验证该食谱属于 code/C8 项目的食谱问答 RAG 系统数据源默认data_path指向data/C8/cook。若想实际体验可参考 docs/chapter8 系列文档按 requirements.txt 安装依赖langchain、faiss-cpu、sentence-transformers、openai 等在code/C8目录下运行 main.py 启动交互式问答提问如手撕包菜需要哪些原料或素菜里有哪些中等难度的菜系统会经由元数据过滤与混合检索返回基于本文档的答案。需要注意的是运行前需配置MOONSHOT_API_KEY环境变量且依赖 Milvus 之外还需本地/远程模型服务可用具体以 config.py 与章节文档为准。结语一份看似简单的手撕包菜食谱在 All-in-RAG 项目中同时承担着可执行菜谱与结构化 RAG 数据双重角色。它示范了一条重要工程经验为 RAG 知识库编写文档时稳定的标题层级、规范的文件命名、量化的参数与可机读的标记如难度星号会直接转化为更高的解析率与检索精度。学会读这份文档也就学会了写下一份更好的知识库文档。【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考