跑通自己的AI文檔問(wèn)答系統(tǒng))
10分鐘R2R本地部署:免費(fèi)跑通自己的AI文檔問(wèn)答系統(tǒng)【免費(fèi)下載鏈接】R2RSoTA production-ready AI retrieval system. Agentic Retrieval-Augmented Generation (RAG) with a RESTful API.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/r2/R2R部署完成后,你的文檔庫(kù)就住進(jìn)了一臺(tái)會(huì)思考的檢索引擎:上傳 PDF、Word、網(wǎng)頁(yè),它自動(dòng)切塊、向量化,再基于文檔內(nèi)容回答問(wèn)題并附上出處。這就是 R2R 本地部署要解決的事——一個(gè)帶完整管理面板的開(kāi)源 AI 文檔檢索與問(wèn)答系統(tǒng),全程跑在你自己的機(jī)器上。 方案選型:Docker 還是源碼維度Docker 部署源碼部署上手速度快,幾條命令起全部容器慢,需裝 Python 環(huán)境、配依賴可定制性中,改配置文件即可生效高,可深入改源碼適用人群想先跑通、驗(yàn)證效果的普通用戶要二次開(kāi)發(fā)的開(kāi)發(fā)者資源占用全套約 8GB 內(nèi)存起視加載模塊而定,更可控建議:先用 Docker 跑通,確認(rèn)滿足需求后再考慮源碼方式,避免一開(kāi)始陷在環(huán)境搭建里。? 環(huán)境自檢:動(dòng)手前花 2 分鐘確認(rèn)檢查項(xiàng)最低要求推薦值如何確認(rèn)是否達(dá)標(biāo)Docker Desktop已安裝并能運(yùn)行容器24.0 以上終端執(zhí)行docker version,能打印客戶端和服務(wù)端版本內(nèi)存8GB16GB系統(tǒng)設(shè)置里查看;Docker 需在設(shè)置里分配至少 8GB磁盤空間10GB 可用20GBdocker system df查看鏡像占用,另留空間放文檔數(shù)據(jù)端口占用7272、7273 空閑同左netstat -an \| findstr 7272(Windows)或lsof -i :7272(Mac/Linux)無(wú)輸出即空閑網(wǎng)絡(luò)能拉取 Docker Hub 鏡像有加速配置docker pull hello-world能成功下載別急,有一項(xiàng)沒(méi)達(dá)標(biāo)就先補(bǔ)上,后面會(huì)少踩很多坑。 分步部署:跟著做就行第 1 步:拿到項(xiàng)目代碼??寺}(cāng)庫(kù)并進(jìn)入部署目錄,這一步只為把 compose 文件和默認(rèn)配置放到本地。git clone https://gitcode.com/GitHub_Trending/r2/R2R cd R2R/docker # 部署文件都在這個(gè)目錄執(zhí)行后應(yīng)看到compose.yaml、env/、user_configs/等文件,說(shuō)明目錄沒(méi)錯(cuò)。第 2 步:填上模型密鑰。編輯 docker/env/r2r.env,找到OPENAI_API_KEY這一行,把你的密鑰填進(jìn)去(后面接 Ollama 本地模型可以跳過(guò)這步)。其他變量如 Postgres 賬號(hào)密碼已有默認(rèn)值,不用動(dòng)。第 3 步:啟動(dòng)服務(wù)棧。一條命令拉起 R2R 服務(wù)、數(shù)據(jù)庫(kù)和管理面板,數(shù)據(jù)持久化到 Docker 卷里。# --profile postgres 讓向量數(shù)據(jù)庫(kù)一起啟動(dòng),數(shù)據(jù)不隨容器銷毀丟失 docker compose -f compose.yaml --profile postgres up -d首次會(huì)拉取鏡像,耐心等待幾分鐘。執(zhí)行后應(yīng)看到各容器狀態(tài)變?yōu)閁p (healthy)。第 4 步:打開(kāi)管理面板。瀏覽器訪問(wèn)http://localhost:7273,用默認(rèn)管理員賬號(hào)登錄(默認(rèn)郵箱adminexample.com,密碼change_me_immediately,來(lái)自認(rèn)證配置項(xiàng))。登錄后應(yīng)看到登錄界面,輸入憑證后進(jìn)入文檔管理頁(yè):關(guān)于完整功能棧:上面的compose.yaml是輕量組合。如果你還需要 Hatchet 工作流編排(處理批量文檔任務(wù)的后臺(tái)調(diào)度器),改用 docker/compose.full.yaml,命令換成docker compose -f compose.full.yaml --profile postgres up -d,詳細(xì)說(shuō)明見(jiàn)官方文檔 docs/README.md。 本地模型接入:數(shù)據(jù)不出內(nèi)網(wǎng)為什么接本地模型?兩個(gè)理由:文檔內(nèi)容不經(jīng)過(guò)任何第三方 API(隱私),以及按 token 計(jì)費(fèi)的云模型在高頻檢索下會(huì)燒錢(成本)。R2R 內(nèi)置 Ollama 配置模板,最小可運(yùn)行組合是兩個(gè)模型——一個(gè)負(fù)責(zé)生成回答的llama3.1,一個(gè)負(fù)責(zé)把文本變成向量的mxbai-embed-large:# 拉取本地大模型和向量模型 ollama pull llama3.1 ollama pull mxbai-embed-large然后復(fù)用倉(cāng)庫(kù)里現(xiàn)成的 Ollama 配置 py/core/configs/full_ollama.toml:把它復(fù)制一份放到 docker/user_configs/ 目錄,再到r2r.env里把R2R_CONFIG_PATH指向它,例如R2R_CONFIG_PATH/app/user_configs/full_ollama.toml,重啟容器生效。該目錄的用途說(shuō)明見(jiàn) docker/user_configs/README.md。 驗(yàn)證閉環(huán):看到這些才算部署成功驗(yàn)證項(xiàng)操作成功的現(xiàn)象健康檢查瀏覽器訪問(wèn)http://localhost:7272/v3/health返回 JSON,狀態(tài)為正常面板登錄訪問(wèn) 7273 端口并輸入默認(rèn)管理員憑證進(jìn)入文檔管理頁(yè),而不是反復(fù)跳回登錄框文檔入庫(kù)上傳 py/core/examples/data/aristotle.txt,等狀態(tài)變完成文檔列表里出現(xiàn)該文件,狀態(tài)為成功檢索問(wèn)答在聊天框問(wèn)一個(gè)只存在于文檔里的問(wèn)題回答準(zhǔn)確,且?guī)Э牲c(diǎn)擊的文檔出處引用持久化執(zhí)行docker compose ps,重啟容器后再看文檔和對(duì)話記錄都還在? 高頻問(wèn)題排障現(xiàn)象:瀏覽器打不開(kāi) 7273,一直轉(zhuǎn)圈。原因:面板容器還在啟動(dòng),或有程序占用了端口。 解法:docker compose ps確認(rèn)所有服務(wù)是healthy;用端口檢查命令排查占用,換端口后同步改r2r-dashboard.env?,F(xiàn)象:登錄時(shí)提示憑證錯(cuò)誤。原因:認(rèn)證配置里改過(guò)默認(rèn)賬號(hào),或require_authentication未開(kāi)啟導(dǎo)致行為不一致。 解法:對(duì)照 docker/env/r2r.env 與認(rèn)證段的default_admin_email/default_admin_password核對(duì)一遍?,F(xiàn)象:問(wèn)答無(wú)響應(yīng)或報(bào)模型超時(shí)。原因:LLM 密鑰沒(méi)填,或 Ollama 沒(méi)在跑。 解法:檢查r2r.env里密鑰非空;終端執(zhí)行ollama list能看到兩個(gè)模型,且ollama serve在后臺(tái)運(yùn)行?,F(xiàn)象:內(nèi)存占用飆高,Docker 變卡。原因:full 棧包含 Hatchet、RabbitMQ 等多套容器。 解法:先用輕量compose.yaml驗(yàn)證;Docker Desktop 設(shè)置里把分配內(nèi)存調(diào)到 12GB 以上?,F(xiàn)象:上傳某類文件失敗。原因:該格式?jīng)]有對(duì)應(yīng)解析器,或文件損壞。 解法:對(duì)照 py/core/examples/supported_file_types/ 里的示例確認(rèn)格式在支持列表內(nèi),換個(gè)文件重試。?? 調(diào)優(yōu)建議分塊別貪大:chunk_size調(diào)小(如 512)檢索更精準(zhǔn),調(diào)大(如 2048)上下文更完整,按文檔長(zhǎng)度二選一即可?;旌蠙z索打開(kāi):語(yǔ)義檢索加關(guān)鍵詞檢索一起用(RRF 融合排序),專有名詞多的場(chǎng)景命中率明顯更高。并發(fā)限流:concurrent_request_limit控制模型并發(fā),本機(jī)跑 Ollama 時(shí)調(diào)低(比如 2~4),避免顯存被打爆。定期備份:postgres_data卷里存著全部文檔和向量,docker run -v導(dǎo)出該卷即可,換機(jī)遷移也靠它。提示詞在線改:面板設(shè)置頁(yè)直接編輯各場(chǎng)景的提示詞模板,不用重啟服務(wù),見(jiàn) docs/cookbooks/images/application/settings_prompts.png 對(duì)應(yīng)的設(shè)置界面。下一步系統(tǒng)跑通之后,把真實(shí)工作文檔批量傳進(jìn)集合里,用聊天功能驗(yàn)證檢索質(zhì)量。如果問(wèn)答還不夠聰明,再去 py/core/configs/ 里挑一份更細(xì)的模型配置替換,然后按排障清單核對(duì)一遍環(huán)境變量?!久赓M(fèi)下載鏈接】R2RSoTA production-ready AI retrieval system. Agentic Retrieval-Augmented Generation (RAG) with a RESTful API.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/r2/R2R創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考