這份文件提供參考架構,協助您在 Google Cloud中設計 GraphRAG 生成式 AI 應用程式的基礎架構。目標對象包括建構及管理智慧資訊檢索系統的架構師、開發人員和管理員。本文假設讀者對 AI、圖形資料管理和知識圖譜概念有基本瞭解。本文並未提供設計及開發 GraphRAG 應用程式的具體指引。
GraphRAG 是以圖表為基礎的檢索增強生成 (RAG) 方法。 RAG 會使用向量搜尋擷取情境相關資料,並將這些資料加入提示,藉此協助 AI 生成的回覆建立基準。GraphRAG 結合向量搜尋和知識圖譜查詢,擷取情境資料, 更貼切地反映不同來源資料的互連性。 使用 GraphRAG 擴充的提示可生成更詳細且相關的 AI 回覆。
架構
下圖顯示 Google Cloud中支援 GraphRAG 的生成式 AI 應用程式架構:
上圖中的架構包含兩個子系統:資料擷取和服務。以下各節說明子系統的用途,以及子系統內和子系統之間的資料流程。
資料擷取子系統
資料擷取子系統會從外部來源擷取資料,然後準備 GraphRAG 適用的資料。資料擷取和準備流程包含下列步驟:
- 資料會擷取至 Cloud Storage bucket。 這類資料可由資料分析師上傳、從資料庫擷取,或從任何來源串流。
- 擷取資料時,系統會將訊息傳送至 Pub/Sub 主題。
- Pub/Sub 會觸發 Cloud Run 函式來處理上傳的資料。
- Cloud Run 函式會使用 Vertex AI 中的 Gemini API 和 LangChain 的
LLMGraphTransformer
等工具,從輸入檔案建構知識圖譜。 - 這個函式會將知識圖譜儲存在 Spanner Graph 資料庫中。
- 這項函式會使用 LangChain 的
RecursiveCharacterTextSplitter
或 Document AI 的 Layout Parser 等工具,將資料檔案的文字內容細分成細微單元。 - 這個函式會使用 Vertex AI Embeddings API,建立文字片段的向量嵌入。
- 這個函式會將向量嵌入和相關聯的圖形節點儲存在 Spanner Graph 中。
向量嵌入是語意檢索的基礎。知識圖形節點可讓您遍歷及分析複雜的資料關係和模式。
服務子系統
服務子系統會管理生成式 AI 應用程式與使用者之間的查詢/回覆生命週期。放送流程包含下列步驟:
- 使用者向部署在 Vertex AI Agent Engine 的 AI 代理程式提交自然語言查詢。
- 代理程式會依下列方式處理查詢:
- 使用 Vertex AI Embeddings API 將查詢轉換為向量嵌入。
- 在嵌入資料庫中執行向量相似度搜尋,擷取與查詢相關的圖形節點。
- 透過周遊知識圖表,擷取與查詢相關的資料。
- 將原始查詢與擷取的圖表資料合併,藉此擴增提示。
- 使用 AI 應用程式排名 API 對結果進行排名,結果包含從圖形資料庫擷取的節點和邊緣。排名依據是與查詢的語意關聯性。
- 呼叫 Gemini API Vertex AI 彙整結果。
- 接著,服務專員會將摘要結果傳送給使用者。
您可以在 Cloud Logging 中儲存及查看查詢/回應活動記錄,並使用 Cloud Monitoring 設定以記錄為準的監控功能。
使用的產品
這項參考架構使用下列 Google 產品和工具:
- Spanner Graph:圖形資料庫,提供 Spanner 的擴充性、可用性和一致性功能。
- Vertex AI:機器學習平台,可讓您訓練及部署機器學習模型和 AI 應用程式,並自訂 LLM 用於 AI 輔助的應用程式。
- Cloud Run 函式:無伺服器運算平台,可讓您直接在 Google Cloud中執行單一用途函式。
- Cloud Storage:適用於多種資料類型的物件儲存庫,成本低廉且沒有限制。 資料在 Google Cloud 內外都能存取,且會複製到多個位置,以便提供備援機制。 Google Cloud
- Pub/Sub:可擴充的非同步訊息服務,會分離產生訊息的服務與處理訊息的服務。
- Cloud Logging:即時記錄管理系統,提供儲存、搜尋、分析和快訊功能。
- Cloud Monitoring:這項服務可讓您掌握應用程式和基礎架構的效能、可用性和健康狀態。
用途
GraphRAG 可協助各種產業的應用情境智慧檢索資料。本節將說明醫療保健、金融、法律服務和製造業的幾個使用案例。
醫療保健和藥品:臨床決策支援
在臨床決策輔助系統中,GraphRAG 會將大量資料整合至統一的知識圖譜,包括醫學文獻、病患電子健康記錄、藥物交互作用資料庫和臨床試驗結果。當臨床醫師和研究人員查詢病患的症狀和目前用藥時,GraphRAG 會遍歷知識圖譜,找出相關病況和潛在的藥物交互作用。此外,AI 也能根據病患的基因特徵等其他資料,生成個人化治療建議。這類資訊檢索方式提供的答案比關鍵字比對更符合情境,且有證據佐證。
金融服務:整合財務資料
金融服務公司會使用知識圖譜,為分析師提供來自不同來源 (例如分析師報告、收益電話會議和風險評估) 的統一結構化資料檢視畫面。知識圖譜會找出公司和主管等重要資料實體,並對應實體間的重要關係。這種做法可提供豐富且相互連結的資料網路,進而實現更深入且更有效率的財務分析。分析師可以發掘先前隱藏的洞察資料,例如複雜的供應鏈依附關係、競爭對手之間重疊的董事會成員,以及面臨複雜地緣政治風險的程度。
法律服務:案件研究和先例分析
在法律領域,GraphRAG 可根據判例、法規、案例法、法規更新和內部文件,生成個人化的法律建議。律師在準備案件時,可以針對特定法律論點、類似案件的先前裁決,或新法規的影響提出細微的問題。GraphRAG 會運用現有法律知識的互連性,找出相關先例並說明其適用性。此外,這項工具還會追蹤法律概念、法規和司法解釋之間的關係,藉此提出反駁論點。相較於傳統的知識檢索方法,法律專業人士可透過這項技術獲得更深入且精確的洞察資料。
製造業和供應鏈:解鎖機構知識
製造和供應鏈作業需要高度精確。 為維持必要精確度而需具備的知識,往往埋藏在成千上萬份密密麻麻的靜態標準作業程序 (SOP) 文件中。工廠的生產線或機器發生故障,或是出現物流問題時,工程師和技術人員往往會浪費寶貴的時間,在不相干的 PDF 文件中搜尋,以診斷及排解問題。結合知識圖譜和對話式 AI,將深埋的機構知識轉化為互動式診斷夥伴。
設計替代方案
本文說明的架構是模組化架構,您可以視需求調整架構的特定元件,改用其他產品、工具和技術。
建構知識圖譜
您可以使用 LangChain 的 LLMGraphTransformer
工具從頭建構知識圖譜。使用 LLMGraphTransformer
參數 (例如 allowed_nodes
、allowed_relationships
、node_properties
和 relationship_properties
) 指定圖表結構定義,有助於提升產生的知識圖表品質。不過,LLMGraphTransformer
可能會從一般網域擷取實體,因此可能不適合醫療保健或製藥等利基網域。此外,如果貴機構已建立完善的知識圖譜建構程序,則可選擇是否採用這份參考架構中顯示的資料擷取子系統。
儲存知識圖譜和向量嵌入項目
本文中的架構使用 Spanner 做為知識圖表和向量嵌入的資料儲存庫。如果您的企業知識圖表已存在於其他位置 (例如 Neo4j 等平台),則可以考慮使用向量資料庫來儲存嵌入內容。不過,這種做法需要額外的管理工作,而且可能需要更多費用。Spanner 提供整合式資料存放區,可確保圖形結構和向量嵌入內容在全球各地保持一致。這類資料儲存區可實現統一資料管理,有助於最佳化成本、效能、安全控管和作業效率。
代理程式執行階段
在這個參考架構中,代理程式部署在 Vertex AI Agent Engine 上,後者提供 AI 代理程式的代管執行階段。您也可以考慮使用 Cloud Run 和 Google Kubernetes Engine (GKE)。這些選項不在本文的討論範圍內。
使用 RAG 建立基準
如「用途」一節所述,GraphRAG 可在許多情境中,智慧擷取資料做為基礎。不過,如果用於擴增提示的來源資料沒有複雜的相互關係,RAG 可能就適合生成式 AI 應用程式。
下列參考架構說明如何使用支援向量的受管理資料庫或專用向量搜尋產品,在 Google Cloud 中建構 RAG 基礎架構:
- 使用 Vertex AI 和 Vector Search 建構具備 RAG 功能的生成式 AI 應用程式基礎架構
- 使用 Vertex AI 和 AlloyDB for PostgreSQL 建構具備 RAG 功能的生成式 AI 應用程式基礎架構
- 使用 GKE 和 Cloud SQL 建構具備 RAG 功能的生成式 AI 應用程式基礎架構
設計須知
本節說明設計因素、最佳做法和建議,供您參考這些資訊,使用這個參考架構開發拓撲,滿足安全性、可靠性、成本和效能方面的特定需求。
本節的指引僅列出部分示例。視工作負載的需求和您使用的 Google Cloud 和第三方產品與功能而定,您可能還需要考慮其他設計因素和取捨。
安全性、隱私權和法規遵循
本節說明設計考量事項和建議,協助您在 Google Cloud 中設計拓撲,以符合工作負載的安全性和法規遵循需求。
產品 | 設計注意事項和建議 |
---|---|
Vertex AI | Vertex AI 支援 Google Cloud 安全防護 Google Cloud 控制項,可協助您滿足資料駐留、資料加密、網路安全和存取透明度方面的需求。詳情請參閱下列說明文件: 生成式 AI 模型可能會生成有害回覆,尤其是在明確提示生成這類回覆時。為提升安全性及減少潛在的濫用行為,您可以設定內容篩選器,防止模型產生有害的回覆。詳情請參閱「安全與內容篩選器」。 |
Spanner Graph | 根據預設,儲存在 Spanner 圖表中的資料會使用 Google-owned and Google-managed encryption keys加密。如要使用您控管及管理的加密金鑰,可以改用客戶自行管理的加密金鑰 (CMEK)。詳情請參閱「關於 CMEK」。 |
Cloud Run 函式 | 根據預設,Cloud Run 會使用 Google-owned and Google-managed encryption keys加密資料。如要使用您控管的金鑰保護容器,可以採用 CMEK。詳情請參閱「使用客戶管理的加密金鑰」。 如要確保只有授權的容器映像檔會部署至 Cloud Run,可以使用二進位授權。 Cloud Run 可協助您符合資料落地規定。Cloud Run 函式會在選取的區域中執行。 |
Cloud Storage |
根據預設,儲存在 Cloud Storage 中的資料會使用 Google-owned and Google-managed encryption keys加密。如有需要,您可以使用 CMEK 或自己的金鑰,並透過外部管理方法 (例如客戶提供的加密金鑰 (CSEK)) 管理金鑰。詳情請參閱「資料加密選項」。 Cloud Storage 支援兩種方法,可授予使用者存取值區和物件的權限:身分與存取權管理 (IAM) 和存取控制清單 (ACL)。在大多數情況下,我們建議使用 IAM,因為您可以在 bucket 和專案層級授予權限。詳情請參閱「存取權控管總覽」。 透過 Cloud Storage 載入資料擷取子系統的資料可能包含機密資料。您可以使用 Sensitive Data Protection 服務,探索、分類及去識別化機密資料。詳情請參閱「搭配 Cloud Storage 使用 Sensitive Data Protection」。 Cloud Storage 可協助您滿足資料落地需求。資料會儲存或複製到您指定的區域。 |
Pub/Sub | 根據預設,Pub/Sub 會使用 Google-owned and Google-managed encryption keys加密所有訊息,包括靜態和傳輸中的訊息。Pub/Sub 支援使用 CMEK 在應用程式層加密訊息。詳情請參閱「設定訊息加密」。 如有資料落地規定,為確保訊息資料儲存在特定位置,您可以設定訊息儲存政策。 |
Cloud Logging | 根據預設,這個參考架構中使用的所有 Google Cloud 服務都會啟用管理員活動稽核記錄。這類記錄會記錄 API 呼叫,或是修改設定或資源中繼資料的其他動作。Google Cloud 針對此架構中使用的 Google Cloud 服務,您可以啟用資料存取稽核記錄。您可以透過這些記錄追蹤 API 呼叫,瞭解資源的設定或中繼資料,以及使用者建立、修改或讀取使用者提供資源資料的要求。 為協助符合資料落地規定,您可以設定 Cloud Logging,將記錄資料儲存在您指定的區域。詳情請參閱「將記錄區域化」。 |
如要瞭解 AI 和機器學習工作負載專用的安全原則和建議,請參閱 Google Cloud 架構完善架構中的「AI 和機器學習觀點:安全性」。
可靠性
本節說明設計注意事項和建議,協助您在 Google Cloud中建構及運作可靠的部署基礎架構。
產品 | 設計注意事項和建議 |
---|---|
Vertex AI | Vertex AI 支援 Gemini 模型的動態共用配額 (DSQ)。DSQ 可協助您彈性管理隨用隨付要求,不必手動管理配額或要求增加配額。DSQ 會在有效客戶之間,動態分配特定模型和區域的可用資源。使用 DSQ 時,個別客戶沒有預先定義的配額限制。 如果要求次數超過分配的容量,系統會傳回錯誤碼 429。對於業務關鍵且持續需要高輸送量的作業負載,您可以使用「佈建輸送量」預留輸送量。如果資料可跨多個區域或國家/地區共用,則可使用全域端點。 |
Spanner Graph | Spanner 的設計宗旨是提供高資料可用性和全球擴充性。為確保即使發生區域性中斷事件,服務仍能維持可用性,Spanner 提供多區域設定,可在多個區域的多個可用區中複製資料。除了這些內建的復原功能外,Spanner 還提供下列功能,協助您制定完善的災難復原策略:
詳情請參閱「災難復原總覽」。 |
Cloud Run 函式 | Cloud Run 是地區性服務。資料會同步儲存在區域內的多個可用區。系統會自動在可用區之間進行負載平衡。如果發生區域中斷,Cloud Run 會繼續執行,資料也不會遺失。如果發生區域性服務中斷,服務會停止運作,直到 Google 解決中斷問題為止。 |
Cloud Storage | 您可以建立三種位置類型的 Cloud Storage 值區:單一地區、雙區域或多地區。儲存在單一地區值區中的資料,會同步複製到該區域內的多個可用區。如要提高可用性,可以使用雙區域或多區域值區,資料會以非同步方式在區域間複製。 |
Pub/Sub | 為避免在訊息流量暫時暴增期間發生錯誤,您可以在發布者設定中設定流量控制,限制發布要求率。 如要處理發布失敗的情況,請視需要調整重試要求變數。詳情請參閱「重試要求」。 |
本架構中的所有產品 | 在 Google Cloud中部署工作負載後,請使用 Active Assist 取得建議,進一步提升雲端資源的可靠性。查看建議,並視環境需要套用。詳情請參閱「在建議中心查看建議」。 |
如要瞭解 AI 和機器學習工作負載的可靠性原則和建議,請參閱 Well-Architected Framework 中的「AI 和機器學習觀點:可靠性」。
成本最佳化
本節提供指引,說明如何盡量降低設定及運作 Google Cloud 拓撲的成本,而該拓撲是您使用這項參考架構所建構。
產品 | 設計注意事項和建議 |
---|---|
Vertex AI | 如要分析及管理 Vertex AI 費用,建議您建立每秒查詢次數 (QPS) 和每秒權杖數 (TPS) 的基準,並在部署後監控這些指標。基準也有助於規劃容量。舉例來說,您可以根據基準判斷何時需要佈建處理量。 為生成式 AI 應用程式選取合適的模型 是重要決策,會直接影響成本和效能。如要找出最適合特定用途的模型,請反覆測試模型,在效能和費用之間取得最佳平衡。建議您先從最具成本效益的模型開始,然後逐步改用更強大的選項。 提示 (輸入) 和生成的內容 (輸出) 長度會直接影響效能和費用。撰寫簡短、直接且提供足夠背景資訊的提示。設計提示,讓模型提供簡潔的回覆。例如「用 2 句話歸納重點」或「列出 3 個重點」。詳情請參閱提示設計最佳做法。 如要降低含重複內容且輸入詞元較多的要求成本,請使用脈絡快取。 視情況考慮使用批次預測。批次要求的費用比標準要求低。 |
Spanner Graph | 使用代管自動調度器,根據 CPU 使用率和儲存空間需求,動態調整 Spanner 圖形資料庫的運算容量。即使是小型工作負載,通常也需要最低容量。 如要預測、穩定或基準運算容量,請購買承諾使用折扣 (CUD)。 只要承諾每小時的運算能力支出達到一定金額,即可享有大幅折扣。 將備份項目複製到不同區域以進行災難復原或符合法規時,請考慮網路輸出費用。為協助降低成本,請只複製重要備份。 |
Cloud Run 函式 | 建立 Cloud Run 函式時,您可以指定要分配的記憶體和 CPU 數量。為控管成本,請從預設 (最低) CPU 和記憶體配置開始。如要提升效能,可以設定 CPU 上限和記憶體上限,增加分配量。詳情請參閱下列文件: 如果您可以預測 CPU 和記憶體需求,就能透過承諾使用折扣省下費用。 |
Cloud Storage | 在資料擷取子系統中,請根據工作負載的資料保留和存取頻率需求,為 Cloud Storage 值區選擇合適的儲存空間級別。舉例來說,如要控管儲存空間費用,您可以選擇 Standard 級別,並使用 物件生命週期管理。這種做法可讓系統根據指定條件,自動將物件降級至費用較低的儲存空間級別,或自動刪除物件。 |
Cloud Logging | 如要控管記錄檔的儲存費用,請採取下列做法: |
本架構中的所有產品 | 在 Google Cloud中部署工作負載後,請使用 Active Assist 取得建議,進一步節省雲端資源費用。查看建議,並視環境需要套用。詳情請參閱「在建議中心查看建議」。 |
如要估算 Google Cloud 資源的費用,請使用 Google Cloud Pricing Calculator。
如要瞭解 AI 和機器學習工作負載專用的成本最佳化原則和建議,請參閱 Well-Architected 架構中的「AI 和機器學習觀點:成本最佳化」。
效能最佳化
本節說明設計拓撲時的考量事項和建議,以符合工作負載的效能需求。 Google Cloud
產品 | 設計注意事項和建議 |
---|---|
Vertex AI |
為生成式 AI 應用程式選取合適的模型 是重要決策,會直接影響成本和效能。如要找出最適合特定用途的模型,請反覆測試模型,在效能和費用之間取得最佳平衡。建議您先從最具成本效益的模型開始,然後逐步改用更強大的選項。 提示 (輸入) 和生成的內容 (輸出) 長度會直接影響效能和費用。撰寫簡短、直接且提供足夠背景資訊的提示。設計提示,讓模型提供簡潔的回覆。例如「用 2 句話歸納重點」或「列出 3 個重點」。詳情請參閱提示設計最佳做法。 Vertex AI 提示最佳化工具可讓您大規模快速改善及最佳化提示成效,不必手動重寫提示。最佳化工具可協助您有效調整不同模型的提示。 |
Spanner Graph | 如需最佳化 Spanner 圖表效能的建議,請參閱下列文件: |
Cloud Run 函式 | 根據預設,每個 Cloud Run 函式執行個體都會分配到一個 CPU 和 256 MiB 的記憶體。您可以根據效能需求設定 CPU 和記憶體上限。詳情請參閱下列說明文件: 如需更多效能最佳化指南,請參閱一般 Cloud Run 開發提示。 |
Cloud Storage | 如要上傳大型檔案,可以使用平行複合式上傳。 採用這項策略時,系統會將大型檔案分割成多個區塊。這些區塊會平行上傳至 Cloud Storage,然後在雲端重組資料。如果網路頻寬和磁碟速度不是限制因素,平行複合上傳作業的速度可能會比一般上傳作業更快。不過,這項策略有一些限制,且會影響成本。詳情請參閱「平行複合式上傳」。 |
本架構中的所有產品 | 在 Google Cloud中部署工作負載後,請使用 Active Assist 取得建議,進一步提升雲端資源的效能。查看建議,並視環境需要套用。詳情請參閱「在建議中心查看建議」。 |
如需 AI 和機器學習工作負載的效能最佳化原則和建議,請參閱 Well-Architected 架構中的「AI 和機器學習觀點:效能最佳化」。
部署作業
如要瞭解 GraphRAG 的運作方式,請從 GitHub 下載並執行下列 Jupyter 筆記本: 透過 Spanner Graph 和 Vertex AI Agent Engine 執行 GraphRAG。 Google CloudGoogle Cloud
後續步驟
- 使用 Spanner Graph 和 LangChain 建構 GraphRAG 應用程式。
- 為生成式 AI 應用程式選擇模型和基礎架構。
- 設計支援 RAG 的生成式 AI 應用程式基礎架構:
- 如要瞭解 AI 工作負載的架構原則和建議,請參閱 Google Cloud架構完善架構:AI 和機器學習觀點。
- 如需更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。
貢獻者
作者:
- Tristan Li | AI/機器學習首席架構師
- Kumar Dhanagopal | 跨產品解決方案開發人員
其他貢獻者:
- Ahsif Sheikh | AI 客戶工程師
- Ashish Chauhan | AI 客戶工程師
- Greg Brosman | 產品經理
- Lukas Bruderer | Cloud AI 產品經理
- Nanditha Embar | AI 客戶工程師
- Piyush Mathur | Spanner 產品經理
- Smitha Venkat | AI 客戶工程師