all-in-rag 食谱数据解析雪克杯法柠檬水的标准化配方与 RAG 分块实践【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag本文以「尝尝咸淡」RAG 实战项目data/C8饮品分类下的 柠檬水菜谱 为蓝本完整还原其结构化配方与操作流程并结合 数据准备模块源码 剖析这份菜谱是如何被元数据增强、难度解析与 Markdown 结构分块的。读完本文你既能按图索骥做出一杯标准雪克杯柠檬水也能理解这类半结构化菜谱文档在 RAG 系统中从「原始文件」到「可检索分块」的完整链路。一、这份菜谱在项目中的位置在 all-in-rag 仓库中「尝尝咸淡」RAG 系统的食谱语料库位于data/C8/cook/按dishes/下的分类目录组织如aquatic/水产、meat_dish/荤菜、drink/饮品等。本文聚焦的柠檬水菜谱存放于菜谱文档data/C8/cook/dishes/drink/柠檬水/柠檬水.md同目录成品图data/C8/cook/dishes/drink/柠檬水/柠檬水.jpg对照 数据准备模块 中维护的CATEGORY_MAPPINGCATEGORY_MAPPING { meat_dish: 荤菜, vegetable_dish: 素菜, soup: 汤品, dessert: 甜品, breakfast: 早餐, staple: 主食, aquatic: 水产, condiment: 调料, drink: 饮品 }drink目录即被映射为「饮品」分类标签柠檬水目录名则成为该文档的dish_name元数据。这意味着当用户向系统提问「推荐几款简单的饮品」时这份菜谱会因其分类标签与难度标签被优先召回。二、菜谱原文完整收录为便于对照先完整收录原文档核心内容略有排版整理柠檬水的做法预估烹饪难度★必备原料和工具原料柠檬、果蜜、冰可选工具雪克杯计算一杯分量约 500 毫升柠檬 40~45 克果蜜 40~45 克冰几块可选操作称 40~45 克柠檬放入雪克杯中雪克杯盖盖子锤大约 10 次加入果蜜 40~45 克补水摇晃均匀最后根据喜好加冰这份菜谱虽然篇幅简短但严格遵循了项目的统一模板骨架难度评级 → 必备原料和工具 → 计算 → 操作 → 附加内容。正是这种高度规整的结构使其天然契合 Markdown 结构分块的检索策略。三、配方参数逐项拆解3.1 难度评级★ 与源码解析逻辑「预估烹饪难度★」中单个星号表示非常简单。这一评级并非人工标记的随意文本而是会被 数据准备模块 用正则自动解析成结构化标签star_match re.search(r★, content) if star_match: star_count len(star_match.group()) difficulty_map {5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单} doc.metadata[difficulty] difficulty_map.get(star_count, 未知)一个 ★ 对应非常简单。用户在查询「推荐一个非常简单的饮品」时系统即可依据该元数据做难度过滤源码中的filter_documents_by_difficulty方法。3.2 计算以「杯」为单位的一人份比例原文档明确了**一杯分量约 500 毫升**下的用量基准原料用量说明柠檬40~45 克放入雪克杯后捶打释放风味果蜜40~45 克与柠檬等量平衡酸度冰几块可选最后按喜好添加需要说明的是「果蜜」是饮品店常用的糖浆类甜味剂文中以重量而非体积计量40~45 克。由于果蜜密度高于水若家中无电子秤可按比例估算为约 2~3 汤匙量级再以补水后的口味微调。整个配方遵循「酸甜平衡」的基本逻辑柠檬提供酸与清香果蜜提供甜味冰负责降温与稀释三者比例约 1:1是极简的雪克杯饮品基准式。3.3 操作流程的技术要点称量入杯柠檬 40~45 克去皮后放入雪克杯带皮柠檬捶打会使果皮精油渗出带来微苦感是否带皮可按口味取舍。捶打约 10 次加盖捶打的作用是破坏柠檬果肉细胞释放汁液与香气次数控制在 10 次左右即可避免过度捶打带来的涩味。加入果蜜与柠檬等量随后补水——即加入凉白开或直饮水补足至约 500 毫升刻度。摇晃均匀盖紧雪克杯盖上下摇晃使果蜜充分溶解、风味混合。最后加冰冰放在摇晃完成之后避免冰块在摇晃中过度稀释饮品也符合饮品店「后加冰」的操作惯例。四、源码视角这份菜谱如何进入 RAG 索引4.1 加载与元数据增强load_documents 会以rglob(*.md)递归读取data_path下所有 Markdown 文件保持原始格式作为父文档内容并以「相对数据根目录的路径 MD5」生成确定性parent_id。随后_enhance_metadata依据路径中的目录名自动补齐三要素category由drink目录识别为「饮品」dish_name取文件主名柠檬水difficulty由 ★ 数量解析为「非常简单」。4.2 Markdown 结构分块与父子文档柠檬水菜谱严格使用#菜品名与##必备原料和工具 / 计算 / 操作 / 附加内容两级标题恰好命中 _markdown_header_split 中的分割层级配置headers_to_split_on [ (#, 主标题), # 菜品名称 (##, 二级标题), # 必备原料、计算、操作等 (###, 三级标题) # 简易版本、复杂版本等 ]系统会按这些标题把菜谱切成若干子块并建立chunk_id → parent_id的父子映射检索阶段用「计算」「操作」等小粒度子块做向量/关键词匹配以保证精确召回生成阶段则通过 get_parent_documents 回溯到完整的柠檬水菜谱文档保证 LLM 拿到的是「原料 步骤」齐全的上下文——这正是文档章节docs/chapter8/01_env_architecture.md中「小块检索、大块生成」策略的具体落地。4.3 与章节文档的印证仓库 docs/chapter8/01_env_architecture.md 明确指出这类菜谱「结构高度规整、篇幅较短」无需复杂清洗即可直接用于 RAG 构建。柠檬水这份 35 行左右的菜谱正是典型样本它同时具备分类维度饮品、难度维度非常简单与结构维度固定的标题骨架是演示元数据过滤与结构分块组合检索的理想数据。五、小结以「雪克杯法柠檬水」为代表的菜谱文档浓缩了「尝尝咸淡」RAG 系统的数据设计要点模板统一难度 → 原料工具 → 计算 → 操作 → 附加内容的固定骨架保证了结构分块的稳定性元数据丰富目录名即分类、星号即难度源码正则与路径解析即可零标注产出可过滤标签父子文档配合短小菜谱既可按标题细分成检索子块也能整篇回溯为完整上下文兼顾精确性与完整性。对读者而言照此配方可在家复刻一杯 500 毫升的雪克杯柠檬水对开发者而言这份菜谱是理解 all-in-rag 项目「数据准备 → 索引构建 → 检索生成」全链路的最短路径样例。仓库中同目录下的 饮品分类 还有奶茶、冰粉、金汤力等 20 余个同类文档可作为批量验证分块与检索效果的扩展语料。【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址: https://gitcode.com/datawhalechina/all-in-rag创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
3个实战项目破解质证升级痛点 3个实战项目破解质证升级痛点 版本升级后 API 全变了,你的代码还在报错吗?我在多个 实战项目 中反复验证过,这种断裂感不仅浪费工时,更会拖垮交付节奏。今天不讲虚的,直接拆解底层逻辑,让你彻底搞懂【质证】机制。… · 2026/9/23 9:39:32
Mosquitto 0.12 发布详解:配置热重载、客户端 ID 前缀与库 API 演进 Mosquitto 0.12 发布详解:配置热重载、客户端 ID 前缀与库 API 演进 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mos/mosquitto
本指南基于 Mosquitto 仓库中的 0.12 版本发布公告… · 2026/9/23 9:39:32
3个实战项目教你搞定联通米粉卡套餐 3个实战项目教你搞定联通米粉卡套餐 看了一堆教程还是不会写项目?这是绝大多数开发者卡在入门到进阶之间的死结。你背了语法,看了API文档,甚至抄过几个Demo,但一旦让你从零开始做一个 联通米粉卡套餐… · 2026/9/23 9:39:19
番茄工作法在软件测试中的实战应用与落地指南 我想先聊一个场景:你坐在工位上,刚把一条用例的前置数据准备好,正准备开始执行,微信弹了需求变更,紧接着测试环境挂了,等环境的时候顺手刷了十分钟网页,等环境好了,刚才那条用例的逻… · 2026/9/24 20:24:23
外贸必备:集装箱类型、尺寸对照与装柜计算全攻略 做外贸这些年,我最大的体会是:很多新手一开始把精力全扑在找客户、谈价格上,结果货快出了,却在"装什么柜子、能装多少、怎么装"上栽了跟头。集装箱的类型与尺寸,看似是物流环节里最不起眼的基础知识… · 2026/9/24 20:24:23
重组人IL-6蛋白实验应用全攻略:从信号通路到临床转化 在生物医学实验室泡久了的人,对IL-6这个名字绝对不会陌生。白介素-6(Interleukin-6)可以说是整个炎症网络里最核心的枢纽分子之一,几乎所有跟免疫、炎症、肿瘤、自身免疫病相关的课题,绕来绕去都会碰到它。但真正动手去… · 2026/9/24 20:24:17
IL-6重组蛋白研究从信号通路到临床应用的完整指南 我们实验室和IL-6打交道快十年了,从最初拿重组蛋白做细胞增殖实验,到后来用各种突变体和中和抗体去拆解信号通路,再到近几年参与几个抗体药物的临床前评估,这一路踩过的坑、积累的经验,确实值得好好写一写。很多人问我… · 2026/9/24 20:24:17
Flask+微信小程序构建寻亲平台:全栈实战与部署指南 “宝贝回家”这几个字,对做技术的人来说,不应该只是新闻里的感人故事。它背后是一个极其典型的 Web 全栈实战场景:地理位置、图片存储、模糊搜索、状态流转、消息通知,全部都在一个小程序里。用 Flask 做后端,配合微信… · 2026/9/24 20:24:17
蓝牙SoC产线反复升级问题排查:以中科蓝讯BT5756C为例 做蓝牙音频方案这些年,中科蓝讯的芯片没少折腾,BT5756C算是我手里出镜率比较高的一颗。前两天刚好有个做耳机的客户找过来,说产线测试盒升级固件的时候遇到了个怪现象:固件烧进去了,板子也重启了,可没跑两秒… · 2026/9/24 20:24:17
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44