本文提供參考架構,協助您保護採用檢索增強生成 (RAG) 技術的應用程式網路基礎架構。RAG 架構通常包含個別子系統,可處理資料處理和內容擷取流程。這個參考架構說明如何使用共用 VPC 執行下列操作:
- 使用 Identity and Access Management (IAM) 權限,在子系統之間建立區隔。
- 使用私人 IP 位址連線應用程式元件。
本文適用於架構師、開發人員,以及網路和安全管理員。本文假設您對網路有基本瞭解。本文不會說明如何建立採用 RAG 的應用程式。
架構
下圖顯示本文介紹的網路架構:
上圖的架構顯示下列元件:
| 元件 | 目的 |
|---|---|
| 外部網路 (地端部署或其他雲端) |
|
| 轉送專案 |
|
| RAG 共用虛擬私有雲主專案 | 主機代管共用虛擬私有雲網路,該網路代管前端服務負載平衡器,以及任何需要虛擬私有雲網路的服務。所有服務專案都能存取該共用虛擬私有雲網路。 |
| 資料擷取服務專案 |
包含用於輸入原始資料的 Cloud Storage bucket。包含資料擷取子系統,包括下列元件:
|
| 提供服務的服務專案 |
包含服務子系統,其中包含下列元件,可提供推論和互動的服務與功能:
|
| 前端服務專案 |
包含服務子系統,也就是使用者互動服務前端的負載平衡器,該服務在 Cloud Run 或 Google Kubernetes Engine (GKE) 上執行。 專案也包含 Google Cloud Armor,可協助限制服務的存取方式。如要從網際網路提供存取權,可以新增區域性外部應用程式負載平衡器。 |
| VPC Service Controls 範圍 | 有助於防範資料遭竊。儲存在 Cloud Storage 值區中的資料無法複製到 perimeter 外部的任何位置,且控制平面作業受到保護。 |
以下各節說明架構中的連線和流量。
元件之間的連線
本節說明這個架構中元件和網路之間的連線。
外部網路到轉送虛擬私有雲網路
外部網路透過 Cloud Interconnect 或高可用性 VPN 連線至 Google Cloud 路由虛擬私有雲網路,這些網路是 Network Connectivity Center 中樞的混合式輪輻。
路由 VPC 網路中的 Cloud Router 和外部網路中的外部路由器會交換邊界閘道通訊協定 (BGP) 路徑:
- 外部網路中的路由器會向路由 VPC Cloud Router 公告外部子網路的路徑。您可以使用 BGP 指標和屬性表示路徑偏好設定。
- 路由 VPC 網路中的 Cloud Router 會將 Google Cloud的 VPC 中的前置字元路徑通告至外部網路。
將虛擬私有雲網路路由至共用虛擬私有雲網路
您可以使用 Network Connectivity Center 中樞的 Network Connectivity Center 虛擬私有雲輪輻,連結路由虛擬私有雲網路和 RAG 虛擬私有雲網路。中樞也代管外部網路的混合型輪輻。
共用虛擬私有雲網路內的資源對資源
在這個設計中,Cloud Storage bucket 會接收來自外部網路的資料。推論要求會透過區域性內部應用程式負載平衡器傳送。 其餘系統則有下列選項:
- 將所有內容託管在 Google SaaS 基礎架構中,例如 Cloud Storage 值區、Vertex AI、Cloud Run 和 Pub/Sub。在這種情況下,元件會透過 Google 私人基礎架構通訊。
- 在 Compute Engine VM、GKE 叢集、Cloud SQL 資料庫或其他在 VPC 網路中執行的元件中,代管工作負載中的所有項目。在這種情況下,系統會透過您透過 Network Connectivity Center 或虛擬私有雲網路對等互連連結的網路,使用私人 IP 位址進行通訊。
- 混合使用全代管、平台和基礎架構服務。在這種情況下,您可以使用下列方法,在虛擬私有雲網路與全代管服務之間建立連線:
- 私人 Google 存取權:使用這個方法,在虛擬私有雲網路中執行的工作負載 (沒有外部 IP 位址) 即可存取 Google API。這項存取作業會在 Google 基礎架構內部進行,且這個程序不會將這類流量暴露在網際網路上。
- Private Service Connect:使用這個方法,您可以在服務專案中建立端點,連線至代管虛擬私有雲網路中託管的服務,例如 AlloyDB for PostgreSQL。
外部網路到前端服務負載平衡器
區域內部應用程式負載平衡器的端點是 RAG 網路中的 IP 位址。RAG 網路、路由網路和外部網路的混合式連線,都是同一個 Network Connectivity Center 中樞的輪輻。因此,您可以指示 Network Connectivity Center 將所有輪輻子範圍匯出至中樞,然後中樞會將這些子範圍重新匯出至其他輪輻網路。系統的終端使用者就能從外部網路連線至負載平衡服務。
流量
這個參考架構中的流量包括 RAG 資料流和推論流程。
RAG 族群流程
這個流程說明 RAG 資料如何從資料工程師流向向量儲存空間。
- 資料工程師會透過外部網路,經由 Cloud Interconnect 連線或 Cloud VPN 連線上傳原始資料。資料會上傳至路由虛擬私有雲網路中的 Private Service Connect 端點。
- 資料會透過 Google 內部基礎架構,傳輸至資料擷取服務專案中的 Cloud Storage 值區。
在資料擷取服務專案中,資料會透過下列其中一種方法在系統間傳輸:
- 私人 Google 存取權
- Private Service Connect 端點
- 直接使用 Google 基礎架構
方法取決於系統是代管於Google Cloud 虛擬私有雲網路,還是直接代管於Google Cloud。在這個流程中,資料擷取子系統會將分塊的 RAG 資料提供給模型,模型則會為每個分塊產生向量。
資料擷取子系統會將向量資料和分塊資料寫入適當的資料儲存區。
推論流程
這個流程說明客戶要求。
- 客戶從外部網路將要求傳送至服務的 IP 位址。
- 要求會透過 Cloud Interconnect 連線或 Cloud VPN 連線,傳輸至路由虛擬私有雲網路。
- 要求會透過虛擬私有雲輪輻連線傳輸至 RAG 虛擬私有雲網路。
- 客戶要求會傳送至負載平衡器,再由負載平衡器將要求傳遞至前端子系統。
- 前端子系統會將要求轉送至服務子系統。
- 服務子系統會使用資料存放區中的相關情境資料,擴增要求。
- 服務子系統會將增強後的提示傳送至 AI 模型,模型會生成回覆。
使用的產品
這項參考架構使用下列 Google Cloud 產品:
- 虛擬私有雲 (VPC):虛擬系統,可為 Google Cloud 工作負載提供全球性、可擴充的網路功能。虛擬私有雲包括虛擬私有雲網路對等互連、Private Service Connect、私人服務存取權和共用虛擬私有雲。
- 共用虛擬私有雲:虛擬私有雲的一項功能,可讓您使用網路中的內部 IP 位址,將多個專案的資源連線至通用虛擬私有雲網路。
- Private Service Connect:這項功能可讓消費者從 VPC 網路內部,以私密方式存取代管服務。
- 私人 Google 存取權:這項功能可讓沒有外部 IP 位址的 VM 執行個體,存取 Google API 和服務的外部 IP 位址。
- Cloud Interconnect:這項服務可透過高可用性且低延遲的連線,將外部網路延伸至 Google 網路。
- Cloud VPN:這項服務可透過 IPsec VPN 通道,將對等網路安全地延伸至 Google 的網路。
- Cloud Router:分散式全代管服務,提供邊界閘道通訊協定 (BGP) 發言者和回應者功能。Cloud Router 可與 Cloud Interconnect、Cloud VPN 和 Router 設備搭配使用,根據 BGP 接收和自訂學習的路徑,在虛擬私人雲端網路中建立動態路徑。
- Network Connectivity Center:一種協調架構,可簡化連線至稱為「中樞」的中央管理資源的輪輻資源之間的網路連線。
- VPC Service Controls:代管網路功能,可將 Google Cloud 資源的資料竊取風險降到最低。
- Cloud Load Balancing:一系列高效能、可擴充的全球和區域負載平衡器。
- Model Armor:這項服務可保護生成式和代理式 AI 資源,防範提示詞注入活動、敏感資料外洩和有害內容。
- Google Cloud Armor:這項網路安全防護服務提供網路應用程式防火牆 (WAF) 規則,有助於防範 DDoS 和應用程式攻擊。
- Cloud Storage:適用於多種資料類型的物件儲存庫,成本低廉且沒有限制。 資料在 Google Cloud 內外都能存取,且會複製到多個位置,以便提供備援機制。 Google Cloud
用途
這個架構適用於企業情境,整體系統的輸入、輸出和內部通訊必須使用私有 IP 位址,且不得經過網際網路:
- 私密輸入:上傳的資料不會透過網際網路傳輸。而是將 Cloud Storage bucket 託管在 Google Cloud路由虛擬私有雲網路中的 Private Service Connect 端點後方。您只能使用私人 IP 位址,透過 Cloud Interconnect 或 Cloud VPN 連線複製 RAG 資料。
- 私有服務間連線:服務透過 Google 的內部介面或虛擬私有雲網路內部的私有位址彼此通訊。
- 私密輸出:除非您選擇設定存取權,否則無法透過網際網路取得推論結果。根據預設,只有指定外部網路中的使用者可以連線到服務的私人端點。
設計替代方案
本節介紹可為 Google Cloud中支援 RAG 的應用程式採用的替代網路設計方法。
公開服務
在本文件中顯示的架構中,只有內部網路中的使用者可以將查詢傳送至應用程式。如果應用程式必須供網際網路上的用戶端存取,請使用區域性外部應用程式負載平衡器。
使用 GKE Inference Gateway
如果前端子系統在 GKE 上執行,您可以改用推論閘道,
設計須知
本節提供額外指引,協助您部署網路,支援 RAG 架構的私人連線。這份指南可協助您滿足安全性、法規遵循、可靠性、成本和效能方面的特定需求。本節的指引僅列出部分範例。針對特定部署作業,您可能需要考量本節未涵蓋的其他設計因素。
安全性、隱私權和法規遵循
在大多數情況下,您會在 AI 模型前方部署 Model Armor,評估傳入的提示和傳出的結果。Model Armor 有助於防範潛在風險,並確保以負責任的方式使用 AI。
如要在不當要求送達服務子系統前拒絕,可以將 Model Armor 附加至負載平衡器。
這個架構使用 VPC Service Controls,有助於防止未經授權的資料竊取行為。
這項設計採用既有的安全原則,有助於保護 RAG 工作負載。如要瞭解 AI 和機器學習工作負載專用的安全原則和建議,請參閱 Well-Architected Framework 中的「AI 和機器學習觀點:安全性」。
成本最佳化
如要瞭解 AI 和機器學習工作負載專用的成本最佳化原則和建議,請參閱 Well-Architected Framework 中的「AI 和機器學習觀點:成本最佳化」。
效能最佳化
如要瞭解 AI 和機器學習工作負載專用的效能最佳化原則和建議,請參閱 Well-Architected 架構中的「AI 和機器學習觀點:效能最佳化」。
部署
本節說明如何建立應用程式:
- 找出工作負載的區域。
- 建立 Google Cloud 專案和虛擬私有雲網路。
- 將外部網路連線至路由虛擬私有雲網路。
- 使用 Network Connectivity Center 連結網路。
- 找出 RAG 部署作業的元件,並建立服務帳戶。
- 設定 VPC Service Controls。
- 建構資料擷取子系統。
- 建構供應子系統。
- 建構前端子系統。
- 讓網際網路可連上您的應用程式。
找出工作負載的區域
一般來說,您會希望連線、虛擬私有雲子網路和工作負載盡量靠近地端部署網路或其他雲端用戶端。 Google Cloud 如要進一步瞭解如何為工作負載選擇地區,請參閱Google Cloud 地區選擇器和選擇 Compute Engine 地區的最佳做法。
建立 Google Cloud 專案和虛擬私有雲網路
如果貴機構已為分散式應用程式設定跨雲端網路,則應已存在轉送專案和轉送 VPC 網路。
依下列順序建立 Google Cloud 專案和 虛擬私有雲網路:
- 建立轉送專案。
- 建立啟用 Private Google Access 的轉送虛擬私有雲網路。
- 建立 RAG 專案。
- 將 RAG 專案升級為共用虛擬私有雲主專案。
- 建立資料擷取服務專案。
- 建立供應服務專案。
- 建立前端服務專案。
- 建立共用虛擬私有雲 RAG 網路,並啟用 Private Google Access。
- 授予服務專案使用 RAG 網路的權限。
將外部網路連線至轉送虛擬私有雲網路
如果您已設定分散式應用程式的跨雲端網路,可以略過這個步驟。
設定外部網路與路由網路之間的連線。 如要瞭解相關技術,請參閱「外部和混合式連線」。如需如何選擇連線產品的指引,請參閱「選擇網路連線產品」。
使用 Network Connectivity Center 連結網路
- 在路由專案中,建立 Network Connectivity Center 中樞。
- 將 Cloud Interconnect 連線新增為 VLAN 連結輪輻,或將 Cloud VPN 連線新增為 VPN 輪輻。
- 將 RAG 虛擬私有雲網路和路由虛擬私有雲網路新增至中樞,做為虛擬私有雲輪輻。
找出 RAG 部署作業的元件,並建立服務帳戶
- 選擇「RAG 部署」,並列出所需元件。
- 找出每個元件需要的存取權。
- 針對每個元件建立服務帳戶,並授予適當權限。在某些情況下,這表示您授予元件權限,允許元件從其他服務專案讀取或寫入資料。
這項設計假設您使用 Cloud Storage bucket 做為資料輸入元件,並在推論前端使用負載平衡器。其餘設計則可視需要調整。
理想情況下,每個元件都會以自己的服務帳戶執行。請確保每個元件只具備執行必要功能所需的最低 IAM 權限。舉例來說,資料擷取子系統中的 Cloud Run 工作需要從輸入 Cloud Storage bucket 讀取資料,但不需要寫入 bucket。在這個範例中,執行 Cloud Run 工作的服務專案應僅具備值區的讀取權限,不具備寫入權限。
設定 VPC Service Controls
- 建立 VPC Service Controls 範圍, 將部署作業納入其中。
- 設定存取規則。
建構資料擷取子系統
資料擷取子系統會從資料工程師取得原始資料,並處理這些資料,供服務子系統使用。
- 在資料擷取服務專案中,建立 Cloud Storage 值區。
- 在路由虛擬私有雲網路中,建立區域性 Private Service Connect 端點,然後將端點連線至 bucket。
- 在外部網路中,使用上一步產生的 IP 位址和網址,為端點新增 DNS 項目。
- 更新外部網路防火牆規則,允許存取端點 IP 位址。
- 在資料擷取服務專案中,根據所選的 RAG 架構,建構其餘的擷取管道。
- 授予 IAM 權限,讓擷取管道中的相關資源可以存取產生向量的模型。
- 授予 IAM 權限,讓擷取管道中的相關資源可以寫入向量資料存放區。
建構服務子系統
- 在服務專案中,建構服務管道。
- 授予 IAM 權限,讓前端系統中的服務帳戶可以存取服務子系統的輸出內容。
建構前端子系統
本節假設您使用區域性內部應用程式負載平衡器,並在 Cloud Run 前端使用無伺服器 NEG。不過,您可以使用其他負載平衡器和後端。
- 為前端系統建立程式碼。
- 在前端服務專案中,部署負載平衡前端系統,包括設定 Cloud Armor 安全性政策的選用步驟。
- 在路由 VPC 網路中設定 Cloud Router,將路徑從 RAG VPC 網路轉送至地端部署路由器。這項設定可讓用戶端連線至負載平衡器。
- 在外部網路中,設定防火牆規則,讓外部網路可連上負載平衡器前端。
- 在外部網路中,更新 DNS 以指向負載平衡器轉送規則。
讓網際網路可連線至應用程式
這個部分為選用。
這項設計假設您只希望從外部網路連線至服務,但您也可以讓服務可從網際網路連線。
如要讓網際網路可連上服務,請完成下列步驟:
- 建立區域性外部應用程式負載平衡器,指向內部負載平衡器所指的後端。完成選用步驟,設定 Cloud Armor 安全性政策。
- 更新 VPC Service Controls,允許服務客戶存取後端服務。
後續步驟
- 瞭解分散式應用程式的 Cross-Cloud Network。
- 瞭解如何在 Cloud Run 上代管 AI 應用程式和代理程式。
- 瞭解負責任的 AI 最佳做法和 Vertex AI 安全篩選器。
- 瞭解大型語言模型 (LLM) 的最佳做法。
- 如要瞭解適用於 Google CloudAI 和機器學習工作負載的架構原則和建議,請參閱 Well-Architected Framework 中的AI 和機器學習觀點。
- 如要查看更多參考架構、圖表和最佳做法,請瀏覽 Cloud Architecture Center。
貢獻者
作者:
- Deepak Michael | 網路專員客戶工程師
- Mark Schlagenhauf | 網路技術文件撰稿者
其他貢獻者:
- Kumar Dhanagopal | 跨產品解決方案開發人員
- Victor Moreno | 雲端網路產品經理
- Samantha He | 技術文件撰稿者
- Ammett Williams | 開發人員關係工程師
- Aspen Sherrill | 雲端安全架構師