模型 / 資料集
NVIDIA/GenerativeAIExamples avatar
NVIDIA/GenerativeAIExamples

GenerativeAIExamples:NVIDIA 官方 RAG 與微服務參考實作的取捨

Generative AI reference workflows optimized for accelerated infrastructure and microservice architecture.

4,181 個 Star1,098 個 ForkJupyter NotebookApache-2.0
GitHub

秒懂

它是什麼?
這是一份以 Jupyter Notebook 為主體的參考實作集合,涵蓋 RAG、Data Flywheel、知識圖譜與 Vision NIM 工作流。它的價值在於展示 NVIDIA 自家推論堆疊怎麼串起來,代價是整份範例與特定硬體、特定 API key 綁得很緊。
適合誰用?
如果你已經在用 NVIDIA 的推論堆疊,而且想看清楚 NIM 微服務、NeMo Guardrails、NeMo Retriever 這幾塊在一個完整 RAG 管線裡各自站什麼位置,這個 repo 值得照著跑一遍,尤其是 RAG/examples/basic_rag/langchain 那條 docker compose 路徑。如果你的推論層是 vLLM、TGI 或雲端託管的閉源模型端點,這裡的多數範例對你的參考價值有限,因為它們的價值主要來自 NVIDIA 元件之間的接線方式,換掉元件之後剩下的骨架並不特別。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 6 天前。
用什麼語言寫的?
主要是 Jupyter Notebook(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

這個 repo 真正解決的是接線問題,不是模型問題

GenerativeAIExamples 裡沒有模型。它不放權重,不訓練模型,也不提供推論引擎本身。README 開頭把定位講得很直白:這是給想整合 NVIDIA 軟體生態的開發者的一個起點。換句話說,它處理的是「這些元件之間怎麼接」的問題,而不是「模型好不好」的問題。

具體來說,它要接的元件包括 NIM 微服務、NeMo Retriever、NeMo Guardrails、NeMo Customizer、NeMo Evaluator、NeMo Auditor,以及 RAPIDS 生態。這些東西各自有獨立文件,但把它們拼成一條能跑的 RAG 或 agent 管線,中間的樣板程式碼、容器編排、環境變數命名,才是這個 repo 提供的內容。

目標讀者因此相當明確:已經決定要用 NVIDIA 推論堆疊的團隊,需要一份可執行的起點。反過來說,如果你還在評估要用哪一家的推論服務,這裡的範例不會幫你做決定,因為它預設了答案。

目錄結構本身就是一份元件地圖

從 README 的目錄可以看出幾個平行區塊。RAG 底下再分成 RAG Notebooks、RAG Examples、RAG Tools、RAG Projects 四類,這個切法有實際意義:Notebooks 是教學性質的單檔流程,Examples 是可 docker compose 起來的完整應用,Tools 是可重用的元件,Projects 則是規模再大一點的整合。

nemo 目錄收的是 Data Flywheel 相關教材,包括 tool-calling 與 embedding-finetuning 兩條線。community 目錄放社群貢獻的範例,README 點名的是 knowledge_graph_rag 這個用 RAPIDS 做 GPU 加速知識圖譜的實作。vision_workflows 與 nim_workflows 則是視覺相關的 NIM 工作流,包含 VLM 事件監控、NV-CLIP 多模態搜尋、視覺文字擷取、以及用 NVDINOv2 搭配 Milvus 做 few-shot 分類。

這裡有個容易踩到的細節:vision_workflows 是以 git submodule 形式掛進來的。README 給的指令是 git clone https://github.com/nvidia/GenerativeAIExamples --recurse-submodules,少了 --recurse-submodules,那個目錄會是空的。一般 clone 之後發現資料夾沒東西,多半就是這個原因。

從 API key 到 Playground:最短可跑路徑

README 的 Try it Now 段落給了一條五步路徑,這是整份文件裡最具體的部分。第一步是取得 NVIDIA API key:到 NVIDIA API Catalog 選一個模型,點 Get API Key,然後 export NVIDIA_API_KEY=nvapi-...。第二步是一般的 git clone。第三步進入 RAG/examples/basic_rag/langchain/ 之後執行 docker compose up -d --build。第四步開 https://localhost:8090/ 提交查詢。第五步 docker compose down 收工。

這條路徑的設計意圖很清楚:把「先跑起來再說」的成本壓到最低。API key 走的是雲端端點,所以本機不需要先準備模型權重,只需要能跑容器。

但有兩件事 README 沒有在這段寫明。第一是 https 與 8090 這個埠,瀏覽器會遇到自簽憑證警告,這是預期行為不是設定錯誤。第二是 --build 會重新建置映像,第一次執行會拉不少層,時間長度取決於網路與 registry 速度。

另外,這條路徑用的是 NVIDIA 託管的端點。如果你的資料不能離開自己的網路,就得改走本地 NIM 部署那條線,README 在 What's New 裡有提到 RAG with Local NIM Deployment and LangChain 這份教材,但那是另一套前置條件。

Data Flywheel 那條線:NeMo 微服務的資料流

Data Flywheel 是這個 repo 裡架構最完整的一塊。README 把它定義為一個自我強化的循環:使用者互動產生資料,資料改善模型,改善後的模型帶來更好的結果,再吸引更多互動。這個定義本身沒什麼特別,值得看的是它怎麼被拆成元件。

tool-calling 那份教材的流程是:用 Salesforce 的 xLAM function-calling 資料集,去客製化 Llama-3.2-1B-Instruct,然後評估準確率,最後加上安全約束。對應的元件是 NeMo Datastore 存資料、NeMo Customizer 做微調、NeMo Evaluator 做評估、NeMo Guardrails 做護欄,推論則由 NIM 負責。

這條線的關鍵在於它示範的是「微調之後怎麼驗證與約束」,而不是只示範微調。多數開源微調範例停在訓練完成,評估與護欄要自己想辦法。這裡把它們串成同一條流程,是這個 repo 相對少見的地方。

README 也提到 NeMo 微服務平台可以部署在雲端或地端的 Kubernetes 叢集上。這句話的份量不小:整條 Data Flywheel 流程的前提是你有一個可用的 K8s 環境,而不是單機。用 docker compose 起不來這一塊。

限制:硬體綁定與版本漂移

最明顯的限制是硬體。整個 repo 的主題標籤裡有 gpu-acceleration 與 tensorrt,多數範例的推論路徑預設有 NVIDIA GPU 可用。在沒有 GPU 的機器上,能跑的只有少數走雲端 API 的 notebook。

第二個限制是相依版本。這個 repo 的 release 節奏可以看出來:v0.6.0 在 2024 年 5 月,v0.7.0 在 6 月,v0.8.0 在 8 月,之後就沒有新的 release 條目。但 repository 的最後推送時間遠晚於此,也就是說 main 分支持續在動,而 release 標籤停在 2024 年 8 月。README 裡有些連結直接指向 v0.7.0 標籤下的路徑,例如 event-driven-rag-cve-analysis 與 08_RAG_Langchain_with_Local_NIM.ipynb。這種混用意味著照著 README 走,你可能同時碰到 main 分支的檔案與 v0.7.0 的檔案,兩者的相依套件不見得一致。

第三個限制是它作為教材的性質。Notebook 適合理解流程,但把 notebook 的程式碼直接搬進生產環境通常會出問題,因為這裡的範例多半沒有處理錯誤重試、併發、資源上限這些事。README 也沒有聲稱它們可以直接上線。

如果你的團隊用的是 AMD ROCm 或 Apple Silicon,這個 repo 基本不適用。這不是設定的問題,是範例本身依賴的推論路徑就沒有為那些平台設計。

對照組:LangChain 與 LlamaIndex 的範本路線

把這個 repo 和 LangChain 或 LlamaIndex 官方維護的 RAG 範本放在一起看,差異在取捨的方向不同。

LangChain 的範本庫走的是模型無關路線:同一個檢索鏈可以換成 OpenAI、Anthropic、本地 vLLM 或任何相容端點,代價是每個環節都比較抽象,你需要自己決定要用哪個向量庫、哪個 reranker。它的預設是「先選框架,再選元件」。

GenerativeAIExamples 反過來。它先決定元件是 NIM 微服務與 NeMo 系列,再示範這些元件怎麼接。這個順序讓範例更具體,docker compose 一鍵起來的體驗也更好,但橫向替換的空間小很多。

值得注意的是這個 repo 並沒有排除 LangChain。README 裡就有 agentic_rag_with_nemo_retriever_nim.ipynb 這份 notebook,把 NeMo Retriever NIM 接進 LangChain 的 agentic 管線。所以兩者不是互斥的選項,而是可以疊在一起。真正的分野在於:你要的是「一份能跑起來的 NVIDIA 參考架構」,還是「一份能自由換元件的框架範本」。前者看這個 repo,後者看框架自己的文件。

維護成本與授權

授權是 Apache-2.0,程式碼層面可以商用、可以修改、可以再散布,沒有 copyleft 的傳染性。README 的檔案開頭保留了 SPDX 標頭,這是 NVIDIA 一貫的做法。

但授權只涵蓋這個 repo 裡的程式碼。實際跑起來之後,你會用到 NIM 微服務、NeMo 系列元件、以及透過 API Catalog 呼叫的模型端點,這些各自有自己的授權條款與使用限制。Apache-2.0 不會自動延伸到那些元件上,這部分需要個別確認。

維護成本主要來自版本對齊。由於 release 停在 v0.8.0 而 main 持續更新,如果你把某個範例當作起點改造成內部專案,最好把當時的 commit 釘住,而不是跟著 main 走。否則上游的相依變更會在你不知情的情況下改變行為。

另一個成本是環境。Data Flywheel 那條線需要 Kubernetes,這不是隨手能起的東西。如果團隊沒有現成的 K8s 叢集,光是為了跑教材而建一套,成本會遠高於教材本身的價值。

該不該用,取決於你已經選了哪一邊

這個 repo 不是一份中立的技术評估材料,它是一份已經做完選擇之後的實作指南。判斷標準因此很簡單:你的推論層是不是 NVIDIA 的。是,這裡有現成的接線可以省下不少摸索時間。不是,這裡的多數內容對你只有閱讀價值。

想動手的話,從 RAG/examples/basic_rag/langchain 那條 docker compose 路徑開始最合理,因為它對前置條件的要求最低。想理解微服務怎麼組成完整循環,再往 nemo/data-flywheel/tool-calling 看。至於 vision_workflows 底下的內容,記得用 --recurse-submodules 才會出現。

如果只是要找一個能快速接上各種模型的 RAG 範本,LangChain 或 LlamaIndex 的範本庫會比這裡順手,因為它們不預設你的推論層是誰。這個 repo 的價值恰恰來自它預設了,而那個預設對某些團隊是加分,對另一些團隊是門檻。

編輯結論

如果你已經在用 NVIDIA 的推論堆疊,而且想看清楚 NIM 微服務、NeMo Guardrails、NeMo Retriever 這幾塊在一個完整 RAG 管線裡各自站什麼位置,這個 repo 值得照著跑一遍,尤其是 RAG/examples/basic_rag/langchain 那條 docker compose 路徑。如果你的推論層是 vLLM、TGI 或雲端託管的閉源模型端點,這裡的多數範例對你的參考價值有限,因為它們的價值主要來自 NVIDIA 元件之間的接線方式,換掉元件之後剩下的骨架並不特別。動手前先確認三件事:你拿得到 NVIDIA_API_KEY、你的機器有可用的 NVIDIA GPU 與對應的 container runtime、以及你打算照著跑的那個子目錄在 main 分支上是否還維持原本的相依版本。這三項任一不成立,範例會在第一步就停住。

官方來源

  1. Issues
  2. License: Apache-2.0
  3. NVIDIA/GenerativeAIExamples on GitHub
  4. README
  5. Releases
社群筆記

社群筆記