ARTICLE DETAIL

资讯详情

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

老妈蹄花菜谱数据解析:以结构化 Markdown 驱动的 RAG 食谱问答实战

老妈蹄花菜谱数据解析:以结构化 Markdown 驱动的 RAG 食谱问答实战 教程人工智能大模型RAG【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址https://gitcode.com/datawhalechina/all-in-rag点击查看免费下载老妈蹄花是“尝尝咸淡 RAG 系统”项目实战章节中一道典型的荤菜类菜谱数据其文件 老妈蹄花.md 完整遵循了 HowToCook 风格的结构化模板——一级标题、简介与难度评级、必备原料和工具、计算、操作、附加内容。在 docs/chapter8 的实战项目中这类菜谱正是“小块检索、大块生成”父子文本块架构的直接训练语料系统会按标题层级将其切分为子块用于精确检索并在生成时回传完整父文档保证上下文完整。读完本文你将掌握这类结构化菜谱的解析方法、元数据增强规则、Markdown 结构分块逻辑以及如何把它接入code/C8中可运行的 RAG 检索链路。一、菜谱文档的数据结构剖析1.1 一级标题与难度评级老妈蹄花这道菜的文件以“# 老妈蹄花的做法”作为一级标题紧接着是一段简介和星级难度标记# 老妈蹄花的做法 [![result 3](https://raw.gitcode.com/datawhalechina/all-in-rag/raw/583a61b09869bc3afc4552289171f6ec188f2c76/data/C8/cook/dishes/meat_dish/老妈蹄花/result3.jpg?utm_sourcegitcode_repo_files)](https://link.gitcode.com/i/1a8cc09b18241f969f9111ee80e4a58b) 红烧猪蹄营养丰富口感细腻软烂脱骨配上酸辣汁简直太香 预估烹饪难度★★★★这段内容在 data_preparation.py 的_enhance_metadata中被专门解析源码使用正则re.search(r★, content)匹配连续星号再按{5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单}映射到难度标签。因此“★★★★”会被识别为“困难”这一难度标签会写入文档元数据供后续 retrieval_optimization.py 的元数据过滤检索使用——例如用户问“有什么难度高的硬菜”时可以按 difficulty 过滤出此类菜谱。1.2 结构化小节H2正文被严格划分为 4 个 H2 小节这是数据准备模块按标题分块的核心依据小节标题语义作用对应分块## 必备原料和工具食材清单子块原料与工具## 计算用量配比子块计算## 操作制作步骤子块操作## 附加内容变化做法与补充说明子块附加内容在 docs/chapter8/02_data_preparation.md 中这种结构与“西红柿炒鸡蛋”示例完全一致说明这是整个菜谱数据集的通用约定一级标题提供菜名二级标题提供章节语义让“用户问食材、步骤、用量”这类问题可以精确命中对应子块。二、元数据增强从文件路径到结构化标签老妈蹄花位于data/C8/cook/dishes/meat_dish/目录下这一路径信息在数据准备阶段被转化为分类标签。源码 data_preparation.py 定义了CATEGORY_MAPPINGCATEGORY_MAPPING { meat_dish: 荤菜, vegetable_dish: 素菜, soup: 汤品, dessert: 甜品, breakfast: 早餐, staple: 主食, aquatic: 水产, condiment: 调料, drink: 饮品 }由于文件路径包含meat_dish系统会为该文档打上category 荤菜标签文件名老妈蹄花则被提取为dish_name。这三个元数据字段category、dish_name、difficulty与parent_id、doc_type一起构成了后续检索过滤和去重的关键依据。在 main.py 中_extract_filters_from_query会从用户问题中识别“荤菜”“困难”等关键词并自动转为过滤条件。三、Markdown 结构分块与父子文本块3.1 分块器的标题层级配置data_preparation.py 的_markdown_header_split使用 LangChain 的MarkdownHeaderTextSplitter按三级标题切分headers_to_split_on [ (#, 主标题), # 菜品名称 (##, 二级标题), # 必备原料、计算、操作等 (###, 三级标题) # 简易版本、复杂版本等 ] markdown_splitter MarkdownHeaderTextSplitter( headers_to_split_onheaders_to_split_on, strip_headersFalse # 保留标题便于理解上下文 )strip_headersFalse表示分割后保留标题文本这样每个子块自带章节语义例如“## 操作”既便于理解上下文也让向量检索能捕捉到标题关键词。以老妈蹄花为例分割后的子块结构为父文档老妈蹄花.md完整菜谱 ├── 子块1# 老妈蹄花的做法 简介 难度评级 ├── 子块2## 必备原料和工具 食材清单 ├── 子块3## 计算 用量配比 ├── 子块4## 操作 详细制作步骤 └── 子块5## 附加内容3.2 父子关系的建立每个子块都会继承父文档的全部元数据并额外写入chunk_id、parent_id、doc_typechild、chunk_index同时parent_child_map[child_id] parent_id维护映射。父文档的parent_id由文件相对路径经 MD5 生成确定性 ID保证同一文件多次加载 ID 一致。3.3 为什么用小块检索、大块生成结合 docs/chapter8/01_env_architecture.md 中的分析若直接拿整个菜谱文档做向量检索用户问“老妈蹄花需要什么食材”时“必备原料和工具”在整个文档中的占比很小可能检索不到或排名靠后而按标题切成小块后该子块能精确匹配。生成阶段则通过 get_parent_documents 回传完整父文档避免只拿到“操作”章节却缺失原料信息从而保证 LLM 回答的上下文完整。四、菜谱内容与关键参数说明4.1 必备原料和工具原文列出猪蹄优先猪前蹄肉多筋多骨头少、葱、姜、料酒、生抽、白芷、当归可选、鸡精、盐、蒜、小米椒、白胡椒粉、生抽、香醋、花椒油、油泼辣子可选、白芸豆没有可用海带替换。其中白芷、当归属于川渝风味炖煮的去腥增香药材白芸豆是蹄花汤的灵魂配料若买不到可退而求其次使用海带。4.2 计算用量配比原文给出的标准用量原料用量猪蹄3 根白芸豆200g当归2g白胡椒粉5g姜片30g蒜末8g鸡精2g生抽25g葱花10g“计算”小节的意义在于它把“做几份”的变量与固定比例分离方便按人数缩放。这类配比数据在 RAG 问答中会被单独检索例如用户问“老妈蹄花要放多少白芸豆”时直接命中本子块即可给出 200g 的精确答案。4.3 操作制作步骤原文步骤可归纳为三个关键阶段每一步都有明确的技术要点预处理200g 白芸豆提前一晚清水浸泡猪前蹄请摊主从中间劈开用喷火枪去除毛囊后清洗干净。焯水去腥冷水锅中放入猪蹄、大葱段、姜片、料酒焯水十分钟撇去浮沫捞出洗净备用。高压炖煮高压锅中放入猪蹄、当归、白芷、白胡椒粉、姜片上汽后压三十分钟放入白芸豆再压十分钟。汤底呈奶白色即说明成功中途如需加水只能加热水否则蛋白质遇冷水凝固会影响汤色与口感。调味揭盖后加盐、鸡精、葱花调味。4.4 灵魂蘸汁附加内容原文的“灵魂汁子”配方为葱、蒜、小米椒、白胡椒粉、生抽、香醋、油泼辣子、花椒油并兑入猪蹄原汤。这道菜以白汤蹄花搭配酸辣蘸水食用蘸汁的“原汤”是关键——用炖煮原汤代替清水能让蘸汁与蹄花风味统一。五、把这道菜接入 RAG 系统的运行验证5.1 数据路径与默认配置在 config.py 中默认数据路径为../../data/C8/cook即仓库中的 data/C8/cook 目录老妈蹄花正是其dishes/meat_dish/下的一个文件。项目使用BAAI/bge-small-zh-v1.5作为嵌入模型、kimi-k2-0711-preview作为生成模型检索top_k3。5.2 运行链路按 docs/chapter8/01_env_architecture.md 的说明cd code/C8 pip install -r requirements.txt # 依赖见 code/C8/requirements.txt python main.py运行python main.py后系统会经历加载*.md文档 → 元数据增强 → Markdown 结构分块 → FAISS 向量索引构建首次构建后缓存到本地后续秒级加载→ 混合检索向量 BM25 RRF 重排→ 父子去重 → LLM 生成。当用户提问“老妈蹄花怎么做”时系统会先通过 RRF 混合检索命中“## 操作”子块再经 get_parent_documents 回传完整文档最终以分步指导模式输出制作步骤。5.3 过滤检索验证在 main.py 中查询“推荐一道荤菜”会触发category过滤此时系统只会检索category 荤菜的文档老妈蹄花、红烧肉等 meat_dish 类菜谱即为候选。同理带“困难”的查询会命中老妈蹄花标注的四星难度。六、小结老妈蹄花这道菜谱是 data/C8/cook 数据结构化程度的缩影它的 H1 与难度星级、H2 小节结构、路径中的分类信息分别对应元数据增强难度、菜名、分类与结构分块原料/计算/操作/附加内容两条处理管线。理解这份文档就理解了整个 RAG 项目“小块检索、大块生成”的数据基础其余数百道菜谱遵循同一模板因此同一套数据准备、索引构建与混合检索代码可以无缝覆盖整个知识库。如果你希望进一步调整这道菜在检索中的表现可以从 config.py 的top_k、嵌入模型或 data_preparation.py 的标题层级配置入手。赞分享教程人工智能大模型RAG【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址https://gitcode.com/datawhalechina/all-in-rag点击查看免费下载相关推荐黔式腊肠娃娃菜食谱基于 Markdown 结构化数据构建 RAG 菜谱问答系统黔式腊肠娃娃菜食谱基于 Markdown 结构化数据构建 RAG 菜谱问答系统 黔式腊肠娃娃菜是一道源自西南菜系、却罕见地不辣的咸鲜快手菜全程只需煮一锅水教程人工智能大模型RAG泰国手标红茶食谱实战从结构化 Markdown 菜谱到 all-in-rag 食谱 RAG 知识库泰国手标红茶食谱实战从结构化 Markdown 菜谱到 all in rag 食谱 RAG 知识库 泰国手标红茶是泰国街头随处可见的奶茶味道香纯绵密。在教程人工智能大模型RAG小酥肉菜谱的RAG实战从Markdown结构化文档到尝尝咸淡食谱问答系统小酥肉菜谱的RAG实战从Markdown结构化文档到尝尝咸淡食谱问答系统 本文以仓库 data/C8/cook/dishes/meat_dish/小酥肉.教程人工智能大模型RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表