2025年RAG實(shí)踐手冊(cè):構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南_第1頁(yè)
2025年RAG實(shí)踐手冊(cè):構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南_第2頁(yè)
2025年RAG實(shí)踐手冊(cè):構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南_第3頁(yè)
2025年RAG實(shí)踐手冊(cè):構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南_第4頁(yè)
2025年RAG實(shí)踐手冊(cè):構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南_第5頁(yè)
已閱讀5頁(yè),還剩236頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

構(gòu)建知識(shí)庫(kù)和問(wèn)答系統(tǒng)的實(shí)戰(zhàn)指南JimmySong 11.1主要內(nèi)容 11.2面向讀者 11.3閱讀本書(shū)的基礎(chǔ)知識(shí) 22RAG原理與核心概念 3 3 3 52.3.1RAG參考架構(gòu)的兩大階段 5 52.3.3RAG架構(gòu)的優(yōu)勢(shì) 62.4小結(jié) 73技術(shù)棧選擇與架構(gòu)設(shè)計(jì) 83.1整體架構(gòu)概覽 83.2項(xiàng)目結(jié)構(gòu) 83.3Cloud?areRAG參考架構(gòu) 103.4核心技術(shù)棧介紹 103.4.1Cloud?areVectorize架構(gòu)細(xì)節(jié) 113.5技術(shù)棧選擇的考量 123.5.1Vectorize的獨(dú)特優(yōu)勢(shì) 123.6小結(jié) 134RAG流水線(xiàn)總覽 144.1總體架構(gòu)流程圖 144.2模塊職責(zé)速覽 144.3關(guān)鍵參數(shù)一覽 154.4語(yǔ)言策略概述 164.5常見(jiàn)演進(jìn)路線(xiàn) 164.6小結(jié) 175環(huán)境準(zhǔn)備與依賴(lài)安裝 185.1開(kāi)發(fā)環(huán)境要求 185.2必要的API申請(qǐng) 185.3Cloud?are服務(wù)配置 195.3.1注冊(cè)和配置Cloud?are 195.3.2創(chuàng)建Vectorize索引 195.3.3創(chuàng)建元數(shù)據(jù)索引 205.3.4查看索引信息 215.4項(xiàng)目初始化 215.4.1環(huán)境變量配置 225.5驗(yàn)證配置 225.6小結(jié) 236知識(shí)庫(kù)數(shù)據(jù)收集 246.1數(shù)據(jù)源選擇 246.2收集腳本示例 246.3小結(jié) 267Vectorize數(shù)據(jù)結(jié)構(gòu)說(shuō)明 277.1向量條目Schema概覽 277.2ID生成策略 287.3URL歸一化與語(yǔ)言標(biāo)記 287.4分塊與元數(shù)據(jù)截?cái)嘣瓌t 297.5寫(xiě)入(Upsert)批次 29 7.6刪除與清空策略 297.7容量與維度規(guī)劃 307.7.1EMBED_DIM對(duì)齊關(guān)系圖 307.8觀測(cè)與指標(biāo) 327.9風(fēng)險(xiǎn)與緩解 327.10演進(jìn)方向 327.11小結(jié) 338嵌入生成與向量化 348.1選擇合適的嵌入模型 348.1.1常用嵌入模型及其維度 348.2文檔向量化處理 368.2.1批量向量化處理 368.3向量存儲(chǔ)與索引 378.3.1Vectorize向量格式 378.3.2向量元數(shù)據(jù)設(shè)計(jì) 388.3.3批量上傳到Vectorize 388.3.4命名空間管理 398.3.5向量更新策略 398.4小結(jié) 409Markdown向量映射 419.1路徑與Front?matter 419.2分塊算法chunkText() 429.3短ID生成generateShortId() 429.3.1ID?ChunkIndex關(guān)系與示例 439.4元數(shù)據(jù)結(jié)構(gòu)與字段 449.4.1可視化映射表(VisualMappingTable) 449.4.2截?cái)嗯c容量控制原則 469.4.3刪除/清空策略摘要 479.4.4風(fēng)險(xiǎn)與緩解摘要 489.4.5演進(jìn)方向速記 489.5processFile()文件處理流水線(xiàn) 489.6URL歸一化toUrlFromPath() 499.7批量Upsert/admin/upsert 509.8小結(jié) 5110Qwen向量嵌入機(jī)制 5210.1提供方能力對(duì)比 5210.2高性能參數(shù) 5310.3Qwen批量實(shí)現(xiàn) 5310.4維度規(guī)整 5310.5錯(cuò)誤彈性 5410.6小結(jié) 5411使用CloudflareVectorize構(gòu)建向量數(shù)據(jù)庫(kù) 5511.1什么是Cloud?areVectorize 5511.2Vectorize在RAG系統(tǒng)中的作用 5511.3創(chuàng)建Vectorize索引 5611.3.1索引配置參數(shù) 5611.3.2距離度量類(lèi)型 5611.3.3創(chuàng)建索引命令 5611.3.4索引命名規(guī)范 5611.4綁定Vectorize到Worker 5711.5向量操作詳解 5711.5.1插入向量 5711.5.2更新向量 5811.5.3查詢(xún)向量 5811.5.4根據(jù)ID查詢(xún)向量 5911.5.5獲取向量信息 5911.5.6刪除向量 5911.6元數(shù)據(jù)索引 5911.6.1創(chuàng)建元數(shù)據(jù)索引 6011.6.2使用元數(shù)據(jù)過(guò)濾 60 11.7Vectorize限制和最佳實(shí)踐 6011.7.1計(jì)費(fèi)說(shuō)明 6011.7.2最佳實(shí)踐 6111.8小結(jié) 6112檢索系統(tǒng)實(shí)現(xiàn) 6312.1相似度搜索算法 6312.1.1Cloud?areVectorize中的距離度量 6312.2檢索結(jié)果排序與過(guò)濾 6412.2.1使用Vectorize進(jìn)行檢索 6412.2.2元數(shù)據(jù)過(guò)濾 6412.2.3命名空間過(guò)濾 6512.3檢索效果優(yōu)化 6612.3.1Vectorize查詢(xún)優(yōu)化技巧 6612.3.2查詢(xún)性能監(jiān)控 6712.4小結(jié) 6713檢索請(qǐng)求流轉(zhuǎn) 6813.1入口與查詢(xún)向量 6813.2優(yōu)先語(yǔ)言檢索階段 6813.3回退檢索與二次過(guò)濾 6913.4上下文拼接與來(lái)源列表 6913.5日志結(jié)構(gòu)與可觀測(cè)性 6913.6改進(jìn)方向 7013.7小結(jié) 7014大語(yǔ)言模型集成 7114.1千問(wèn)大模型API接入 7114.2RAG系統(tǒng)中的千問(wèn)集成 7214.2.1環(huán)境配置 7214.2.2API密鑰設(shè)置 7214.2.3大語(yǔ)言模型調(diào)用實(shí)現(xiàn) 7214.2.4嵌入模型調(diào)用實(shí)現(xiàn) 7314.3提示詞工程與優(yōu)化 7414.3.1多語(yǔ)言支持 7414.4模型參數(shù)調(diào)優(yōu) 7414.5調(diào)試和故障排除 75 7514.5.2錯(cuò)誤處理 7514.5.3調(diào)試端點(diǎn) 7514.6小結(jié) 7615答案生成流程 7715.1完整RAG流程概覽 7715.2提示詞結(jié)構(gòu)(示例:中文) 7715.3關(guān)鍵說(shuō)明:向量不直接進(jìn)入LLM 7815.4llmGenerate()調(diào)用Qwen示例 7815.5模型響應(yīng)示例 7815.6小結(jié) 7916聊天機(jī)?人核心邏輯開(kāi)發(fā) 8016.1對(duì)話(huà)流程設(shè)計(jì) 8016.2上下文管理 8116.2.1向量檢索上下文 8216.2.2對(duì)話(huà)歷史管理 8316.3異常處理與降級(jí)策略 8316.3.1API調(diào)用錯(cuò)誤處理 8416.3.2語(yǔ)言過(guò)濾超時(shí)處理 8416.3.3回退機(jī)制 8516.3.4完整的錯(cuò)誤響應(yīng)處理 8516.4小結(jié) 8617多語(yǔ)言支持 8717.1原始序列圖(SequenceDiagram) 87 17.2關(guān)鍵環(huán)節(jié)解析 8717.2.1客戶(hù)端語(yǔ)言檢測(cè) 8717.2.2Ingestion階段元數(shù)據(jù)寫(xiě)入 8717.2.3檢索階段兩級(jí)策略 8917.2.4Prompt構(gòu)建語(yǔ)言分支 8917.2.5回答與前端渲染 8917.3檢索回退偽代碼示例 8917.4手動(dòng)向量更新說(shuō)明 9017.5已解決問(wèn)題簡(jiǎn)述 9017.6改進(jìn)建議概覽 9017.7小結(jié) 9018全量重索引遷移指南 9218.1遷移動(dòng)因 9218.2環(huán)境準(zhǔn)備 9318.3操作流程 9318.4清空階段說(shuō)明 9418.5Ingest高并發(fā)階段 9418.6小結(jié) 9419前端界面開(kāi)發(fā) 9519.1聊天界面設(shè)計(jì) 9519.2實(shí)時(shí)通信實(shí)現(xiàn) 9619.3用戶(hù)體驗(yàn)優(yōu)化 9619.4Widget組件實(shí)現(xiàn)詳解 9619.4.1自適應(yīng)界面設(shè)計(jì) 9719.4.2多語(yǔ)言支持 9719.4.3拖拽與定位功能 9719.4.4消息展示與交互 9719.4.5滾動(dòng)控制 9819.5嵌入方式 9819.6樣式與主題 9819.7小結(jié) 9820Cloudflare部署 9920.1Cloud?areWorkers配置 9920.1.1配置路由 9920.1.2管理環(huán)境變量 10020.2Vectorize向量數(shù)據(jù)庫(kù)設(shè)置 10020.2.1創(chuàng)建向量索引 10020.2.2向量索引配置 10020.3部署流程 10020.3.1環(huán)境準(zhǔn)備 10020.3.2依賴(lài)安裝 10120.3.3本地開(kāi)發(fā)測(cè)試 10120.3.4生產(chǎn)環(huán)境部署 101 10120.5環(huán)境變量配置詳解 10220.6數(shù)據(jù)導(dǎo)入 10220.7監(jiān)控與日志 10320.8故障排除 10320.9小結(jié) 10321測(cè)試、監(jiān)控與持續(xù)改進(jìn) 10521.1功能測(cè)試與驗(yàn)證 10521.2性能與模型監(jiān)控 10621.3用戶(hù)反饋收集與迭代優(yōu)化 10621.4小結(jié) 10822常見(jiàn)問(wèn)題與解決方案 10922.1如何在保持對(duì)話(huà)連貫性的同時(shí)確保向量檢索的準(zhǔn)確性? 10922.1.1問(wèn)題描述 10922.1.2解決方案架構(gòu) 109 22.1.3效果對(duì)比 11022.1.4最佳實(shí)踐建議 110 11022.2.1ID生成規(guī)則 110 11122.3.1創(chuàng)建手動(dòng)上傳腳本 11122.3.2使用方法 11222.3.3向量更新機(jī)制 11222.4如何為聊天組件支持多語(yǔ)言? 11322.5Vectorize相關(guān)問(wèn)題 11422.5.1如何選擇合適的維度和距離度量? 11422.5.2為什么我的向量查詢(xún)返回空結(jié)果? 11422.5.3如何優(yōu)化Vectorize查詢(xún)性能? 11422.5.4如何處理Vectorize的限制? 11522.5.5如何監(jiān)控Vectorize使用情況? 11522.6費(fèi)用問(wèn)題 11622.6.1千問(wèn)大模型 11622.6.2Cloud?areWorker 11622.6.3Cloud?areVectorize 11622.7小結(jié) 11723術(shù)語(yǔ)表 11823.1基礎(chǔ)模型與架構(gòu) 118 11823.3提示工程技術(shù) 11923.4模型訓(xùn)練與優(yōu)化 11923.5評(píng)估與度量 12023.6系統(tǒng)架構(gòu)與部署 12023.7AI安全與倫理 12023.8其他重要概念 1201第1章在人工智能技術(shù)日新月異的今天,越來(lái)越多的人希望能夠擁有屬于自己的智能助手,提升工作效率、優(yōu)化知識(shí)管理,甚至打造個(gè)人品牌?!禦AGHandbook》正是為此而生。本書(shū)將系統(tǒng)性地介紹如何從零開(kāi)始,基于RAG(Retrieval?AugmentedGeneration,檢索增強(qiáng)生成)技術(shù),構(gòu)建一個(gè)能夠理解和利用個(gè)人知識(shí)庫(kù)的智能聊天機(jī)?人,并將其無(wú)縫集成到你自己的網(wǎng)站或應(yīng)用中。本書(shū)內(nèi)容涵蓋以下幾個(gè)方面:主流實(shí)現(xiàn)方式及其在實(shí)際場(chǎng)景中的優(yōu)勢(shì)與局限。?知識(shí)庫(kù)構(gòu)建與管理:如何整理、結(jié)構(gòu)化和持續(xù)更新你的個(gè)人或企業(yè)知識(shí)庫(kù),使其適你實(shí)現(xiàn)一個(gè)可定制的智能助手?;蚱渌脚_(tái),并實(shí)現(xiàn)安全、穩(wěn)定的線(xiàn)上部署。?案例實(shí)戰(zhàn):以“個(gè)人數(shù)字分身”為例,完整演示如何讓機(jī)?人回答關(guān)于你的專(zhuān)業(yè)領(lǐng)域、經(jīng)歷、觀點(diǎn)等問(wèn)題,助力個(gè)人品牌建設(shè)和知識(shí)傳播。強(qiáng)大的智能系統(tǒng)。本書(shū)適合以下讀者閱讀:?有一定編程基礎(chǔ)的開(kāi)發(fā)者,想要?jiǎng)邮謱?shí)踐智能?企業(yè)或個(gè)人希望構(gòu)建專(zhuān)屬知識(shí)庫(kù)和智能問(wèn)答系統(tǒng)的技術(shù)愛(ài)好者;22?關(guān)注個(gè)人品牌、內(nèi)容創(chuàng)作和知識(shí)管理的自媒體人、教育者等。本書(shū)需要以下基礎(chǔ)知識(shí):通過(guò)本書(shū)的學(xué)習(xí),你不僅能夠掌握RAG技術(shù)的核心原理和開(kāi)發(fā)流程,還能親手打造一個(gè)屬于自己的智能聊天機(jī)?人,讓AI真正為你的知識(shí)管理和個(gè)人成長(zhǎng)賦能。3RAG(檢索增強(qiáng)生成)技術(shù)通過(guò)結(jié)合信息檢索和生成式AI,有效解決了傳統(tǒng)大語(yǔ)言模型的知識(shí)截止、幻覺(jué)等問(wèn)題。本章將深入解析RAG的核心概念和工作原理,詳細(xì)介紹其兩階段處理流程:離線(xiàn)的知識(shí)庫(kù)構(gòu)建和實(shí)時(shí)的查詢(xún)響應(yīng)。我們還將探討Cloud?are提供的RAG參考架構(gòu),幫助您理解如何在實(shí)際項(xiàng)目中應(yīng)用這些概念,構(gòu)建高效、可靠的RAG(Retrieval?AugmentedGeneration,檢索增強(qiáng)生成)是一種將信息檢索與生成式AI相結(jié)合的技術(shù)架構(gòu)。它通過(guò)以下方式解決了傳統(tǒng)大語(yǔ)言模型的關(guān)鍵問(wèn)題:傳統(tǒng)LLM的局限性:?知識(shí)截止點(diǎn):模型訓(xùn)練數(shù)據(jù)有時(shí)間限制,無(wú)法獲取最新信息?幻覺(jué)問(wèn)題:模型可能生成看似合理但實(shí)際錯(cuò)誤的信息?領(lǐng)域?qū)I(yè)性不足:對(duì)特定領(lǐng)域的深度知識(shí)掌握有限?個(gè)性化缺失:無(wú)法基于用戶(hù)的個(gè)人知識(shí)庫(kù)進(jìn)行回答RAG通過(guò)引入外部知識(shí)庫(kù),讓AI模型在生成回答前先檢索相關(guān)信息,從而顯著提高回答的準(zhǔn)確性和時(shí)效性。這種方法特別適合構(gòu)建個(gè)人數(shù)字分身,因?yàn)樗梢曰谀愕膫€(gè)人文檔、博客文章、經(jīng)驗(yàn)總結(jié)等生成符合你風(fēng)格和觀點(diǎn)的回答。RAG系統(tǒng)的工作流程分為兩個(gè)主要階段:知識(shí)庫(kù)構(gòu)建(離線(xiàn)處理)和查詢(xún)響應(yīng)(實(shí)時(shí)在知識(shí)庫(kù)構(gòu)建階段,首先需要收集和預(yù)處理各種格式的文檔(如Markdown、PDF、42.3.RAG參考架構(gòu)55個(gè)文本塊添加元數(shù)據(jù)(如標(biāo)題、來(lái)源、時(shí)間)。接著,利用嵌入模型將這些文本塊轉(zhuǎn)換為高維向量,捕捉其語(yǔ)義信息,并將向量存入向量數(shù)據(jù)庫(kù)以便后續(xù)檢索。進(jìn)入查詢(xún)響應(yīng)階段,系統(tǒng)會(huì)將用戶(hù)的問(wèn)題同樣通過(guò)嵌入模型轉(zhuǎn)為向量,并在向量數(shù)據(jù)庫(kù)中檢索出最相關(guān)的文檔塊(通?;谟嘞蚁嗨贫然驓W氏距離,返回top?k結(jié)果)。這些檢索到的內(nèi)容會(huì)被整合為上下文,與用戶(hù)問(wèn)題一起構(gòu)建提示詞,最終交由大語(yǔ)言模型生成基于事實(shí)的準(zhǔn)確回答,并返回給用戶(hù)。以下內(nèi)容為Cloud?are官方提供的RAG參考架構(gòu)示例,旨在幫助理解主流無(wú)服務(wù)?RAG系統(tǒng)的設(shè)計(jì)思路,并非本項(xiàng)目實(shí)際采用的架構(gòu)。實(shí)際部署時(shí)可根據(jù)自身需求進(jìn)行調(diào)整和優(yōu)化。詳情請(qǐng)參考BuildaRetrievalAugmentedGeneration(RAG)AI。Cloud?are提供了一套完整的RAG參考架構(gòu),展示了如何在無(wú)服務(wù)?環(huán)境中構(gòu)建高效、可擴(kuò)展的RAG系統(tǒng)。該架構(gòu)充分利用了Cloud?are的邊緣計(jì)算平臺(tái)和相關(guān)服務(wù)。RAG系統(tǒng)的實(shí)現(xiàn)通常分為兩個(gè)核心階段,每個(gè)階段都承擔(dān)著關(guān)鍵的功能:在這一階段,原始文檔會(huì)被上傳至系統(tǒng),經(jīng)過(guò)初步處理后,消息被異步推送到隊(duì)列中。消費(fèi)者進(jìn)程會(huì)批量處理這些文檔,利用嵌入模型將文本轉(zhuǎn)化為高維向量,并存入向量數(shù)據(jù)庫(kù)以便后續(xù)檢索。同時(shí),原始文檔也會(huì)被持久化保存。整個(gè)流程通過(guò)隊(duì)列機(jī)制實(shí)現(xiàn)任務(wù)的可靠傳遞和重試,確保數(shù)據(jù)一致性和處理的健壯性。用戶(hù)發(fā)起查詢(xún)請(qǐng)求后,系統(tǒng)會(huì)將查詢(xún)內(nèi)容轉(zhuǎn)化為向量,并在向量數(shù)據(jù)庫(kù)中檢索最相關(guān)的文檔片段。隨后,系統(tǒng)根據(jù)檢索結(jié)果從持久化數(shù)據(jù)庫(kù)中獲取原始文檔,將這些內(nèi)容與用戶(hù)查詢(xún)一同傳遞給生成模型,最終生成基于事實(shí)的響應(yīng)。這種架構(gòu)充分利用了Cloud?areWorkers的無(wú)服務(wù)?和邊緣計(jì)算能力,結(jié)合Queues的異步處理、WorkersAI的嵌入與生成、開(kāi)發(fā)者可以快速搭建高性能、可擴(kuò)展的RAG應(yīng)用。在RAG技術(shù)的發(fā)展過(guò)程中,研究者和工程師們提出了多種不同的RAG架構(gòu)。RAG架構(gòu)可以根據(jù)其提出動(dòng)因和主要特點(diǎn)分為以下幾類(lèi):6提出動(dòng)因:LLM容易出現(xiàn)“幻覺(jué)”,參數(shù)化知識(shí)難以更新,需要外部檢索補(bǔ)充知識(shí)并提供可追溯的證據(jù)。主要特點(diǎn):采用三步流程(文檔切塊→向量檢索→拼接提示生成支持一體化端到端微調(diào)(如RAG?Sequence和RAG?Token能夠減少模型幻覺(jué),提升開(kāi)放域問(wèn)答的準(zhǔn)提出動(dòng)因:用戶(hù)查詢(xún)與知識(shí)庫(kù)語(yǔ)義不完全對(duì)齊,NaiveRAG檢索噪聲較多、生成質(zhì)量序、摘要壓縮)等多階段處理,顯著提升檢索相關(guān)性和生成質(zhì)量。提出動(dòng)因:隨著檢索?、LLM等組件快速迭代,傳統(tǒng)管道難以快速集成新功能,維護(hù)成主要特點(diǎn):將整個(gè)流程拆分為可插拔的七大模塊(如Indexing、PreRetrieval、序、壓縮、生成等功能模塊化組合,并引入路由、提出動(dòng)因:需要處理復(fù)雜多步任務(wù)和多輪決策合檢索與規(guī)劃能力。主要特點(diǎn):采用多智能體架構(gòu),由主智能體協(xié)調(diào)子智能體,具備動(dòng)態(tài)決策能力(自主判斷何時(shí)檢索、何時(shí)生成),支持多輪迭代和任務(wù)自校正,提升復(fù)雜任務(wù)的適應(yīng)性和魯需要注意的是,本書(shū)中使用的RAG示例屬于AdvancedRAG類(lèi)型。它不僅實(shí)現(xiàn)了基礎(chǔ)的檢索和生成流程,還包含了查詢(xún)重寫(xiě)、結(jié)果重排序等高級(jí)功能,以提高檢索準(zhǔn)確性和?支持個(gè)性化和專(zhuān)業(yè)化知識(shí)庫(kù),適合數(shù)字分身場(chǎng)景?無(wú)需訓(xùn)練專(zhuān)用模型,知識(shí)庫(kù)可實(shí)時(shí)更新,維護(hù)成本低RAG架構(gòu)不僅提升了聊天機(jī)?人的智能水平,也極大降低了開(kāi)發(fā)和維護(hù)的門(mén)檻,為各2.4.小結(jié)77類(lèi)AI應(yīng)用提供了堅(jiān)實(shí)的基礎(chǔ)。RAG技術(shù)通過(guò)將信息檢索與生成式AI相結(jié)合,解決了傳統(tǒng)大語(yǔ)言模型的知識(shí)截止、幻覺(jué)等問(wèn)題。通過(guò)離線(xiàn)的知識(shí)庫(kù)構(gòu)建和實(shí)時(shí)的查詢(xún)響應(yīng)流程,RAG系統(tǒng)能夠提供準(zhǔn)確、可靠的回答,并支持個(gè)性化和專(zhuān)業(yè)化的知識(shí)庫(kù)構(gòu)建。Cloud?are的RAG參考架構(gòu)展示了如何在無(wú)服務(wù)?環(huán)境中實(shí)現(xiàn)高效、可擴(kuò)展的RAG系統(tǒng),為開(kāi)發(fā)者提供了寶貴的實(shí)踐8技術(shù)棧選擇與架構(gòu)設(shè)計(jì)良好的架構(gòu)設(shè)計(jì)是構(gòu)建高效、可擴(kuò)展的RAG系統(tǒng)的基礎(chǔ)。本章將深入探討我們?yōu)榱奶鞕C(jī)?人選擇的技術(shù)棧,包括Cloud?areWorkers、Vectorize向量數(shù)據(jù)庫(kù)以及千問(wèn)大語(yǔ)言模型等核心組件。我們將詳細(xì)解析整體架構(gòu)的各個(gè)層次,介紹Cloud?are提供的RAG參考架構(gòu),并分析Vectorize在系統(tǒng)中的關(guān)鍵作用。通過(guò)理解這些設(shè)計(jì)決策,您將能夠構(gòu)建出既滿(mǎn)足當(dāng)前需求又具備未來(lái)擴(kuò)展性的AI應(yīng)用。3.1整體架構(gòu)概覽我們的RAG聊天機(jī)?人采用了現(xiàn)代化的無(wú)服務(wù)?架構(gòu),整個(gè)系統(tǒng)可以分為數(shù)據(jù)源層、數(shù)據(jù)處理層、存儲(chǔ)層、計(jì)算層、AI服務(wù)層和展示層等核心層次。整個(gè)系統(tǒng)的數(shù)據(jù)流程可以分為數(shù)據(jù)攝取階段(離線(xiàn))和對(duì)話(huà)交互階段(實(shí)時(shí))兩個(gè)主要部分。下圖展示了RAG聊天機(jī)?人的架構(gòu)。在數(shù)據(jù)攝取階段,系統(tǒng)會(huì)從Hugo網(wǎng)站的content/目錄收集Markdown文檔,使用fast?ingest.ts腳本解析并分塊文檔內(nèi)容,通過(guò)千問(wèn)或GeminiAPI生成文檔嵌入向量,最后將向量和元數(shù)據(jù)存儲(chǔ)到Cloud?areVectorize數(shù)據(jù)庫(kù)中。在對(duì)話(huà)交互階段,用戶(hù)通過(guò)網(wǎng)站上的聊天Widget發(fā)送問(wèn)題,Cloud?areWorker接收請(qǐng)求并向量化用戶(hù)查詢(xún),在Vectorize中檢索最相關(guān)的文檔片段,構(gòu)建包含上下文的提示詞,調(diào)用大語(yǔ)言模型生成回答,最后返回格式化的響應(yīng)給用戶(hù)。3.2項(xiàng)目結(jié)構(gòu)下圖展示了聊天機(jī)?人項(xiàng)目結(jié)構(gòu)圖:本項(xiàng)目采用模塊化架構(gòu),分為離線(xiàn)數(shù)據(jù)處理、在線(xiàn)對(duì)話(huà)服務(wù)、前端交互、配置管理和測(cè)試驗(yàn)證五大部分:?離線(xiàn)數(shù)據(jù)處理(OfflineIngestionP3.2.項(xiàng)目結(jié)構(gòu)99圖3?1:RAG聊天機(jī)?人架構(gòu)圖3?2:聊天機(jī)?人項(xiàng)目結(jié)構(gòu)負(fù)責(zé)將Markdown內(nèi)容分塊、生成嵌入向量、構(gòu)建標(biāo)題字典,并將處理結(jié)果寫(xiě)入向量數(shù)據(jù)庫(kù)。主要腳本包括full?reindex.ts、ingest.ts、manual?ingest.ts、chunk.ts等,支持自動(dòng)化和手動(dòng)數(shù)據(jù)更新。?在線(xiàn)對(duì)話(huà)服務(wù)(OnlineChatRunt通過(guò)Cloud?areWorker實(shí)現(xiàn)對(duì)話(huà)邏輯,包括消息接收、向量檢索、提示詞構(gòu)建和大語(yǔ)言模型調(diào)用。核心文件有worker.ts、retriever.ts、prompt.ts、llm.ts,支持多輪對(duì)話(huà)和上下文管理,并可選用KV存儲(chǔ)持久化會(huì)話(huà)狀態(tài)。提供用戶(hù)界面,負(fù)責(zé)消息發(fā)送和結(jié)果展示。主要文件為widget.js,通過(guò)HTTPPOST與后端Worker通信,實(shí)現(xiàn)實(shí)時(shí)對(duì)話(huà)體驗(yàn)。10第3章:技術(shù)棧選擇與架構(gòu)設(shè)計(jì)使用wrangler.toml管理Cloud?areWorker部署配置,包括環(huán)境變量、命名空間和服務(wù)參數(shù),確保多環(huán)境一致性和可擴(kuò)展性。包含端到端、多語(yǔ)言、集成和單元測(cè)試,覆蓋數(shù)據(jù)處理、檢索和對(duì)話(huà)邏輯。測(cè)試文件如multilingual.spec.ts、ingest?retriever.test.ts、ingest.test.ts、retriever.test.ts,保障系統(tǒng)穩(wěn)定性和功能正確性。整體結(jié)構(gòu)支持多語(yǔ)言?xún)?nèi)容、智能檢索與生成、異常處理和降級(jí)策略,便于擴(kuò)展和維護(hù),適合構(gòu)建高可用、智能化的聊天機(jī)?人系統(tǒng)。Cloud?are提供了一套R(shí)AG參考架構(gòu),展示了如何在無(wú)服務(wù)?環(huán)境中構(gòu)建高效、可擴(kuò)展的RAG系統(tǒng)。該架構(gòu)充分利用了Cloud?are的邊緣計(jì)算平臺(tái)和相關(guān)服務(wù)。在知識(shí)庫(kù)構(gòu)建階段,系統(tǒng)會(huì)自動(dòng)從Hugo網(wǎng)站的content/目錄收集Markdown文檔,通過(guò)本地或云端腳本(如fast?ingest.ts)進(jìn)行內(nèi)容解析和分塊,然后調(diào)用千問(wèn)或Gemini等嵌入模型生成文檔向量,最終將向量及其元數(shù)據(jù)直接存儲(chǔ)到Cloud?areVectorize向量數(shù)據(jù)庫(kù)中。整個(gè)流程無(wú)需消息隊(duì)列或關(guān)系型數(shù)據(jù)庫(kù),簡(jiǎn)化了架構(gòu),提升在知識(shí)查詢(xún)階段,用戶(hù)通過(guò)網(wǎng)站聊天Widget提交問(wèn)題,Cloud?areWorker作為API端點(diǎn)接收請(qǐng)求,首先將用戶(hù)查詢(xún)轉(zhuǎn)化為向量表示,然后在Vectorize中檢索最相關(guān)的文檔片段。檢索結(jié)果與原始查詢(xún)一同構(gòu)建提示詞,調(diào)用大語(yǔ)言模型(如千問(wèn)或Gemini)生成最終回答,并將響應(yīng)返回給用戶(hù)。該架構(gòu)的主要優(yōu)勢(shì)包括:充分利用Cloud?areWorkers的無(wú)服務(wù)?特性,自動(dòng)擴(kuò)縮容,無(wú)需服務(wù)?運(yùn)維;依托全球200多個(gè)數(shù)據(jù)中心的邊緣計(jì)算能力,提供低延遲響應(yīng);架構(gòu)簡(jiǎn)潔,組件解耦,便于擴(kuò)展和維護(hù);按使用量計(jì)費(fèi),具備良好的成本效益。通過(guò)采用這種架構(gòu),開(kāi)發(fā)者可以快速構(gòu)建和部署高性能的RAG應(yīng)用,充分發(fā)揮Cloud?are全球網(wǎng)絡(luò)和Vectorize服務(wù)的優(yōu)勢(shì)。3.4核心技術(shù)棧介紹在后端架構(gòu)方面,我們選擇了Cloud?areWorkers作為邊緣計(jì)算平臺(tái),提供全球分布的低延遲響應(yīng),同時(shí)使用Cloud?areVectorize作為向量數(shù)據(jù)庫(kù),存儲(chǔ)文檔嵌入和處理相似度搜索,并采用TypeScript作為開(kāi)發(fā)語(yǔ)言以確保類(lèi)型安全。AI模型服務(wù)方面,系統(tǒng)支持千問(wèn)(Qwen)和Google的Gemini兩種選擇。千問(wèn)是阿3.4.核心技術(shù)棧介紹11里云提供的大語(yǔ)言模型和嵌入模型,特別適合中文內(nèi)容處理,而Gemini是Google提供的多模態(tài)AI模型,適合處理多種類(lèi)型的內(nèi)容。嵌入模型可以選擇千問(wèn)的text?embedding?v4或Gemini的text?embedding?004。對(duì)于中國(guó)大陸用戶(hù),建議使用千問(wèn)模型,因?yàn)镚oogle的服務(wù)在中國(guó)被封禁,而且千問(wèn)模型在中文處理上表現(xiàn)更佳。千問(wèn)的嵌入模型(如text?embedding?v4)和大語(yǔ)言模型(如qwen?turbo?latest)都提供了高質(zhì)量的中文支持,且更具成本優(yōu)勢(shì)(只有GeminiAPI約一半的價(jià)格)。前端組件方面,我們使用Widget.js作為輕量級(jí)聊天界面,支持Markdown渲染,采用Hugo作為靜態(tài)網(wǎng)站生成?進(jìn)行內(nèi)容管理,并實(shí)現(xiàn)響應(yīng)式設(shè)計(jì)以支持桌面和移動(dòng)在開(kāi)發(fā)工具方面,使用Wrangler作為Cloud?areWorkers的開(kāi)發(fā)和部署工具,Node.js作為本地開(kāi)發(fā)和數(shù)據(jù)處理環(huán)境,并采用npm或pnpm作為包管理?。3.4.1CloudflareVectorize架構(gòu)細(xì)節(jié)Vectorize在整體架構(gòu)中扮演著關(guān)鍵角色,它連接了數(shù)據(jù)處理和實(shí)時(shí)查詢(xún)兩個(gè)階段:數(shù)據(jù)流設(shè)計(jì)1.向量生成流程:1Markdown文檔?文本分塊?嵌入模型?向量表示?Vectorize存儲(chǔ)2.向量查詢(xún)流程:1用戶(hù)查詢(xún)?嵌入模型?查詢(xún)向量?Vectorize檢索?相關(guān)文檔數(shù)據(jù)模型設(shè)計(jì)Vectorize中存儲(chǔ)的向量包含以下關(guān)鍵組成部分:1.向量ID:唯一標(biāo)識(shí)符,通?;谖臋n路徑和塊索引生成2.向量值:由嵌入模型生成的數(shù)值數(shù)組3.元數(shù)據(jù):與向量關(guān)聯(lián)的描述性信息4.命名空間:可選的向量分組標(biāo)識(shí)示例向量結(jié)構(gòu):1{2id:"a1b2c3d4?0",//基于文檔路徑和塊索引生成的唯一ID3values:[0.12,0.45,0.67,/*...1024個(gè)維度...*/],//1024維向量12第3章:技術(shù)棧選擇與架構(gòu)設(shè)計(jì)4metadata:{5url:"https://jimmysong.io/blog/launch?ai?resource?page",//文檔URL6title:"RAG聊天機(jī)?人指南",//文檔標(biāo)題7sourcePath:"content/zh/blog/launch?ai?resource?page/index.md",//源文件路徑8chunkIndex:0,//塊索引9language:"zh",//語(yǔ)言10tags:["AI","RAG","Cloudflare"],//標(biāo)簽11createdAt:"2025?07?31T10:00:00Z",//創(chuàng)建時(shí)間12wordCount:256//字?jǐn)?shù)統(tǒng)計(jì)13},14namespace:"zh"http://命名空間(可選)15}查詢(xún)優(yōu)化策略為了提升查詢(xún)性能,Vectorize采用了多項(xiàng)優(yōu)化措施。首先,系統(tǒng)會(huì)自動(dòng)優(yōu)化向量索引結(jié)構(gòu),確保在大規(guī)模數(shù)據(jù)集下依然能夠高效檢索。默認(rèn)采用近似搜索算法,在保證檢索準(zhǔn)確性的同時(shí)顯著提升響應(yīng)速度。對(duì)于常用的過(guò)濾字段,Vectorize支持元數(shù)據(jù)索引,便于實(shí)現(xiàn)基于標(biāo)簽、語(yǔ)言等屬性的高效篩選。此外,通過(guò)命名空間機(jī)制,可以實(shí)現(xiàn)數(shù)據(jù)的邏輯隔離和針對(duì)性查詢(xún)優(yōu)化,滿(mǎn)足多租戶(hù)或多語(yǔ)言場(chǎng)景下的需求。3.5技術(shù)棧選擇的考量本系統(tǒng)之所以采用當(dāng)前的技術(shù)棧,主要基于以下幾個(gè)方面的綜合考量:?首先,Cloud?areWorkers提供了全球200多個(gè)數(shù)據(jù)中心的邊緣計(jì)算能力,能夠?qū)崿F(xiàn)平均低于50ms的響應(yīng)延遲,并支持自動(dòng)擴(kuò)縮容,極大簡(jiǎn)化了運(yùn)維工作。?按請(qǐng)求計(jì)費(fèi)模式和Vectorize的免費(fèi)額度,使得整體方案具備良好的成本效益,尤其適合個(gè)人博客和小型項(xiàng)目的快速上線(xiàn)。?在開(kāi)發(fā)體驗(yàn)方面,TypeScript的類(lèi)型安全保障和支持熱重載的開(kāi)發(fā)環(huán)境,使得開(kāi)發(fā)流程更加高效和可靠。結(jié)合模塊化架構(gòu)設(shè)計(jì),系統(tǒng)能夠靈活集成多種AI服務(wù)商,并原生支持中英文等多語(yǔ)言?xún)?nèi)容,具備良好的可擴(kuò)展性。3.5.1Vectorize的獨(dú)特優(yōu)勢(shì)在眾多向量數(shù)據(jù)庫(kù)方案中,Cloud?areVectorize具備無(wú)縫集成Cloud?areWorkers的能力,配置簡(jiǎn)單,易于上手。依托Cloud?are全球網(wǎng)絡(luò),能夠?yàn)橛脩?hù)提供低延遲的向量檢索服務(wù)。后臺(tái)自動(dòng)優(yōu)化索引,支持單索引多達(dá)500萬(wàn)個(gè)向量,滿(mǎn)足大規(guī)模應(yīng)用需求。計(jì)費(fèi)方式透明,按查詢(xún)和存儲(chǔ)維度計(jì)費(fèi),無(wú)隱藏費(fèi)用。豐富的元數(shù)據(jù)支持和命名空間機(jī)制,進(jìn)一步提升了數(shù)據(jù)管理和查詢(xún)的靈活性。這些特性共同構(gòu)成了Vectorize在RAG應(yīng)用場(chǎng)景下的核心競(jìng)爭(zhēng)力,使其成為快速部署和擴(kuò)展AI應(yīng)用的理想選擇。3.6.小結(jié)13通過(guò)本章的介紹,您已經(jīng)對(duì)RAG聊天機(jī)?人的整體架構(gòu)和核心技術(shù)棧有了清晰的認(rèn)識(shí)。Cloud?areWorkers和Vectorize的無(wú)服務(wù)?架構(gòu)設(shè)計(jì),使得系統(tǒng)具備高性能、低延遲和易擴(kuò)展的特點(diǎn)。接下來(lái),我們將深入探討RAG技術(shù)的原理和實(shí)現(xiàn)細(xì)節(jié),幫助您更好地理解如何構(gòu)建一個(gè)智能、高效的聊天機(jī)?人系統(tǒng)。本章充當(dāng)導(dǎo)航:快速把握系統(tǒng)各階段職責(zé),并指向后續(xù)詳細(xì)章節(jié)。核心鏈路:內(nèi)容→向量化→索引→檢索→Prompt→回答。帶你快速了解RAG流水線(xiàn)的整體架構(gòu)與各模塊分工,幫助建立全局認(rèn)知。4.1總體架構(gòu)流程圖下方列舉了RAG流水線(xiàn)的主要處理步驟,涵蓋從內(nèi)容接入到答案生成的完整流程:2.解析+Front?matter3.分塊chunkText4.批量嵌入(Gemini/Qwen)5.向量規(guī)整/裁剪6.批量UpsertVectorize8.上下文拼裝9.Prompt構(gòu)建各環(huán)節(jié)緊密銜接,確保內(nèi)容高效流轉(zhuǎn)與處理。4.2模塊職責(zé)速覽下表簡(jiǎn)要梳理了各階段的主要職責(zé)及關(guān)注點(diǎn),便于快速定位后續(xù)章節(jié):4.3.關(guān)鍵參數(shù)一覽15階段章節(jié)主要職責(zé)關(guān)鍵點(diǎn)分塊向量映射標(biāo)題/句級(jí)切分控制嵌入Qwen嵌入批量/并發(fā)/維度規(guī)整成本與吞吐平衡存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)Schema最小化控制容量+語(yǔ)言標(biāo)記檢索檢索流程穩(wěn)健生成答案生成上下文相關(guān)性與維護(hù)重建索引全量重建流程與指標(biāo)模型/策略升級(jí)支持4.3關(guān)鍵參數(shù)一覽流水線(xiàn)各環(huán)節(jié)涉及多個(gè)關(guān)鍵參數(shù),以下表格匯總常用配置及示例:名稱(chēng)描述示例DING_BATCH_SIZE單次嵌入批大小(Gemini)UP?LOAD_BATCH_SIZE/admin/upsert每批項(xiàng)目數(shù)名稱(chēng)描述示例T_FILES文件并行解析上限T_EMBEDDINGS并發(fā)嵌入請(qǐng)求上限topK檢索返回片段數(shù)8合理設(shè)置參數(shù)有助于提升系統(tǒng)性能與穩(wěn)定性。4.4語(yǔ)言策略概述RAG流水線(xiàn)支持多語(yǔ)言?xún)?nèi)容處理,以下簡(jiǎn)要介紹語(yǔ)言相關(guān)的核心策略:1.Ingest寫(xiě)入language2.查詢(xún)先metadata過(guò)濾,失敗回退全量3.URL二次過(guò)濾(/en/前綴)4.Prompt指令與標(biāo)簽雙語(yǔ)化5.源鏈接返回保持原語(yǔ)言路徑結(jié)構(gòu)多語(yǔ)言機(jī)制確保檢索與生成環(huán)節(jié)的準(zhǔn)確性和一致性。4.5常見(jiàn)演進(jìn)路線(xiàn)系統(tǒng)可持續(xù)演進(jìn),常見(jiàn)優(yōu)化方向如下:這些策略有助于提升系統(tǒng)擴(kuò)展性與靈活性。4.6.小結(jié)17通過(guò)模塊解耦與批量/并發(fā)優(yōu)化,RAG流水線(xiàn)實(shí)現(xiàn)了高效可擴(kuò)展的端到端處理。后續(xù)章節(jié)將詳細(xì)介紹各環(huán)節(jié)的實(shí)現(xiàn)細(xì)節(jié)與優(yōu)化策略。環(huán)境準(zhǔn)備與依賴(lài)安裝在開(kāi)始構(gòu)建RAG聊天機(jī)?人之前,合理的環(huán)境配置是確保項(xiàng)目順利進(jìn)行的關(guān)鍵。本章將指導(dǎo)您完成所有必要的環(huán)境設(shè)置,包括Node.js和WranglerCLI的安裝、各API服務(wù)的申請(qǐng)與配置,以及Cloud?areVectorize向量數(shù)據(jù)庫(kù)的初始化。通過(guò)按照本章步驟操作,您將建立起一個(gè)完整的開(kāi)發(fā)環(huán)境,為后續(xù)的開(kāi)發(fā)工作奠定堅(jiān)實(shí)基礎(chǔ)。5.1開(kāi)發(fā)環(huán)境要求為了構(gòu)建和運(yùn)行RAG聊天機(jī)?人,你需要準(zhǔn)備以下開(kāi)發(fā)環(huán)境:?Cloud?areWranglerCLI用于開(kāi)發(fā)和部署根據(jù)你的選擇,你需要申請(qǐng)不同的API密鑰:千問(wèn)(Qwen)API申請(qǐng)步驟:1.訪(fǎng)問(wèn)阿里云百煉平臺(tái)2.注冊(cè)并完成實(shí)名認(rèn)證3.開(kāi)通大模型服務(wù),選擇合適的付費(fèi)方案4.獲取APIKey和BaseURL5.記錄以下信息: /compatible?mode/v1)1.訪(fǎng)問(wèn)GoogleAIStudio2.登錄Google賬號(hào)5.3.Cloud?are服務(wù)配置193.創(chuàng)建新的API密鑰4.記錄GOOGLE_API_KEY5.3Cloudflare服務(wù)配置5.3.1注冊(cè)和配置Cloudflare1.注冊(cè)Cloud?are賬號(hào)2.安裝WranglerCLI:1npminstall?gwrangler3.登錄Cloud?are:1wranglerlogin5.3.2創(chuàng)建Vectorize索引Vectorize是Cloud?are提供的向量數(shù)據(jù)庫(kù)服務(wù),在RAG系統(tǒng)中用于存儲(chǔ)和檢索文檔創(chuàng)建索引時(shí)需要考慮以下因素:1.維度匹配:索引維度必須與所使用的嵌入模型輸出維度一致2.距離度量:根據(jù)應(yīng)用場(chǎng)景選擇合適的距離度量方式3.命名規(guī)范:使用描述性的索引名稱(chēng)1#為千問(wèn)text-embedding-v4模型(1024維)創(chuàng)建索引2wranglervectorizecreatewebsite?rag??dimensions=1024??metric=cosine上述命令用于在Cloud?areVectorize服務(wù)中創(chuàng)建一個(gè)名為website?rag的向量索引,適配千問(wèn)text?embedding?v4模型(輸出維度為1024)。各參數(shù)說(shuō)明如下:?website?rag:索引名稱(chēng),需唯一,用于后續(xù)綁定和引用。??dimensions:指定向量的維度,需與所用嵌入模型的輸出維度一致(如??metric:指定向量相似度的計(jì)算方式,可選值包括:?cosine:余弦相似度(推薦用于文本檢索)?euclidean:歐氏距離dot?product:點(diǎn)積20第5章:環(huán)境準(zhǔn)備與依賴(lài)安裝向量維度指的是每個(gè)文本被嵌入(embedding)后所生成的向量包含的數(shù)值個(gè)數(shù)。例如,維度為1024表示每個(gè)文本會(huì)被表示為一個(gè)包含1024個(gè)浮點(diǎn)數(shù)的向量。一般來(lái)說(shuō),維度越高,向量能表達(dá)的信息越豐富,檢索起來(lái)就越精確,但也會(huì)帶來(lái)存儲(chǔ)和計(jì)算成本的增加。因此,實(shí)際開(kāi)發(fā)中應(yīng)嚴(yán)格按照所選選擇。維度的選擇必須與所用嵌入模型的輸出一致。例如,千問(wèn)的text?embedding?v4模型輸出的每個(gè)向量就是1024維。如果設(shè)置為其他數(shù)值,將導(dǎo)致存儲(chǔ)和檢索時(shí)維度不匹配,無(wú)法正常使用。不同模型的輸出維度可能不同,務(wù)必查閱模型文檔后正確設(shè)置。此外,wranglervectorizecreate還支持以下常用參數(shù):??preset:指定預(yù)設(shè)的嵌入模型,自動(dòng)配置維度和距離度量(如openai/text?embedding?ada?002??description:為索引添加描述信息,便于管理。??json:以JSON格式輸出結(jié)果,便于腳本處理。?e,??env:指定環(huán)境變量文件或環(huán)境名,適用于多環(huán)境部署。完整參數(shù)列表可通過(guò)wranglervectorizecreate??help查看。建議根據(jù)實(shí)際嵌入模型和業(yè)務(wù)需求合理設(shè)置參數(shù),確保索引性能和檢索效果。5.3.3創(chuàng)建元數(shù)據(jù)索引在向量數(shù)據(jù)庫(kù)中,元數(shù)據(jù)(Metadata)是與每個(gè)向量一起存儲(chǔ)的結(jié)構(gòu)化信息,例如文檔的URL、語(yǔ)言、標(biāo)簽等。元數(shù)據(jù)本身不是Cloud?areVectorize獨(dú)有的概念,幾乎所有主流的嵌入數(shù)據(jù)庫(kù)(如Pinecone、Weaviate、Milvus等)都支持為向量附加元數(shù)據(jù),并基于元數(shù)據(jù)進(jìn)行過(guò)濾檢索。通過(guò)為常用的元數(shù)據(jù)字段建立索引,可以高效地實(shí)現(xiàn)如“按語(yǔ)言篩選”、“按標(biāo)簽過(guò)濾”等復(fù)雜查詢(xún),提升檢索的靈活性和性能。為了支持基于元數(shù)據(jù)的過(guò)濾查詢(xún),需要為常用的元數(shù)據(jù)字段創(chuàng)建索引:1#為URL字段創(chuàng)建元數(shù)據(jù)索引2wranglervectorizecreate?metadata?indexwebsite?rag??property?name=url??type=string34#為語(yǔ)言字段創(chuàng)建元數(shù)據(jù)索引5wranglervectorizecreate?metadata?indexwebsite?rag??property?name=language??type=string67#為標(biāo)簽字段創(chuàng)建元數(shù)據(jù)索引8wranglervectorizecreate?metadata?indexwebsite?rag??property?name=tags??type=stringVectorize支持最多創(chuàng)建10個(gè)元數(shù)據(jù)索引,每個(gè)索引支持的類(lèi)型包括:?string:字符串類(lèi)型?boolean:布爾類(lèi)型5.4.項(xiàng)目初始化215.3.4查看索引信息創(chuàng)建索引后,可以查看索引的詳細(xì)信息:1#查看索引基本信息2wranglervectorizelist34#查看索引詳細(xì)信息5wranglervectorizeinfowebsite?rag67#查看元數(shù)據(jù)索引8wranglervectorizelist?metadata?indexwebsite?rag5.4項(xiàng)目初始化1.克隆項(xiàng)目倉(cāng)庫(kù):1gitclone/rootsongjc/rag?chatbot.git2cdrag?chatbot1npminstall3.配置wrangler.toml,加入你的API密鑰和Vectorize索引配置:1name="website?rag?worker"2main="src/index.ts"3compatibility_date="2024?07?31"45[vars]6PROVIDER="qwen"7EMBED_DIM=10248LLM_MODEL="qwen?turbo?latest"9EMBED_MODEL="text?embedding?v4"10QWEN_API_KEY="your?qwen?api?key"11QWEN_BASE="/compatible?mode/v1"1213#綁定Vectorize索引14[[vectorize]]15binding="VECTORIZE"16index_name="website?rag"1718#綁定AI模型(如果使用WorkersAI)19[ai]20binding="AI"22第5章:環(huán)境準(zhǔn)備與依賴(lài)安裝5.4.1環(huán)境變量配置建議將敏感信息(如API密鑰)存儲(chǔ)在環(huán)境變量中,而不是直接寫(xiě)在配置文件里:1#設(shè)置環(huán)境變量2exportQWEN_API_KEY="your?qwen?api?key"或在.dev.vars文件中配置(僅用于開(kāi)發(fā)環(huán)境):1QWEN_API_KEY=your?qwen?api?key2GOOGLE_API_KEY=your?google?api?key5.5驗(yàn)證配置配置完成后,可以通過(guò)以下方式驗(yàn)證設(shè)置是否正確:1.測(cè)試Vectorize連接:1#查看索引信息2wranglervectorizeinfowebsite?rag2.測(cè)試Worker部署:1#本地開(kāi)發(fā)模式2wranglerdev34#部署到Cloudflare5wranglerdeploy3.創(chuàng)建一個(gè)簡(jiǎn)單的測(cè)試腳本來(lái)驗(yàn)證嵌入模型是否正常工作。1//test-embedding.ts2import{createEmbedding}from'./src/embedding';34asyncfunctiontestEmbedding(){5try{6consttestText="這是一個(gè)測(cè)試文本";7constembedding=awaitcreateEmbedding(testText);8console.log(`成功生成嵌入向量,維度:${embedding.length}`);9}catch(error){10console.error("嵌入生成失?。?,error);11}12}1314testEmbedding();通過(guò)以上步驟,你應(yīng)該能夠成功設(shè)置RAG聊天機(jī)?人所需的開(kāi)發(fā)環(huán)境,并正確配置5.6.小結(jié)23Cloud?areVectorize服務(wù)。本章介紹了RAG聊天機(jī)?人開(kāi)發(fā)所需的環(huán)境準(zhǔn)備和依賴(lài)安裝,包括Node.js、WranglerCLI、API密鑰申請(qǐng)以及Cloud?areVectorize的配置。通過(guò)這些步驟,你將建立起一個(gè)完整的開(kāi)發(fā)環(huán)境,為后續(xù)的RAG系統(tǒng)開(kāi)發(fā)打下堅(jiān)實(shí)基礎(chǔ)。接下來(lái),我們將深入探討RAG技術(shù)的原理和實(shí)現(xiàn)細(xì)節(jié),幫助你更好地理解如何構(gòu)建一個(gè)智能、高效的聊天機(jī)?人系統(tǒng)。知識(shí)庫(kù)數(shù)據(jù)收集本章節(jié)將介紹如何系統(tǒng)性地收集和整理個(gè)人知識(shí)庫(kù)的數(shù)據(jù)源,包括內(nèi)容類(lèi)型的選擇、數(shù)據(jù)收集的自動(dòng)化腳本示例,以及在Hugo網(wǎng)站結(jié)構(gòu)下的實(shí)際操作方法,幫助你高效構(gòu)建適合數(shù)字分身的知識(shí)庫(kù)基礎(chǔ)。對(duì)于個(gè)人數(shù)字分身,你可以收集以下類(lèi)型的內(nèi)容作為知識(shí)庫(kù):?個(gè)人博客文章:技術(shù)總結(jié)、思考感悟、項(xiàng)目經(jīng)驗(yàn)創(chuàng)建一個(gè)數(shù)據(jù)收集腳本來(lái)遍歷你的Hugo網(wǎng)站目錄:1//collect-content.ts2import{readdir,readFile,stat}from'fs/promises';3import{join}from'path';4importmatterfrom'gray?matter';56interfaceContentFile{7path:string;8title:string;9content:string;10metadata:Record<string,any>;11}1213asyncfunctioncollectMarkdownFiles(dir:string):Promise<ContentFile[]>{14constfiles:ContentFile[]=[];1516asyncfunctiontraverse(currentDir:string){17constentries=awaitreaddir(currentDir);6.2.收集腳本示例251819for(constentryofentries){20constfullPath=join(currentDir,entry);21conststats=awaitstat(fullPath);2223if(stats.isDirectory()){24//跳過(guò)草稿和私有目錄25if(!entry.startsWith('.')&&entry!=='drafts'){26awaittraverse(fullPath);27}28}elseif(entry.endsWith('.md')&&entry!=='index.md'){29constcontent=awaitreadFile(fullPath,'utf?8');30const{data,content:markdownContent}=matter(content);3132//只收集已發(fā)布的內(nèi)容33if(!data.draft){34files.push({35path:fullPath,36title:data.title??entry.replace('.md',''),37content:markdownContent,38metadata:{39...data,40

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論