データベースおよびアプリケーション用のOCI生成AI搭載SQLエージェントの設計

このリファレンス・アーキテクチャでは、Oracle Databaseとの自然言語(NL)の相互作用を容易にするために設計されたSQLエージェントの概要を示します。

このエージェントは、Oracle Cloud Infrastructure (OCI)およびOracle Cloud Infrastructure Generative AI (OCI Generative AI)モデルに基づいて構築されており、ユーザーは数百の表を含むスキーマを処理するように設計された堅牢でスケーラブルなシステムを介して、テキストからSQLへの問合せ、データ分析およびレポートを実行できます。

SQLエージェントは、Retrieval Augmented Generation (RAG)を使用してより一般的なアーキテクチャに統合することもできます。これにより、ユーザーは構造化データと非構造化データの分析を組み合せることができます。

アーキテクチャ

ソリューションの中核は、Oracle Cloud Infrastructure SDK for Pythonおよびオープンソース・ライブラリLangChainに基づく一連のPythonコンポーネントで構成されます:

  • ルーター: リクエスト・タイプ(SQL生成およびデータ取得またはデータ分析)を識別し、適切な処理パイプラインに転送します。コンポーネントは、特殊なプロンプトを持つLLMに基づいています。
  • スキーマ・マネージャ: データベース・スキーマに関連するすべてのメタデータを管理します。これは、NLリクエストごとに、SQL生成および関連するすべてのメタデータに使用される表のリスト(制限付きスキーマ)を提供する上で重要な役割を果たします。データベース内の23aiデータベースおよびセマンティク検索を利用して、ユーザーNLリクエストに関連する表を検索します。
  • SQLジェネレータ: NLリクエストを、接続されたデータ・データベース上の実行可能SQL文に変換します。LLMモデルのアンサンブルを使用して、正確性を高め、正しく生成されたSQL文の成功率を高めます。LLMモデルは、OCI生成AIサービスによって提供されます。
  • SQLキャッシュ: 最も頻度の高いリクエストのNL命令(およびそれに相当するSQL命令)を格納します。
  • SQLエグゼキュータ: 生成されたSQL文の構文検証を有効にし、指示を実行します。
  • AIデータ・アナライザ: 格納された会話データを分析して、分析リクエストまたはレポート生成のレスポンスを生成します。

次の図は、論理アーキテクチャを示しています。


oci-genai-sql-agent-logical.pngの説明が続きます
図oci-genai-sql-agent-logical.pngの説明

oci-genai-sql-agent-logical-oracle.zip

このソリューションの特徴は、Vector Searchおよび生成AIを活用したデータベース・スキーマの柔軟な管理です。

設定時に、Large Language Model (LLM)を使用して、データベース表ごとに包括的なサマリーが生成されます。このサマリーには、表スキーマ、関連するビジネス問合せおよびサンプル・データが含まれます。サマリーは、OCI生成AI埋込みモデルによって作成された埋込みベクトルとともに、23aiデータベースに格納されます。

ユーザーが問合せを送信すると、セマンティック検索によって問合せ構成用の候補表が識別され、再ランク付けメカニズムによって、最適な結果が得られるようにこのリストが絞り込まれます。

SQLエージェントは、ユーザーとの会話履歴を管理します。The exchanged messages, linked via a conversation_id, are stored using the 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が示されています)。

様々なOCIコンポーネントの使用状況統計およびレスポンス時間を収集するためのOracle Cloud Infrastructure Application Performance Monitoring Cloud Serviceとの統合は、「詳細」セクションの「Oracle Cloudを使用したRAGソリューションの可観測性の向上(ブログ)」リンクに記載されているアプローチに基づいています。

次の図は、すべてのOCIサービスに関連する物理アーキテクチャを示しています。



oci-genai-sql-agent-arch-oracle.zip

このアーキテクチャには、次のコンポーネントがあります。

  • OCI生成AI モデルの埋込み

    セマンティック検索、テキスト分類またはテキスト・クラスタリングにアプリケーションで使用するために、テキストをベクトル埋込みに変換します。OCI生成AI埋込みモデルは、選択した埋込みモデルに応じて、入力した各フレーズ、文または段落を384 (ライト・モデル)または1024個の数値を持つ配列に変換します。

    これらの埋込みを使用して、コンテキストまたはカテゴリが類似したフレーズでの類似性を検索できます。埋込みは、通常、ベクトル・データベースに格納されます。埋込みは、キーワードに基づいて結果を検索するのではなく、検索機能が検索するテキストの意味に重点を置いたセマンティック検索に使用されます。

  • OCI生成AI チャット・モデル

    AIチャット・インタフェースを使用して質問し、会話型レスポンスを取得します。OCI生成AIチャット・モデルにテキストを生成するように促します。自然言語で質問したり、必要に応じて、ドキュメント、Eメール、製品レビューなどのテキストをチャット・モデルに送信したり、各モデルの理由をテキストで送信したり、インテリジェントな回答を提供したりできます。一部のモデルでは、イメージを送信し、イメージに関する質問をすることができます。チャット・モデルは、以前のプロンプトのコンテキストを維持し、フォローアップ質問でチャットを続行できます。

  • Application Performance Monitoring

    Oracle Cloud InfrastructureのApplication Performance Monitoringを使用すると、アプリケーションのパフォーマンスを詳細に把握し、一貫したレベルのサービスを提供するために問題を迅速に診断できます。これには、オンプレミスまたはクラウドのクライアント、サードパーティ・サービス、バックエンド・コンピューティング層にわたる複数のコンポーネントおよびアプリケーション・ロジックのモニタリングが含まれます。

  • APEXサービス

    Oracle APEXは、Oracle Databaseがインストールされている任意の場所にデプロイできる、スケーラブルで機能豊富なセキュアなエンタープライズ・アプリケーションを構築できるロー・コード開発プラットフォームです。高度なソリューションを提供するために、幅広いテクノロジーの専門家である必要はありません。Oracle APEXには、ユーザー・インタフェース・テーマ、ナビゲーション・コントロール、フォーム・ハンドラ、アプリケーション開発プロセスを短縮する柔軟なレポートなどの組込み機能が含まれています。

  • APIゲートウェイ

    Oracle Cloud Infrastructure API Gatewayでは、ネットワーク内からアクセスでき、必要に応じてパブリック・インターネットに公開できるプライベート・エンドポイントを含むAPIを公開できます。エンドポイントは、API検証、リクエストとレスポンスの変換、CORS、認証と認可およびリクエスト制限をサポートします。

  • Autonomous Data Warehouse

    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が提供するデフォルトのレシピをクローニングおよびカスタマイズして、カスタム・ディテクタおよびレスポンダ・レシピを作成します。これらのレシピを使用すると、警告を生成するセキュリティ違反のタイプ、およびそれらに対して実行を許可するアクションを指定できます。たとえば、可視性がpublicに設定されているオブジェクト・ストレージ・バケットを検出できます。

    クラウド・ガードをテナンシ・レベルで適用して、最も広い範囲をカバーし、複数の構成を維持する管理上の負担を軽減します。

    管理対象リスト機能を使用して、特定の構成をディテクタに適用することもできます。

  • セキュリティ・ゾーン

    最大限のセキュリティーを必要とするリソースの場合、Oracleではセキュリティーゾーンを使用することをお勧めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーン内のリソースにパブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、その操作がセキュリティ・ゾーン・レシピのポリシーに対して検証され、ポリシーに違反する操作が拒否されます。

  • ネットワーク・セキュリティ・グループ(NSG)

    NSGを使用して、特定のVNICに適用されるイングレスおよびエグレス・ルールのセットを定義できます。NSGでは、VCNのサブネット・アーキテクチャをアプリケーションのセキュリティ要件から分離できるため、セキュリティ・リストではなくNSGを使用することをお薦めします。

考慮事項

このソリューションをOCIで実行する場合は、次のセキュリティの詳細を考慮してください。

  • セキュリティ

    本番設定では、SQLエージェントのすべてのコンポーネントをプライベート・ネットワークにデプロイする必要があります。

    REST APIへのアクセスは、OCI API Gatewayを介してのみ指定する必要があります。ロード・バランサは、すべてのPythonコンポーネントを複数のVMにデプロイして、より高い信頼性とスケーラビリティを実現できるように設計されています。

    OCI生成AIサービスにアクセスするには、OCI生成AIポリシーの適切な設定が必要です。

確認

  • 作成者: Luigi Saetta
  • コントリビュータ: Alexandru Negrea