番茄红酱做法全解:食材配比、分步实操与 RAG 菜谱知识库中的应用
2026/9/24 0:24:47 网站建设 项目流程
  • 教程
  • 人工智能
  • 大模型
  • RAG

【免费下载链接】all-in-rag

🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/

项目地址:https://gitcode.com/datawhalechina/all-in-rag
点击查看免费下载

番茄红酱是一道以碎牛肉、番茄酱与蔬菜为基底、用牛奶小火慢炖而成的浓香百搭酱料,可搭配薄饼、意面等主食食用。本篇指南以 all-in-rag 仓库中 番茄红酱.md 菜谱为主体,完整还原其原料清单、每份用量配比与五步操作流程,并结合仓库 C8 章"尝尝咸淡 RAG 系统"的源码实现,说明这份结构化菜谱是如何被加载、打标、分块并在问答中被检索与生成的。读完本篇,你既能照单做出正宗的番茄红酱,也能理解一份菜谱文档在 RAG 知识库中从"文件"到"可回答"的全过程。

一、菜品概览与难度评估

番茄红酱香浓可口、营养丰富,是一款兼容性极强的百搭酱料,既可以作为薄饼、意面的浇头,也可以搭配其他主食食用。原文档评价其"有些繁琐,适合有烹饪经验的人尝试",并给出了★★★★(四星)的预估烹饪难度——这意味着它包含较多处理步骤,需要精妙掌握火候、时间与材料组合的技巧,即便是有经验的厨师也需要花费不少时间来准备。

值得说明的是,这份难度标记在 all-in-rag 的 RAG 系统中并不仅仅是一行文字,而是被元数据增强逻辑解析为结构化的难度标签。在 data_preparation.py 的_enhance_metadata方法中,系统通过正则表达式★+匹配连续星号数量,并依据映射表{5: '非常困难', 4: '困难', 3: '中等', 2: '简单', 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, '未知')

因此,当用户向系统提问"推荐一个困难的荤菜"时,这份番茄红酱会因为difficulty='困难'category='荤菜'而被元数据过滤逻辑准确命中。从源码结构可以推断,这一机制正是 main.py 中_extract_filters_from_query与 retrieval_optimization.py 中metadata_filtered_search协同工作的结果。

二、必备原料与工具清单

制作番茄红酱需要准备以下原料,其中干罗勒或百里香为可选香料,其余均为必需项:

类别原料
肉类碎牛肉
蔬菜蒜瓣、胡萝卜、芹菜、洋葱
调味番茄酱、糖、食盐、胡椒粉、橄榄油
液体牛奶
香料(可选)干罗勒或百里香

原文档将橄榄油单列为必备原料,它同时承担煸炒蔬菜与炒制牛肉两道工序的介质作用。这份清单在 RAG 系统分块后恰好对应"## 必备原料和工具"这个独立子块,用户若询问"番茄红酱需要什么食材",检索阶段可精确命中该子块,再经由父子文档机制取回完整父文档供大模型组织回答。

三、计算:每份用量配比

原文档按"每份"给出固定配比,一次制作恰好对应一份的量,无需随份数换算:

  • 碎牛肉 500g
  • 蒜瓣 2 个
  • 胡萝卜 半根
  • 芹菜 一根
  • 洋葱 半个
  • 橄榄油(操作中分两次各用 10ml)
  • 糖 2g
  • 食盐 10g
  • 黑胡椒粉 5g
  • 番茄酱 300g
  • 牛奶 300ml

这组数据体现了酱料的平衡逻辑:500g 碎牛肉提供浓郁肉香,300g 番茄酱奠定酸甜基底,300ml 牛奶则用于中和番茄的酸涩并带来顺滑口感。需要注意的是,原文档特别提示"考虑各个品牌的番茄酱内含盐量不同,建议在炒牛肉时少放盐,煮的时候尝一下再调味"——即 10g 食盐为上限参考值,实际投放量应以所用番茄酱品牌的含盐量为准动态调整。

这份用量数据在知识库中同样被结构化处理:在 RAG 系统的 Markdown 分块流程里(见 data_preparation.py 的_markdown_header_split),"## 计算"标题下的配比内容会作为一个独立子块保存,并携带chunk_idparent_iddoc_type='child'chunk_index等元数据,与"必备原料""操作"等子块共同组成父子文档结构。

四、操作步骤详解

原文档将整个制作过程浓缩为五个步骤,下面结合烹饪原理逐条展开:

第一步:备料将胡萝卜、芹菜、洋葱切碎,蒜瓣切片。蔬菜切碎粒度保持均匀,既有利于快速煸炒出香,也能在后续 30 分钟慢炖中与肉酱充分融合。

第二步:煸炒蔬菜锅中加入 10ml 橄榄油,油热后下入蔬菜,大火翻炒至略微变色后盛出备用。大火快炒的目的是在保留蔬菜水分与清甜口感的同时,激发出洋葱、胡萝卜、芹菜的香气——这三者正是西式酱料中经典的"香蔬三件套"(Mirepoix)。

第三步:炒制牛肉锅内再加入 10ml 橄榄油,放入蒜片翻炒 10 秒,随后加入碎牛肉、糖、盐、胡椒粉和香料(干罗勒或百里香),将牛肉炒脆、炒出颗粒感。炒至颗粒状能让牛肉在后续炖煮中更好地吸附酱汁,同时避免结块;此阶段加糖也可帮助牛肉上色并平衡整体风味。

第四步:合炒将炒好的蔬菜和番茄酱加入锅中,与牛肉充分翻炒、搅拌均匀。让酱料、油脂与肉末在高温下融合,为下一步的慢炖做铺垫。

第五步:慢炖收汁分多次缓缓倒入 300ml 牛奶,转中小火煮 30 分钟即可完成。分次倒入牛奶可以防止温度骤降导致酱料分离;中小火慢炖则让牛肉、蔬菜与番茄酱的风味充分交融,牛奶中的乳脂还能柔化番茄的酸度,最终形成浓稠顺滑的质地。原文档强调,煮酱料期间请持续搅动以免粘锅,待酱料变得粘稠即可出锅

从 RAG 系统视角看,这五个步骤对应"## 操作"子块,是回答"番茄红酱怎么做"时的核心检索内容。当查询被路由为detail类型时,generation_integration.py 中的generate_step_by_step_answer会使用"分步指导模式"提示词,将完整的父文档作为上下文,组织出包含菜品介绍、所需食材、制作步骤与制作技巧的结构化回答——大模型严格以这份操作步骤为事实依据,不会凭空捏造烹饪环节。

五、附加技巧与灵活变体

原文档在"附加内容"一节给出了三条实用经验,它们是保证成品质量的关键补充:

  1. 盐量控制:各品牌番茄酱含盐量差异较大,建议炒牛肉时少放盐,煮制过程中尝味后再做最终调味,避免成品过咸。
  2. 防粘锅:煮酱料期间必须持续搅动;当酱料变得粘稠时即为出锅时机,无需死守 30 分钟。
  3. 口味变体:可根据个人口味将碎牛肉替换为"一半碎猪肉一半碎牛肉"的混合肉末,或将牛奶替换为鸡汤或饮用水,以适配不同的风味偏好与饮食需求。

此外,原文档还补充了一个生活化建议:一次吃不完也没有关系,酱料可以冷冻保存,需要时随时取出加热即可(但务必记得食用)。这一特性也使其非常适合批量制作。

在 RAG 系统中,"## 附加内容"是独立的第五个子块。由于父子文档机制的存在,即使用户的问题只命中了"附加内容"子块(例如询问"番茄红酱能冷冻吗"),系统也能通过 data_preparation.py 中的get_parent_documents依据parent_id映射回完整父文档,按子块匹配次数统计相关性并去重排序,确保回答时上下文完整、不缺失食材与步骤信息。

六、这份菜谱在 RAG 知识库中的全生命周期

结合 all-in-rag 项目 C8 章"尝尝咸淡 RAG 系统"的实现(环境与架构说明见 01_env_architecture.md),这份番茄红酱菜谱从落盘到被问答,完整经历以下链路:

1. 加载与元数据增强

系统通过rglob("*.md")递归扫描数据目录(默认data_path = ../../data/C8/cook,配置见 config.py)。对番茄红酱这份文件而言,路径中的meat_dish会被 data_preparation.py 的CATEGORY_MAPPING映射为荤菜,文件名番茄红酱被提取为dish_name,正文中的★★★★被解析为困难难度。

2. 结构感知分块

使用MarkdownHeaderTextSplitter######三级标题分割,strip_headers=False保留标题以维持上下文可读性。番茄红酱文档由此被切分为约 5 个子块(主标题与简介、必备原料和工具、计算、操作、附加内容),每个子块均继承父文档元数据并建立parent_child_map映射。

3. 索引构建

子块经BAAI/bge-small-zh-v1.5嵌入模型向量化后写入 FAISS 向量索引(index_construction.py),并持久化到vector_index目录,二次启动时可直接加载缓存实现秒级就绪。

4. 检索与重排

用户提问"番茄红酱怎么做"时,系统先由查询路由器判断为detail类型,随后执行混合检索——FAISS 向量检索与 BM25 关键词检索并行,再经 RRF(Reciprocal Rank Fusion)算法融合重排,取top_k=3个最相关子块(retrieval_optimization.py)。

5. 父子文档回溯与生成

按子块的parent_id回溯完整父文档并去重,最终由 Moonshot 大模型(默认kimi-k2-0711-preview,temperature 0.1、max_tokens 2048)以分步指导模式生成详细回答。整个过程可通过 main.py 的交互式问答入口体验。

小结

番茄红酱是一道用料常见、逻辑清晰却讲究火候与耐心的高难度酱料:量化配比(牛肉 500g、番茄酱 300g、牛奶 300ml)是基础,大火煸香、牛肉炒脆、分次加奶、中小火慢炖 30 分钟是口感的关键,盐量尝味调整与持续防粘则是成品质量的保障。与此同时,这份菜谱也是 all-in-rag 食谱 RAG 系统中的一个典型样本——从目录路径推断分类、从星号解析难度、按标题结构分块,再到混合检索与父子文档回溯生成,每一步都有仓库源码可循,为理解"结构化文档如何在 RAG 知识库中发挥价值"提供了最直观的实战案例。

  • 教程
  • 人工智能
  • 大模型
  • RAG

【免费下载链接】all-in-rag

🔍大模型应用开发实战一:RAG 技术全栈指南,在线阅读地址:https://datawhalechina.github.io/all-in-rag/

项目地址:https://gitcode.com/datawhalechina/all-in-rag
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询