孜然牛肉食谱全解析:从家常做法到 All-in-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菜谱文档为核心展开的技术文章前半部分完整讲解这道菜从备料、用量计算到出锅的每一步家常做法后半部分则从 Datawhale All-in-RAG 项目中 C8 章节 RecipeRAG 系统的视角剖析这份菜谱文档为何要这样组织——Markdown 标题层级、星级难度标记、目录分类、按人份用量公式化这些约定正是让一份普通菜谱能被大模型 RAG 系统精准加载、分块、检索与生成的根基。读完本文你既能照着做出地道孜然牛肉也能理解如何用同样的文档规范为自己的 RAG 知识库设计高质量数据。一、文档定位一份进入 RecipeRAG 知识库的荤菜菜谱在 data/C8/cook 目录下存放着 RecipeRAG 系统的全部菜谱语料。孜然牛肉.md位于dishes/meat_dish/子目录下属于荤菜类目是系统知识库中的普通一员。在 code/C8/main.py 的配置中默认数据路径为../../data/C8/cook相对于 code/C8/config.py系统启动时会通过rglob(*.md)递归扫描该目录下所有 Markdown 文件并全部载入向量库。这意味着这份菜谱文档不是孤立的文本而是会被完整的加载 → 元数据增强 → 分块 → 向量化 → 检索 → 生成流水线处理的知识库数据单元。这份文档的完整结构如下# 孜然牛肉的做法一级标题 难度评级 ├── ## 必备原料和工具 ├── ## 计算按人份用量 ├── ## 操作制作步骤 └── ## 附加内容二、菜谱全文与逐项解析2.1 难度评级文档开篇给出预估烹饪难度★★★三颗星代表中等难度。在 code/C8/rag_modules/data_preparation.py 中系统使用正则r★精确匹配连续星号数量并按映射表{5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单}将本菜自动归类为中等。这正是文档写法即元数据来源的典型例子——菜谱作者无需额外填写字段难度标签直接从正文中提取。2.2 必备原料和工具原文完整清单如下类别原料/工具主料牛柳或牛肩肉配菜青椒、小米椒香料孜然颗粒 粉调料生抽酱油、油、盐辅料淀粉、葱工具捣药罐可选几个值得注意的选料要点牛肉部位优先选用牛柳里脊或牛肩肉肉质嫩、纤维短适合快速煸炒孜然形态明确标注颗粒 粉颗粒孜然经捣碎后香气更浓、风味更足这也是后续步骤中要用捣药罐的原因捣药罐为可选工具原文说明时间紧张可跳过捣碎步骤为新手留出了简化路径。2.3 计算按人份的用量配比原文给出了精确的每份用量这是这份菜谱区别于普通菜谱的关键设计——用量全部按人份公式化原料用量/人牛肉250 g青椒2 颗每颗约 100 g孜然20 g小米椒3 颗每颗约 5 g生抽酱油20 ml淀粉10 g油15 ml盐3 g葱1 根每根约 20 g文档说明使用上述条件计算出计划使用的原材料比例依口味调整。也就是说做 2 人份时将所有用量乘以 2 即可同时盐、小米椒等可按个人口味增减。注原文档将青椒、葱的单位写作颗结合上下文理解青椒按颗计、葱按根计人均量分别约为 200 g 与 20 g可按此基准按人头换算。2.4 操作完整制作步骤原文共 8 步完整继承如下首先将小米椒切碎和孜然粒一起放入捣药罐捣碎成颗粒这样更入味。如果时间紧张可跳过捣碎步骤青椒切头去籽喜欢辣的可不去籽切成丝。葱切段牛肉提前解冻过一遍水洗干净晾干或用厨用纸吸干将牛肉顺着纹理切成片然后进行腌肉加入生抽、淀粉、油均匀搅拌静置 30 分钟腌肉是嫩肉的关键参见下文 2.5热锅下油放入葱爆出香味后放入腌好的牛肉煸炒牛肉变色后均匀放入孜然辣椒颗粒并炒熟然后下入青椒丝断生后放盐大火炒 1 分钟后关火再翻炒 30 秒保证受热均匀即可出锅。步骤中的三个关键技术点值得展开顺纹理切片与常规逆纹切肉不同本菜采用顺纹理切片配合淀粉上浆与快速煸炒可保持牛肉片形完整、口感嫩滑腌肉 30 分钟生抽提供底味淀粉挂浆锁水油则防止下锅粘连三者缺一不可大火 1 分钟 关火翻炒 30 秒利用锅体余温完成最后加热避免牛肉过老是保证嫩度的收尾技巧。2.5 腌肉技巧的补充说明原文档第 4 步中有一条指向../../tips/learn/学习腌.md的内部链接该路径在当前仓库中并不存在属于原始数据源的断链。为保证本文可读性这里将学习腌的核心思路以文字形式补全腌肉的本质是调味 锁水 防粘三步——先加生抽等液体调料让牛肉入味再加淀粉抓匀形成保护层锁住水分最后淋入少量食用油拌匀防止下锅时互相粘连静置时间建议不少于 30 分钟。这套逻辑与第 4 步的腌肉配方完全一致读者可直接套用。2.6 附加内容原文附加内容一节为空。从 code/C8/rag_modules/generation_integration.py 的提示词设计可以看出系统生成回答时会优先采用原文附加内容中的实用技巧若该节为空则会基于制作步骤自动总结关键要点或直接省略该部分——空小节不会影响 RAG 回答质量。三、RAG 友好的文档结构约定这份菜谱为何这样写如果只看做法这份菜谱是一份合格的家常菜谱但站在 All-in-RAG 项目 C8 章节的角度它的价值在于文档格式本身就是为机器解析设计的。数据准备模块 code/C8/rag_modules/data_preparation.py 中有四处与文档格式深度耦合的设计。3.1 Markdown 标题层级是分块的锚点在_markdown_header_split方法中系统使用MarkdownHeaderTextSplitter并按三级标题分割headers_to_split_on [ (#, 主标题), # 菜品名称 (##, 二级标题), # 必备原料、计算、操作等 (###, 三级标题) # 简易版本、复杂版本等 ] markdown_splitter MarkdownHeaderTextSplitter( headers_to_split_onheaders_to_split_on, strip_headersFalse # 保留标题便于理解上下文 )对孜然牛肉.md应用该分割器后会得到 5 个子块父文档# 孜然牛肉的做法完整菜谱 ├── 子块1主标题 难度评级 ├── 子块2## 必备原料和工具 食材清单 ├── 子块3## 计算 用量配比 ├── 子块4## 操作 制作步骤 └── 子块5## 附加内容这正是 docs/chapter8/02_data_preparation.md 中强调的小块检索大块生成父子文本块架构检索阶段用细粒度的子块如计算子块做精确匹配生成阶段再把完整父文档喂给大模型保证上下文完整。3.2 星级难度标记一行正则提取难度元数据如 2.1 节所述_enhance_metadata用re.search(r★, content)提取连续星号并映射为五档难度。这份文档写★★★系统就自动打上difficulty: 中等标签无需人工维护元数据。3.3 目录路径即分类CATEGORY_MAPPING定义了目录名到分类标签的映射CATEGORY_MAPPING { meat_dish: 荤菜, vegetable_dish: 素菜, soup: 汤品, dessert: 甜品, breakfast: 早餐, staple: 主食, aquatic: 水产, condiment: 调料, drink: 饮品 }孜然牛肉.md所在路径包含meat_dish因此自动获得category: 荤菜元数据。只要新增菜谱时放在正确的分类目录下分类标签就自动生效——这是知识库可扩展性的基础。3.4 文件名即菜名doc.metadata[dish_name] file_path.stem文件名孜然牛肉直接成为菜名元数据供检索回显与列表推荐使用。3.5 用量公式化面向需要多少食材类查询的检索单元计算小节把每种原料换算为X g/人本质上是为用量类查询准备的独立检索单元。当用户问两人份孜然牛肉需要多少牛肉时混合检索能精准命中子块 3再由父子映射回溯到完整文档生成带完整上下文与步骤的回答。四、文档在 RecipeRAG 流水线中的完整流转从启动到回答这份文档经历以下完整链路对应 code/C8/main.py 中RecipeRAGSystem的初始化与问答流程4.1 数据加载与元数据增强DataPreparationModule.load_documents()用rglob(*.md)递归加载全部菜谱为每个父文档基于相对路径生成确定性的parent_idMD5 哈希再经_enhance_metadata注入category、dish_name、difficulty三项核心元数据。孜然牛肉.md加载后的元数据形如source: .../dishes/meat_dish/孜然牛肉.md parent_id: md5(相对路径) doc_type: parent category: 荤菜 dish_name: 孜然牛肉 difficulty: 中等4.2 结构感知分块按 3.1 节的标题层级切分为 5 个子块每个子块继承父文档元数据并新增chunk_id、parent_id、doc_type: child、chunk_index同时写入parent_child_map建立映射。4.3 向量化索引构建code/C8/rag_modules/index_construction.py 使用HuggingFaceEmbeddings默认模型BAAI/bge-small-zh-v1.5CPU 推理、向量归一化将子块编码后存入 FAISS并可保存/加载本地索引./vector_index。4.4 混合检索与元数据过滤code/C8/rag_modules/retrieval_optimization.py 同时启用 FAISS 向量检索与 BM25 关键词检索再用 RRFReciprocal Rank Fusion公式1/(krank1)默认 k60融合重排。此外code/C8/main.py 的_extract_filters_from_query会从问题中提取分类与难度关键词调用metadata_filtered_search做条件过滤——例如问题含荤菜或中等时会自动叠加对应过滤。4.5 生成与父子回溯code/C8/rag_modules/generation_integration.py 的query_router先将问题路由为list/detail/general三类对detail类问题get_parent_documents依据parent_id将命中的多个子块智能去重合并为完整菜谱匹配子块越多的菜谱排序越靠前再以分步骤指导提示词含菜品介绍、所需食材、制作步骤、制作技巧四段结构生成回答。五、实战验证以孜然牛肉为查询的端到端流程假设运行 code/C8/main.py 的交互式问答需提前配置MOONSHOT_API_KEY环境变量模型默认kimi-k2-0711-previewtemperature0.1max_tokens2048提问孜然牛肉怎么做完整链路为查询路由query_router判断为detail查询重写问题含具体菜名属于具体明确的查询保持原查询不变见query_rewrite的分析规则混合检索hybrid_search(孜然牛肉怎么做, top_k3)在子块粒度上执行 FAISS BM25 融合检索大概率命中操作与主标题子块父子回溯get_parent_documents将命中的子块合并去重输出完整文档孜然牛肉分步生成generate_step_by_step_answer依据上下文_build_context会带上菜名、分类、难度元数据生成包含食材清单与分步做法的回答。对推荐几道中等难度的荤菜这类问题系统则走list路由并结合_extract_filters_from_query提取的{category: 荤菜, difficulty: 中等}过滤条件直接返回菜名列表——孜然牛肉.md的元数据正是这类推荐功能的支撑。六、小结用同样的文档规范继续扩充知识库通过拆解孜然牛肉.md这份菜谱文档可以总结出 RecipeRAG 知识库数据的四条写作规范结构规范用#/##/###三级标题组织做法/原料/计算/操作/附加内容让分块器能按语义切分元数据规范难度用连续星号标注、分类靠目录名表达、菜名用文件名承载三者均零成本自动提取量化规范用量按人份公式化既方便人类换算也形成了独立的用量子块支撑精确检索扩展规范新增菜谱只需按分类放入dishes/分类/目录并遵循上述结构即可被系统自动加载、分块、索引无需改动任何代码。本文档相关源码与说明均可在仓库中进一步研读code/C8/rag_modules/data_preparation.py加载/分块/去重、code/C8/rag_modules/index_construction.py向量索引、code/C8/rag_modules/retrieval_optimization.py混合检索与 RRF 重排、code/C8/rag_modules/generation_integration.py路由与生成以及配套教程 docs/chapter8/02_data_preparation.md。理解了文档与代码的这套约定你就能在自己的 RAG 项目中复刻出同样高质量的知识库数据管线。赞分享教程人工智能大模型RAG【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址https://gitcode.com/datawhalechina/all-in-rag点击查看免费下载相关推荐从「咖喱肥牛」菜谱看 all-in-rag 食谱知识库数据设计、结构分块与 RAG 检索实战从「咖喱肥牛」菜谱看 all in rag 食谱知识库数据设计、结构分块与 RAG 检索实战 在 Datawhale 的 all in rag 开源仓库中第教程人工智能大模型RAGDatawhale All-in-RAG 食谱知识库实战台式卤肉饭完整做法指南Datawhale All in RAG 食谱知识库实战台式卤肉饭完整做法指南 导读 本文以 Datawhale All in RAG 项目 C8 章节尝尝教程人工智能大模型RAGall-in-rag 食谱知识库实战家常混合烤鱼完整做法详解all in rag 食谱知识库实战家常混合烤鱼完整做法详解 本篇文章以 all in rag https://link.gitcode.com/i/94a3教程人工智能大模型RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Modbus协议包实战:从RTU报文到CRC校验的调试全攻略

Modbus协议包实战:从RTU报文到CRC校验的调试全攻略

简介:一份面向C#开发者的Modbus工业通信资料包,围绕NModbus库系统讲解TCP、RTU、ASCII三种模式,涵盖PLC、RTU与自动化设备的数据交换场景,适合从入门到进阶的工业物联网实践。包内共359个文件,压缩包仅3.71MB&#xff…

2026/9/23 15:24:00 阅读更多 →
企业官网数字化转型:核心能力与实战策略

企业官网数字化转型:核心能力与实战策略

1. 企业数字化浪潮下的官网价值重塑2026年的商业环境中,企业官网正经历着从"线上名片"到"战略枢纽"的质变。最近在为某跨国消费品集团做数字化咨询时,他们的CMO向我展示了一组数据:新版官网上线半年后,官网直…

2026/9/23 15:24:00 阅读更多 →
nuqs 自定义 Parser 实现指南:从 URL 字符串到类型安全状态的完整实践

nuqs 自定义 Parser 实现指南:从 URL 字符串到类型安全状态的完整实践

前端状态管理 【免费下载链接】next-usequerystate Type-safe search params state manager for React frameworks - Like useState, but stored in the URL query string. 项目地址: https://gitcode.com/gh_mirrors/ne/next-usequerystate 点击查看 免费下载 本文…

2026/9/23 15:24:00 阅读更多 →

最新新闻

深度学习算法原理及应用:从神经网络到CNN实战与避坑指南

深度学习算法原理及应用:从神经网络到CNN实战与避坑指南

简介:这份PDF资料面向机器学习初学者与需要梳理深度学习理论脉络的读者,系统讲解深度学习算法的基本原理与典型应用,帮助建立从神经网络基础结构到训练过程的完整认知。文件为单个PDF文档,压缩包约496KB,内容源自期刊论…

2026/9/23 17:26:45 阅读更多 →
基于YOLO和PyTorch的垃圾分类目标检测系统实战

基于YOLO和PyTorch的垃圾分类目标检测系统实战

简介:一套基于深度学习的垃圾分类目标检测系统源码,主要面向毕业设计、期末大作业和课程设计,适合已有Python基础、希望快速搭建同类项目的学生使用。代码注释完善,项目结构清晰,下载部署后即可运行;压缩包…

2026/9/23 17:26:45 阅读更多 →
5分钟搞定工具英语查询:源码解析与实战避坑指南

5分钟搞定工具英语查询:源码解析与实战避坑指南

5分钟搞定工具英语查询:源码解析与实战避坑指南 刚接手新项目,复制来的代码跑不通,报错信息全是英文,查半天不知道哪行代码出了问题?别慌,这不是你英语差,是工具没选对。很多开发者卡在“报错看不懂”这一步,其实只要搞懂 源码解析…

2026/9/23 17:26:45 阅读更多 →
YOLO11打架检测实战:三格式数据校验与跨平台训练避坑指南

YOLO11打架检测实战:三格式数据校验与跨平台训练避坑指南

简介:本资源是一套面向智能安防与计算机视觉开发者的目标检测实战数据集,聚焦监控场景下的打架行为识别任务,适用于高校科研、算法工程师落地项目及AI安全应用开发。数据集包含1000张真实监控场景图像,覆盖街道、酒吧、公交、监狱…

2026/9/23 17:26:45 阅读更多 →
Apache Arrow 日常开发工具 Archery 完全指南:安装、命令与 Docker 工作流

Apache Arrow 日常开发工具 Archery 完全指南:安装、命令与 Docker 工作流

Apache Arrow 日常开发工具 Archery 完全指南:安装、命令与 Docker 工作流 【免费下载链接】arrow Apache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing 项目地址: https://gitcode.com/gh_mirrors/arrow12/arr…

2026/9/23 17:26:45 阅读更多 →
Apache DolphinScheduler 接入 AWS Athena 数据源:完整配置指南与源码解析

Apache DolphinScheduler 接入 AWS Athena 数据源:完整配置指南与源码解析

Apache DolphinScheduler 接入 AWS Athena 数据源:完整配置指南与源码解析 【免费下载链接】dolphinscheduler Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code 项目地址: https:/…

2026/9/23 17:25:45 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

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

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

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

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

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

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

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

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

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

2026/9/23 9:53:41 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/23 9:53:40 阅读更多 →