「Datawhale」RAG技术全栈指南 Task 5

项目背景

这个项目挺有意思,基于 GitHub 上的「程序员做饭指南」搭建一个智能食谱问答系统。目标很接地气------解决每天"今天吃什么"的世纪难题。数据是 300 多个 Markdown 格式的菜谱文件,结构统一,非常适合做 RAG。


一、环境配置

bash

复制代码
conda create -n cook-rag-1 python=3.12.7
conda activate cook-rag-1
pip install -r requirements.txt

需要申请 Kimi API Key,注册送 15 元额度够用了。配置好环境变量后直接 python main.py 就能跑。


二、数据准备

这部分的核心思路是小块检索,大块生成

为什么这么做?因为菜谱按标题分块后,用户问"宫保鸡丁怎么做"可能只检索到"操作步骤"那一块,缺了食材信息就没法完整回答。但如果直接用整个文档做检索,又会因为"用量配比"这种细节在整个文档中占比太小而检索不到。

解决方案是父子文档架构:

复制代码
父文档(完整菜谱)
├── 子块1:菜品介绍
├── 子块2:必备原料
├── 子块3:制作步骤
└── ...

检索时用子块精确匹配,生成时把完整的父文档传给 LLM。

另外还做了元数据增强:从文件路径推断菜品分类(荤菜/素菜/汤品),从内容里的星级标记提取难度等级。这些元数据后面可以用来做过滤检索。


三、索引与检索

索引构建

用 BGE-small-zh-v1.5 做嵌入,FAISS 做向量存储。实现了索引缓存机制,首次构建要几分钟,后面再启动几秒钟就行。

混合检索

采用向量检索 + BM25 双路检索,然后用 RRF 算法融合结果。

两种检索各有所长:向量检索理解语义,能把"简单易做的菜"匹配到标记为"简单"的菜谱;BM25 精确匹配关键词,搜"宫保鸡丁"就能直接命中。RRF 综合两边的排名信息,效果比单一方式好。

RRF 公式其实很简单:对每个文档,把它在两个检索结果中的排名取倒数再加起来,最后按总分排序。


四、生成模块

这部分做了三件事:

查询路由:用 LLM 判断用户意图,分成 list(推荐几道菜)、detail(怎么做)、general(一般问题)三类。

查询重写:对模糊查询进行优化。比如用户就说"做菜",系统会重写成"简单易做的家常菜谱",提高检索效果。

多模式生成

  • list 查询:直接返回菜名列表,简洁明了
  • detail 查询:结构化输出,包含食材、步骤、技巧
  • general 查询:常规回答

五、系统整合

最后把所有模块串起来:数据准备 → 索引构建 → 检索优化 → 生成集成。

完整流程是:用户提问 → 查询路由 → 查询重写 → 混合检索 → 获取父文档 → 根据类型生成回答。

支持流式输出,体验更好。


六、实践总结

⚠️在gitspace上运行代码的时候,需要将api_key从os.get_env改成自己设置的string。但是在main.py里面也有相同的检查,所以要注意不仅在generation.py里面改,main里面相关的检查也要改。

小结

这个项目把前面学的 RAG 知识点串了起来:父子文档分块、混合检索、RRF 重排、查询路由和重写。麻雀虽小五脏俱全,是个不错的实战练习。

相关推荐
2603_965148115 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
我爱吃土豆16 小时前
从 N-gram 到 BM25:一次知识库关键词检索架构的演进与优化
rag
jufeng13076 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 8 篇】
python·ai agent·配置系统
circuitsosk7 小时前
跨境电商智能化实战:AI如何赋能客服自动回复、广告智能投放与供应链预测
大数据·人工智能·python·langchain·智能客服
2601_956319887 小时前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
过期的秋刀鱼!8 小时前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计8 小时前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
DeepVisionary9 小时前
从GPT-5.6 Sol的Ultrafast模式看推理速度竞赛:750 token/秒背后,Cerebras的晶圆级生意
python·自动化
XLYcmy9 小时前
京东 算法实习一面 上
rnn·神经网络·llm·微调·transformer·训练·对齐
IPHWT 零软网络9 小时前
技术方案分享|AI Agent 赋能 IVR 导航,解决传统语音呼叫系统交互瓶颈
人工智能·通信系统·rag·ivr·aiagent·智能语音·语音导航