戰(zhàn):從一道硬菜看 all-in-rag 食譜知識(shí)庫(kù)的數(shù)據(jù)準(zhǔn)備鏈路)
教程人工智能大模型RAG【免費(fèi)下載鏈接】all-in-rag大模型應(yīng)用開發(fā)實(shí)戰(zhàn)一RAG 技術(shù)全棧指南在線閱讀地址https://datawhalechina.github.io/all-in-rag/項(xiàng)目地址https://gitcode.com/datawhalechina/all-in-rag點(diǎn)擊查看免費(fèi)下載羊排燜面是一道適合聚會(huì)場(chǎng)合的北方硬菜帶皮羊肉經(jīng)過焯水、炒糖色、燉煮后與手搟面皮同燜一鍋成菜、肉面兼具。本篇文章不僅完整復(fù)刻這道菜從備料到出鍋的全部操作細(xì)節(jié)還結(jié)合 all-in-rag 倉(cāng)庫(kù)中 C8 食譜 RAG 系統(tǒng) 的源碼實(shí)現(xiàn)剖析這道菜譜作為知識(shí)庫(kù)數(shù)據(jù)是如何被加載、打標(biāo)簽、按 Markdown 標(biāo)題分塊最終進(jìn)入小塊檢索、大塊生成的檢索增強(qiáng)生成鏈路的。一、菜品定位聚會(huì)硬菜與三大營(yíng)養(yǎng)一鍋端羊排燜面在倉(cāng)庫(kù)中以data/C8/cook/dishes/meat_dish/羊排燜面/羊排燜面.md的形式存放屬于葷菜分類。原菜譜點(diǎn)評(píng)很直白缺點(diǎn)就是有點(diǎn)花時(shí)間優(yōu)點(diǎn)就是好吃而且一道菜補(bǔ)齊人體所需的三大營(yíng)養(yǎng)物質(zhì)蛋白質(zhì)來自羊肉、碳水來自面條、維生素來自青椒甜椒。預(yù)估烹飪難度為★★★★困難級(jí)。在 RAG 系統(tǒng)中這個(gè)難度星級(jí)并非裝飾而是會(huì)被自動(dòng)解析成結(jié)構(gòu)化元數(shù)據(jù)。倉(cāng)庫(kù)的 數(shù)據(jù)準(zhǔn)備模塊 中_enhance_metadata方法使用正則r★精確匹配連續(xù)星號(hào)數(shù)量并將星級(jí)映射為難度標(biāo)簽5 星為非常困難、4 星為困難、3 星為中等、2 星為簡(jiǎn)單、1 星為非常簡(jiǎn)單。因此本菜譜會(huì)被自動(dòng)標(biāo)注為難度困難在用戶提問有哪些困難一點(diǎn)的硬菜時(shí)即可被元數(shù)據(jù)過濾檢索命中。二、必備原料與用量計(jì)算2.1 原料清單按原文檔制作羊排燜面需要以下原料帶皮羊排肉青椒甜椒大蔥花椒干辣椒生姜白砂糖老抽需要注意的是原文檔原料清單中青椒出現(xiàn)了兩次一處疑為筆誤實(shí)際操作中以青椒、甜椒各 2 個(gè)的用量計(jì)算為準(zhǔn)。此外和面所需的中筋面粉、鹽、水在附加內(nèi)容中單獨(dú)給出。2.2 用量計(jì)算原文檔給出的計(jì)算方式是1 人份 × 2 頓 2 人份帶皮羊排 500g青椒、甜椒各 2 個(gè)這種按人份折算的寫法在倉(cāng)庫(kù)食譜數(shù)據(jù)中很常見。從檢索角度看這類量化信息集中在菜譜的## 計(jì)算小節(jié)中正好可以被 MarkdownHeaderTextSplitter 按二級(jí)標(biāo)題切成獨(dú)立子塊。當(dāng)用戶問羊排燜面要多少羊排時(shí)向量檢索與 BM25 關(guān)鍵詞檢索都能精準(zhǔn)命中該子塊而不會(huì)把整篇菜譜都塞進(jìn)上下文。三、制作步驟詳解炒糖色是關(guān)鍵原文檔的操作流程共 8 步這里逐條展開并補(bǔ)充實(shí)操要點(diǎn)焯水去腥羊肉冷水下鍋焯水水開后把血沫撇掉撈出羊肉。冷水下鍋能讓血水在升溫過程中緩慢析出去腥效果優(yōu)于熱水下鍋。備料切好生姜 4 片把干辣椒與花椒放入碗里備用。熱鍋寬油炒鍋加入油多一點(diǎn)也沒關(guān)系方便后續(xù)炒糖色與翻炒。炒糖色油熱后放入白砂糖給羊肉炒出焦糖色。這是本菜上色的核心步驟糖色炒到棗紅色、冒細(xì)密小泡時(shí)下羊肉效果最佳注意火候避免炒糊發(fā)苦。調(diào)味燉煮羊肉水分炒干后放入鹽、老抽以及備好的調(diào)味料。加水燜燉加入清水沒過羊肉大火煮沸后繼續(xù)煮 10 分鐘再轉(zhuǎn)小火燉煮 30 分鐘。同步和面燉煮期間同步和面和面量及操作方法詳見文末附加內(nèi)容注 1也可以用超市面條代替但盡量選擇寬面。收尾翻炒放入青椒、甜椒、大蔥以及面皮進(jìn)行翻炒翻炒均勻后即可出鍋。從 RAG 的視角看這 8 步全部位于## 操作小節(jié)之下分塊后會(huì)形成一個(gè)獨(dú)立的操作子塊。用戶如果問羊排燜面怎么炒糖色檢索系統(tǒng)可以只取這個(gè)子塊完成回答而當(dāng)需要完整菜譜時(shí)系統(tǒng)又會(huì)通過父子映射拉回整篇父文檔保證生成時(shí)上下文完整。四、附加內(nèi)容和面小指南手搟面皮原文檔在附加內(nèi)容中給出了詳細(xì)的和面指南本菜能否出彩很大程度上取決于這層面皮完整保留如下。4.1 材料配比中筋面粉 300 g鹽 3 g水 180 ml4.2 操作步驟先把材料混合均勻加水邊和邊攪拌把面團(tuán)和到光滑醒面 10 分鐘再次和面到光滑醒面 5 分鐘把面團(tuán)揉成條切成 6 到 8 個(gè)小劑子抹上油等待 5 分鐘把面團(tuán)劑子搟成面皮放入鍋中燜煮 4 分鐘一片一片操作。鹽在面團(tuán)中的作用是增強(qiáng)面筋韌性抹油則是為了防止劑子之間粘連同時(shí)也讓面皮更易搟開。五、源碼視角這份菜譜在 RAG 系統(tǒng)中如何被處理羊排燜面菜譜并非孤立文本它是 all-in-rag 項(xiàng)目 C8 食譜問答系統(tǒng) 知識(shí)庫(kù)中的一條真實(shí)數(shù)據(jù)。結(jié)合源碼可以完整還原這份文檔在 RAG 流水線中的旅程。5.1 文檔加載遞歸掃描與父文檔 IDDataPreparationModule.load_documents 通過data_path_obj.rglob(*.md)遞歸掃描data/C8/cook目錄下的所有 Markdown 文件直接以原始文本讀取內(nèi)容并為每個(gè)文件基于其相對(duì)路徑生成確定性的 MD5parent_id同時(shí)寫入source、doc_typeparent等元數(shù)據(jù)。羊排燜面這份文檔的source即.../meat_dish/羊排燜面/羊排燜面.md。5.2 元數(shù)據(jù)增強(qiáng)路徑推斷分類、星級(jí)提取難度_enhance_metadata方法會(huì)從文件路徑中匹配分類關(guān)鍵詞如路徑中出現(xiàn)meat_dish即標(biāo)記為葷菜從文件名提取dish_name即羊排燜面并用星號(hào)正則解析出難度困難。這解釋了為什么倉(cāng)庫(kù)要求菜譜文檔遵循統(tǒng)一的目錄與星級(jí)規(guī)范——它們直接決定了知識(shí)庫(kù)的可過濾性與檢索精度。5.3 結(jié)構(gòu)分塊按標(biāo)題切出五個(gè)子塊_markdown_header_split使用 langchain 的MarkdownHeaderTextSplitter按#、##、###三級(jí)標(biāo)題分塊strip_headersFalse保留標(biāo)題便于理解上下文。羊排燜面文檔會(huì)被切分為大致如下子塊父文檔羊排燜面的做法.md ├── 子塊1# 羊排燜面的做法 簡(jiǎn)介 難度評(píng)級(jí) ├── 子塊2## 必備原料和工具 食材清單 ├── 子塊3## 計(jì)算 用量配比 ├── 子塊4## 操作 詳細(xì)制作步驟 └── 子塊5## 附加內(nèi)容和面指南每個(gè)子塊繼承父文檔元數(shù)據(jù)并追加chunk_id、parent_id、doc_typechild、chunk_index同時(shí)寫入parent_child_map建立映射。5.4 檢索與生成小塊命中、大塊回答在 檢索優(yōu)化模塊 中系統(tǒng)同時(shí)使用 FAISS 向量檢索語(yǔ)義相似度與 BM25 檢索關(guān)鍵詞精確匹配再經(jīng) RRFReciprocal Rank Fusion重排融合兩路結(jié)果主程序 還會(huì)從問題中提取葷菜困難等關(guān)鍵詞自動(dòng)附加元數(shù)據(jù)過濾。當(dāng)命中羊排燜面的多個(gè)子塊時(shí)get_parent_documents 會(huì)按命中次數(shù)統(tǒng)計(jì)相關(guān)性、智能去重最終只返回一份完整菜譜給 LLM由 生成集成模塊 按查詢類型輸出分步驟指導(dǎo)或基礎(chǔ)回答。六、運(yùn)行驗(yàn)證把這個(gè)菜譜跑進(jìn)嘗嘗咸淡問答系統(tǒng)如果你想實(shí)際驗(yàn)證這份菜譜在知識(shí)庫(kù)中的效果可以按以下步驟在本地運(yùn)行 C8 食譜 RAG 系統(tǒng)如有在code/C8目錄下安裝依賴pip install -r requirements.txt依賴見 requirements.txt包括 langchain、faiss-cpu、rank_bm25、python-dotenv 等參考 config.py 確認(rèn)數(shù)據(jù)路徑data_path指向data/C8/cook嵌入模型默認(rèn)為BAAI/bge-small-zh-v1.5LLM 默認(rèn)為kimi-k2-0711-preview設(shè)置環(huán)境變量MOONSHOT_API_KEY缺省時(shí)主程序會(huì)直接拋錯(cuò)運(yùn)行python main.py進(jìn)入交互式問答提問羊排燜面怎么做或有哪些困難級(jí)的硬菜即可觀察查詢路由、混合檢索、父文檔召回與分步驟生成的完整鏈路。七、小結(jié)羊排燜面這道菜譜是 all-in-rag 食譜知識(shí)庫(kù)的一個(gè)典型樣本目錄結(jié)構(gòu)決定分類、星級(jí)標(biāo)記決定難度、Markdown 標(biāo)題結(jié)構(gòu)決定分塊粒度。通過對(duì)照 數(shù)據(jù)準(zhǔn)備、索引與檢索、生成集成 三節(jié)文檔與 C8 源碼可以看到一份看似普通的菜譜文檔是如何被結(jié)構(gòu)化、向量化并支撐起小塊檢索、大塊生成的完整 RAG 問答體驗(yàn)的。掌握了這條鏈路你也可以按照同樣的規(guī)范把任意結(jié)構(gòu)化的中文文檔改造成高質(zhì)量的知識(shí)庫(kù)數(shù)據(jù)。贊分享教程人工智能大模型RAG【免費(fèi)下載鏈接】all-in-rag大模型應(yīng)用開發(fā)實(shí)戰(zhàn)一RAG 技術(shù)全棧指南在線閱讀地址https://datawhalechina.github.io/all-in-rag/項(xiàng)目地址https://gitcode.com/datawhalechina/all-in-rag點(diǎn)擊查看免費(fèi)下載相關(guān)推薦從殺豬菜菜譜到 RAG 問答all-in-rag 食譜知識(shí)庫(kù)的結(jié)構(gòu)化數(shù)據(jù)處理實(shí)戰(zhàn)從殺豬菜菜譜到 RAG 問答all in rag 食譜知識(shí)庫(kù)的結(jié)構(gòu)化數(shù)據(jù)處理實(shí)戰(zhàn) 殺豬菜是東北冬季最具代表性的家常硬菜之一在本倉(cāng)庫(kù)的嘗嘗咸淡 RAG教程人工智能大模型RAGjcode 訂閱賬戶契約一致性測(cè)試從設(shè)備登錄向量到混合版本兼容矩陣jcode 訂閱賬戶契約一致性測(cè)試從設(shè)備登錄向量到混合版本兼容矩陣 本文以 jcode 倉(cāng)庫(kù)中 docs/dev/ACCOUNT_CONTRACT_CONFO教程人工智能大模型RAGall-in-rag 食譜問答系統(tǒng)實(shí)戰(zhàn)以「蘿卜燉羊排」菜譜為例解析 RAG 全鏈路數(shù)據(jù)處理all in rag 食譜問答系統(tǒng)實(shí)戰(zhàn)以「蘿卜燉羊排」菜譜為例解析 RAG 全鏈路數(shù)據(jù)處理 導(dǎo)讀 「蘿卜燉羊排」是 all in rag 項(xiàng)目第 8 章嘗嘗教程人工智能大模型RAG創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考