all-in-rag 项目实战:以「葱油拌面」为例解析菜谱数据如何驱动 RAG 知识库构建

发布时间:2026/9/24 17:20:19
all-in-rag 项目实战:以「葱油拌面」为例解析菜谱数据如何驱动 RAG 知识库构建
教程人工智能大模型RAG【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址https://gitcode.com/datawhalechina/all-in-rag点击查看免费下载葱油拌面是一道经典的上海家常面点做法简单、香味独特在本仓库的「尝尝咸淡 RAG 系统」实战项目中它作为data/C8/cook目录下 300 余份结构化菜谱文档的典型样本承担着知识库数据源的角色。读完本文你既能完整掌握这道葱油拌面的量化做法原料配比、20 分钟操作流程、酱汁批量制作技巧也能看清它从 Markdown 文件被加载、元数据增强、按标题结构分块再到最终检索与生成的完整 RAG 链路。一、菜谱文档一篇高度结构化的 Markdown 数据样本打开 葱油拌面.md可以看到这份文档严格遵循仓库菜谱的统一模板可对照 示例菜.md 中的注释规范一级标题为「菜名 的做法」正文依次包含菜品简介、难度评级、必备原料和工具、计算、操作、附加内容几个固定小节。# 葱油拌面的做法 葱油拌面是一道经典的上海家常面点。做法简单以其独特的葱油香味而闻名。 富含碳水化合物和脂肪能够快速补充能量。一般初学者只需要 20 分钟即可完成。 预估烹饪难度★★这种高度规整的文档结构正是该项目选择直接以 Markdown 作为 RAG 数据源、而不需要额外清洗的原因——如 01_env_architecture.md 所分析结构化数据契合按标题层级分块的思路且单份菜谱篇幅约几百字按标题切块不会超出模型上下文窗口。二、菜谱全文原料、配比与操作步骤2.1 必备原料和工具原料说明干面条每份约 80 g小葱制作葱油酱汁的核心生抽提供咸鲜与酱色老抽上色增香白糖平衡咸味、提鲜2.2 计算一份可批量复用的量化配比葱油酱汁可以一次制作多份的量分次使用。以下提供制作葱油酱汁的基础量以及每份面条所需的葱油酱汁量。葱油酱汁基础量约够 3-4 份使用小葱 100 g食用油 100 ml生抽 60 ml老抽 20 ml白糖 15 g每份面条干面条 80 g约相当于 150 g 湿面条葱油酱汁 15 ml2.3 操作步骤制作葱油酱汁将小葱洗净切成长段约 5-7 cm。葱白和葱绿可以分开。锅中加入 100 ml 食用油中火烧热。先放入葱白段煸炒至微黄。加入葱绿段转小火继续煸炒。保持小火耐心煸炒约15-20 分钟直至葱段变得焦黄酥脆。将焦黄的葱段捞出葱油保留在锅中。在锅中的葱油中加入 60 ml 生抽、20 ml 老抽、15 g 白糖。小火加热并搅拌约1 分钟至糖溶解、酱汁混合均匀立即关火。将制作好的葱油酱汁倒入容器中放凉后密封保存。煮面条按份操作取 80 g 干面条。锅中加入 1000 ml 饮用水大火烧开。放入面条根据面条包装说明煮至熟透通常3-8 分钟以包装说明为准。将煮好的面条捞出沥干水分放入碗中。混合拌面按份操作在装有面条的碗中加入 15 ml 之前做好的葱油酱汁。可以加入之前炸好的葱段可选。用筷子快速搅拌均匀即可食用。2.4 附加内容炸葱油时火一定要小、要有耐心才能将葱的香味充分炸出。制作好的葱油酱汁可以冷藏保存一段时间下次吃面时直接取用。三、源码视角文档如何被加载与打上元数据标签在「尝尝咸淡 RAG 系统」中这份菜谱由 data_preparation.py 的DataPreparationModule.load_documents()加载。源码通过Path(self.data_path).rglob(*.md)递归扫描data/C8/cook下全部 Markdown 文件并按「数据根目录相对路径」用 MD5 生成确定性的parent_id再为每个文档创建带source、parent_id、doc_type元数据的Document对象。随后_enhance_metadata()会从文件路径与内容中提取两条关键元数据分类category通过CATEGORY_MAPPING匹配路径中的目录名——staple目录被映射为「主食」因此这份葱油拌面文档的category元数据为「主食」难度difficulty用正则r★精确匹配连续星号数量再映射到语义标签。文档中的「★★」会被识别为2颗星对应difficulty_map中的「简单」。star_match re.search(r★, content) star_count len(star_match.group()) difficulty_map {5: 非常困难, 4: 困难, 3: 中等, 2: 简单, 1: 非常简单}这两项元数据正是后续「元数据过滤检索」与「智能查询路由」的过滤依据见 main.py 的_extract_filters_from_query()它会把「主食」「简单」等关键词从用户问题中提取为过滤条件。四、按标题分块葱油拌面被切成几块chunk_documents()使用MarkdownHeaderTextSplitter做结构感知分块分块标题层级配置如下headers_to_split_on [ (#, 主标题), # 菜品名称 (##, 二级标题), # 必备原料、计算、操作等 (###, 三级标题) # 简易版本、复杂版本等 ]以本文菜谱为例#主标题下会切出「必备原料和工具」「计算」「操作」「附加内容」等多个二级标题块。每个子块继承父文档的元数据并获得新的chunk_id、chunk_index、doc_typechild字段同时通过parent_child_map[child_id] parent_id建立父子块映射——这正是项目采用的「小块检索、大块生成」策略小块保证检索精确性例如用户问「葱油拌面需要什么调料」时「必备原料和工具」块能精确命中生成时再由get_parent_documents()依据子块parent_id找回完整父文档保证上下文完整。五、从检索到生成一条完整的 RAG 调用链整个问答流程在 main.py 的ask_question()中串联查询先经query_router()分为list/detail/general三类再决定是否重写随后 retrieval_optimization.py 执行混合检索——FAISS 向量检索嵌入模型默认BAAI/bge-small-zh-v1.5见 config.py与 BM25 关键词检索并行再用 RRFReciprocal Rank Fusion公式1/(krank)融合重排取top_k最后 generation_integration.py 按路由类型调用 Moonshot 大模型detail查询走「分步指导模式」提示词输出包含菜品介绍、所需食材、制作步骤、制作技巧的结构化回答。六、本地复现运行环境与启动方式本项目代码位于code/C8依赖清单见 requirements.txt包含langchain0.3.26、faiss-cpu、sentence-transformers、rank_bm25等。复现步骤参考 01_env_architecture.md# 创建虚拟环境示例使用 conda conda create -n cook-rag-1 python3.12.7 conda activate cook-rag-1 # 安装依赖 cd code/C8 pip install -r requirements.txt # 配置 MOONSHOT_API_KEY 环境变量后启动交互式问答 python main.py启动后系统会自动加载data/C8/cook全部菜谱含本文的葱油拌面、构建或加载 FAISS 向量索引随后即可在交互式问答中输入类似「葱油拌面怎么做」「推荐几道简单的主食」这样的问题观察查询路由、查询重写、混合检索与分步生成的全过程。七、小结以葱油拌面为样本可以完整看到一篇合格菜谱文档在 RAG 系统中被「结构化利用」的全过程## 必备原料和工具 / 计算 / 操作 / 附加内容的固定小节天然适配 Markdown 结构分块★★难度与staple目录则被元数据增强解析为可过滤的结构化标签。这种「高结构化文档 父子块策略 混合检索 按路由生成」的组合正是本项目将 300 余份菜谱转化为可问答知识库的核心方法论。赞分享教程人工智能大模型RAG【免费下载链接】all-in-rag大模型应用开发实战一RAG 技术全栈指南在线阅读地址https://datawhalechina.github.io/all-in-rag/项目地址https://gitcode.com/datawhalechina/all-in-rag点击查看免费下载相关推荐Datawhale all-in-rag 菜谱知识库实战凉拌鸡丝结构化菜谱文档的完整拆解与 RAG 数据流水线解析Datawhale all in rag 菜谱知识库实战凉拌鸡丝结构化菜谱文档的完整拆解与 RAG 数据流水线解析 本篇指南以开源仓库 Datawhale /教程人工智能大模型RAGDatawhale all-in-rag 实战案例葱油桂鱼做法文档——从结构化菜谱到 RAG 知识库检索的完整链路Datawhale all in rag 实战案例葱油桂鱼做法文档——从结构化菜谱到 RAG 知识库检索的完整链路 葱油桂鱼是一道以清蒸为基底、以热油激香为核教程人工智能大模型RAG冷吃兔食谱实战all-in-rag 中一份 Markdown 菜谱如何成为 RAG 知识库的数据源冷吃兔食谱实战all in rag 中一份 Markdown 菜谱如何成为 RAG 知识库的数据源 冷吃兔是川渝地区经典的自贡菜也是 Datawhale a教程人工智能大模型RAG上一篇CookLikeHOC 复刻指南酸菜血旺豆腐炖菜的标准化配方、工序拆解与营养解析下一篇CopilotKit 声明式生成式 UI 实战基于 CrewAI Conversational Flows 的 A2UI 动态 Schema 目录开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考