首页/新闻资讯/正文详情

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

发布时间:2026/9/24 17:20:17 来源:云帆数科 栏目:资讯中心
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),仅供参考

相关推荐

面经手册第3篇实践精讲:HashMap 散列表实现、扰动函数、负载因子与扩容链表拆分全解析
面经手册第3篇实践精讲:HashMap 散列表实现、扰动函数、负载因子与扩容链表拆分全解析

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、… · 2026/9/24 17:20:17

NocoBase开发环境搭建:5步跑通最小闭环+企业级配置思路
NocoBase开发环境搭建:5步跑通最小闭环+企业级配置思路

NocoBase开发环境搭建:5步跑通最小闭环企业级配置思路 【免费下载链接】nocobase NocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven i… · 2026/9/24 17:20:17

Boto3(AWS SDK for Python)IAM Policy 管理实战:创建、查询、附加与分离托管策略
Boto3(AWS SDK for Python)IAM Policy 管理实战:创建、查询、附加与分离托管策略

后端云原生 【免费下载链接】boto3 AWS SDK for Python (Boto3) 项目地址: https://gitcode.com/gh_mirrors/bo/boto3 点击查看 免费下载 本文是基于 AWS SDK for Python(Boto3)的 IAM 策略管理实战指南,围绕 IAM 托管策略的完整… · 2026/9/24 17:20:17

雷达测角基础
雷达测角基础

相位测角法两天线相位法测角原理图示中黑色倒三角,分别为天线1和2,当目标距离两天线远距离时,那么目标与两天线的连线,即黑色虚线和黄色虚线,可近似看为平行。以天线2向目标与天线1的连线做垂直线,即蓝色虚… · 2026/9/24 17:54:28

单片机物联网|毕设答辩|毕业设计项目|观赏鱼缸控制系统设计
单片机物联网|毕设答辩|毕业设计项目|观赏鱼缸控制系统设计

标题:观赏鱼缸控制系统设计文档介绍:1 绪论1.1 研究背景及意义城市化进程持续推进,现代都市居民的生活节奏变得更快,工作压力不断加大,人们对于精神文化生活的追求愈加强烈,在此情形下,观赏鱼养… · 2026/9/24 17:54:28

读书有感:“换位思考”新的解读
读书有感:“换位思考”新的解读

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 17:54:28

专利说明书的技术方案:先摆清要达成什么,再倒推哪几处非写不可
专利说明书的技术方案:先摆清要达成什么,再倒推哪几处非写不可

技术方案写不写到可实施,不看篇幅,看倒推得动不动:先把要达成的技术效果摆出来,再看每一处动作、结构与参数是被哪条效果逼出来的。落笔前有两样可先用:一样立起层级,交免费智能大纲;一样把结构… · 2026/9/24 17:54:21

DeepSeek    LeetCode 103. 二叉树的锯齿形层序遍历 Python3实现
DeepSeek LeetCode 103. 二叉树的锯齿形层序遍历 Python3实现

LeetCode 103. 二叉树的锯齿形层序遍历 Python3 实现 思路 与普通层序遍历相同,使用队列逐层处理。区别在于需要交替改变每层的遍历方向:维护布尔变量 left_to_right 表示当前层方向。每层用一个 deque 收集节点值:从左到右&#xff1a… · 2026/9/24 17:54:15

DeepSeek    LeetCode 103. 二叉树的锯齿形层序遍历 Golang实现
DeepSeek LeetCode 103. 二叉树的锯齿形层序遍历 Golang实现

LeetCode 103. 二叉树的锯齿形层序遍历 Golang 实现 思路 与普通层序遍历一致,用队列逐层处理。区别在于需要交替改变每层的填充方向:维护布尔变量 leftToRight 表示当前层方向。每层预分配 level : make([]int, size):从左到右&#x… · 2026/9/24 17:54:15

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码