為資料庫和應用程式設計 OCI Generative AI 支援的 SQL 代理程式
此參照架構簡要說明設計用來促進與 Oracle Database 自然語言 (NL) 互動的 SQL 代理程式。
此代理程式建立在 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Infrastructure Generative AI ( OCI Generative AI) 模型上,可讓使用者透過強大且可擴展的系統執行文字至 SQL 查詢、資料分析和報告,這些系統旨在處理數百個表格的綱要。
SQL 代理程式也可以透過擷取擴增產生 (RAG) 整合至更一般的架構,讓使用者能夠結合結構化和非結構化資料的分析。
架構
此解決方案的核心由一組 Python 元件組成,這些元件以 Python 適用的 Oracle Cloud Infrastructure SDK 和開放原始碼程式庫 LangChain 為基礎:
- 路由器:識別要求類型 (SQL 產生和資料擷取或資料分析),並將它導向適當的處理管線。元件是以具有特殊提示的 LLM 為基礎。
- 綱要管理程式:管理與資料庫綱要相關的所有描述資料。它在為每個 NL 要求提供要用於 SQL 產生和所有相關中繼資料的表格清單 (受限結構) 時扮演重要角色。它利用資料庫中的 23ai 資料庫和語意搜尋來尋找與使用者 NL 要求相關的表格。
- SQL 產生器:將 NL 要求轉譯為連線之「資料」資料庫上的可執行 SQL 敘述句。它使用一組 LLM 模型來提升準確性並提高正確產生 SQL 陳述式的成功率。LLM 模型由 OCI Generative AI 服務提供。
- SQL 快取:儲存最常發生之要求的 NL 指示 (及其 SQL 等效項目)。
- SQL 執行程式:啟用所產生 SQL 敘述句的語法驗證,並執行指示。
- AI 資料分析器:分析儲存的對話資料,以產生分析要求或報表產生的回應。
下圖說明邏輯架構。
oci-genai-sql-agent-logical.png 圖解描述
oci-genai-sql-agent-logical-oracle.zip 語言
此解決方案的獨特功能是其對資料庫綱要的彈性管理,由 Vector Search 和 Generative AI 提供支援。
在設定期間,會使用「大型語言模型 (LLM)」為每個資料庫表格產生完整的摘要。此摘要包括表格結構描述、相關業務查詢和範例資料。摘要會與 OCI Generative AI Embedding 模型建立的內嵌向量一併儲存在 23ai 資料庫中。
當使用者提交查詢時,語意搜尋會識別用於查詢組合的候選表格,而重新排名機制會縮小此清單以確保最佳結果。
「SQL 代理程式」會管理與使用者的對話歷史記錄。透過 conversation_id 連結的交換訊息是使用 Oracle Cloud Infrastructure Cache with Redis ( OCI Cache with Redis) 儲存。
「SQL 代理程式」是透過 REST API 公開、符合 Open-API 規範,並且使用 FastAPI 程式庫實行。此 REST API 可連線至任何使用者介面 (圖表建議 Oracle Digital Assistant、使用 Oracle APEX 建立的 UI 或一般 Web UI)。
與 Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service 整合,以收集各種 OCI 元件的使用量統計和回應時間,是根據探索更多區段中使用 Oracle Cloud 增強 RAG 解決方案的可觀察性 (部落格) 連結中的說明。
下圖說明實體架構,以及所有相關的 OCI 服務。
oci-genai-sql-agent-arch-oracle.zip
架構具有下列元件:
- OCI Generative AI 嵌入模型
將文字轉換為向量內嵌項目,以在應用程式中用於語意搜尋、文字分類或文字分群。OCI Generative AI 內嵌模型會根據您選取的內嵌模型,將您輸入的每個詞組、句子或段落轉換為具有 384 (輕量型) 或 1024 個數字的陣列。
您可以使用這些內嵌來尋找與相關資訊環境或類別中相似之詞組的相似性。內嵌通常儲存在向量資料庫中。內嵌主要用於語意搜尋,其中搜尋函數著重於其所搜尋文字的意義,而非根據關鍵字尋找結果。
- OCI 生成式 AI 交談模型
透過 AI 聊天介面提出問題並取得對話回應。提示 OCI Generative AI 聊天模型產生文字。您可以以自然語言提出問題,並選擇性地將文件、電子郵件和產品評論等文字提交給交談模型,以及文字上的每個模型原因,並提供智慧型解答。對於某些模型,您可以提交影像並詢問有關影像的問題。交談模型會保留先前提示的內容,您可以繼續交談並提出後續問題。
- 應用程式效能監督
Oracle Cloud Infrastructure Application Performance Monitoring 可讓您深入瞭解應用程式的效能,並提供快速診斷問題的能力,以提供一致的服務水準。這包括監控分散在用戶端、第三方服務和後端運算層、內部部署或雲端中的多個元件和應用程式邏輯。
- APEX 服務
Oracle APEX 是低程式碼開發平台,可讓您建立可擴充、功能豐富、安全的企業 App,而且可以在安裝 Oracle Database 的任何位置部署。您不需要是各種技術的專家,就能提供精密的解決方案。Oracle APEX 包含內建功能,例如使用者介面主題、瀏覽控制項、表單處理程式,以及可加速應用程式開發程序的彈性報表。
- API 閘道
Oracle Cloud Infrastructure API Gateway 可讓您發布內含可從您網路存取之專用端點的 API,並視需要向公用網際網路公開。端點支援 API 驗證、要求和回應轉換、CORS、驗證和授權以及要求限制。
- 自治式資料倉儲
Oracle Autonomous Data Warehouse 是一項自主驅動、自主防護、自主修復的資料庫服務,已針對資料倉儲工作負載最佳化。您不需要設定或管理任何硬體,也不需要安裝任何軟體。Oracle Cloud Infrastructure 負責建立資料庫,以及備份、修補、升級和調整資料庫。
- 使用 Redis 的快取
Oracle Cloud Infrastructure Cache with Redis 是一個全面的託管記憶體快取解決方案,建立在開源 Redis 的基礎上。此完全受管理的服務可加速資料讀取和寫入,大幅提升應用程式回應時間和資料庫效能,以改善客戶體驗。
- 計算
透過 Oracle Cloud Infrastructure Compute ,您可以在雲端中佈建及管理運算主機。您可以使用資源配置啟動運算執行處理,以滿足 CPU、記憶體、網路頻寬及儲存的資源需求。建立運算執行處理之後,您可以安全地存取、重新啟動、連附及取消連附磁碟區,以及在不再需要時將其終止。
建議
- 資料庫存取
應實作此解決方案,以僅啟用資料庫中資料的「唯讀」存取權。即使有可能的話,在提示中指示禁止 DDL 和 DML 指示,為了確保額外的安全性,應該使用 READ ONLY 資料庫使用者來完成「資料」資料庫的連線。
- 安全
使用 Oracle Cloud Guard ,主動監控和維護 OCI 中資源的安全性。Oracle Cloud Guard 使用偵測器處方來檢查資源是否有安全漏洞,以及監控操作員和使用者的風險活動。偵測到任何組態錯誤或不安全活動時,Oracle Cloud Guard 會根據您可定義的回應器處方建議更正動作,並協助採取這些動作。
對於需要最高安全性資源,Oracle 建議您使用安全區域。安全區域是與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰來加密。當您在安全區域中建立及更新資源時,OCI 會根據安全區域處方中的原則驗證作業,並拒絕違反任何原則的作業。
- 雲端保全
複製及自訂 Oracle 提供的預設處方,以建立自訂偵測器和回應器處方。這些處方可讓您指定產生警告的安全性違規類型,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用物件儲存的儲存桶。
在租用戶層級套用 Cloud Guard,以涵蓋最廣泛的範圍,並降低維護多個組態的管理負擔。
您也可以使用「受管理清單」功能,將特定組態套用至偵測器。
- 安全區域
對於需要最高安全性資源,Oracle 建議您使用安全區域。安全區域是與以最佳做法為基礎之 Oracle 定義的安全原則處方關聯的區間。例如,安全區域中的資源不得從公用網際網路存取,且必須使用客戶管理的金鑰來加密。當您在安全區域中建立及更新資源時,Oracle Cloud Infrastructure 會根據安全區域處方中的原則驗證作業,並拒絕違反任何原則的作業。
- 網路安全群組 (NSG)
您可以使用 NSG 定義一組適用於特定 VNIC 的傳入和傳出規則。建議您使用 NSG 而非安全列表,因為 NSG 可讓您將 VCN 的子網路架構和應用程式的安全需求分開。
注意事項
計畫在 OCI 上執行此解決方案時,請考量下列安全詳細資訊。
- 安全
在實際執行設定中,應將「SQL 代理程式」的所有元件建置在專用網路中。
只能透過 OCI API 閘道提供 REST API 的存取。負載平衡器旨在實現在多個 VM 上部署所有 Python 元件,以實現更高的可靠性和延展性。
若要存取 OCI Generative AI 服務,必須正確設定 OCI Generative AI 政策。