OCI Generative AIとSelect AIおよびAPEXの統合による自然言語を使用したデータの問合せ (2024/02/28)

OCI Generative AIとSelect AIおよびAPEXの統合による自然言語を使用したデータの問合せ (2024/02/28)

https://blogs.oracle.com/ateam/post/using-oci-genai-with-select-ai-and-apex-to-query-data-using-natural-language

投稿者: Rekha Mathew | Cloud Solution Architect | A-Team


はじめに



大型言語モデル(LLM)の優れた機能の1つは、データベースの構造化問合せ言語(SQL)を含むコードを生成する機能です。LLMは、自然言語の質問を理解し、対応するSQL問合せを出力として生成できます。


大量のエンタープライズ・データがデータベースに存在し、自然言語でデータベースを問い合せる機能により、ユーザーがデータベースにアクセスしやすくなります。ビジネス・ユーザーとデータ・アナリストは、自然言語のデータについて質問できます。技術ユーザーの場合、問合せの生成に要する時間を短縮し、問合せの作成を簡素化し、特殊なSQL知識を最小化または排除するのに役立ちます。


AIの選択機能により、Autonomous DatabaseはLarge Language Models (LLM)を使用して、ユーザーの入力テキストをOracle SQLに変換できます。


このブログでは、OCI Generative AIモデルとSelect AIを統合し、自然言語プロンプトを使用してAutonomous Databaseに格納されているデータを問い合せる方法について説明します。



アーキテクチャ


次の図は、リファレンス・アーキテクチャを示しています。




コンポーネント


リファレンス・アーキテクチャで使用されるコンポーネントは次のとおりです。


Autonomous Databaseは、データ・ウェアハウス、トランザクション処理、JSON中心のアプリケーション、Oracle APEXロー・コード開発など、アプリケーション・ワークロードを簡単に開発およびデプロイできる、完全に自動化されたデータベース・サービスです。


SELECT AI この機能により、Autonomous DatabaseはLarge Language Models (LLM)を使用して、ユーザーの入力テキストをOracle SQLに変換できます。データベースは、LLMからの幻覚を軽減するために、ユーザー指定のプロンプトをデータベース・メタデータで拡張します。その後、拡張プロンプトがユーザー指定のLLMに送信され、問合せが生成されます。このメタデータには、スキーマ定義、表および列のコメント、およびデータ・ディクショナリおよびカタログから使用可能なコンテンツが含まれる場合があります。


OCI Generative AIは、カスタマイズ可能な大規模言語モデル(LLM)のセットを提供するフルマネージド・サービスであり、執筆支援、要約、分析、チャットなど、幅広いユース・ケースに対応します。


APEXは、Oracle Cloudでアプリケーションを構築およびデプロイするためのフルマネージドのローコード・アプリケーション開発プラットフォームです。



前提条件


  • Oracle Cloud Infrastructureクラウド・アカウント、Autonomous DatabaseインスタンスおよびOCI Generative AIサービスへのアクセス。
  • データベース管理アクセス権があり、Select AIを使用するスキーマにアクセスできます。



ステップ


次に、Select AIをOCI Generative AIサービスと統合するステップを示します。


1.Autonomous DatabaseのDBMS_CLOUD_AIパッケージを使用すると、ユーザー指定のLLMとの統合が可能になります。このパッケージは、OpenAI、Cohere、Azure OpenAI Service、Oracle Cloud Infrastructure Generative AIなどのAIプロバイダと連携します。


最初のステップとして、DBMS_CLOUD_AIパッケージに対するEXECUTE権限をビジネス・データが存在するスキーマに付与します。


次のコマンドをADMINとして実行します。


2.Select AIからOCI Generative AIサービスにアクセスするには、必要なIAMポリシーを設定します。次に例を示します。


3.ADMINユーザーとしてデータベースに接続し、DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHプロシージャを使用してOCIリソース・プリンシパル認証を有効にします。


4.DBMS_CLOUD_AI.CREATE_PROFILEプロシージャを使用して、ビジネス・スキーマに新しいAIプロファイルを作成します。


AIプロファイルの属性は、AIプロファイルの動作を管理および構成するのに役立ちます。属性の完全なリストについては、これを参照してください。


プロバイダ: oci


credential_name: OCI$RESOURCE_PRINCIPAL


object_list: SQLへの自然言語変換に適格な所有者名およびオブジェクト名を指定するJSONオブジェクトの配列です。特定のユーザーのすべてのオブジェクトを含めるには、「name」を省略し、JSONオブジェクトで「owner」キーのみを指定します。


model: 使用されるAIモデルの名前。OCI Generative AIの事前トレーニング済みモデルは、すべてSelect AIでサポートされています。デフォルトはcohere.commandです。カスタム・モデルは、完全なOCIDsとともに提供することもできます。


oci_runtimetype: この属性は、指定されたモデルのランタイム・タイプを示します。この属性は、モデル属性を指定する場合に必要です。


temperature: 温度は、生成されるテキストのランダム性の度合いを調整するために使用されます。温度が低いほど、ランダムな世代が少なくなります。


5.AIの選択コマンドを実行する前に、AIプロファイルを設定します。DBMS_CLOUD_AI.SET_PROFILEプロシージャは、現在のセッションのAIプロファイルを設定します。


6. データベース・セッションのAIプロファイルを設定した後、接頭辞SELECT AIを持つSQL文は自然言語プロンプトとみなされます。SELECT文のAIキーワードは、アクティブなAIプロファイルで識別されたLLMを使用して自然言語を処理し、SQLを生成するようにSQL実行エンジンに指示します。AIキーワードを使用してPL/SQL文、DDL文またはDML文を実行することはできません。


AIプロンプトを実行するための構文は次のとおりです。


アクションには、runql、showql、narrateおよびchatがあります。


runql:自然言語プロンプトを使用して、指定されたSQLコマンドを実行します。これはデフォルトのアクションであり、このパラメータを指定することはオプションです。showqlは、自然言語プロンプトのSQL文を表示します。narrateは、自然言語でのプロンプトの出力を説明します。chatはLLMとの一般的な会話用です。次に、Select AIの使用例を示します。


データベース・アクションまたはAPEXサービスでは、AIの選択はサポートされていません。DBMS_CLOUD_AI.GENERATEファンクションのみを使用できます。




7. プロンプトを実行するためにUIが必要な場合は、Oracle APEXを使用することもできます。


APEXワークスペースで、ページを含むアプリケーションを作成します。


タイプがTextareaのPROMPTというページ・アイテムと、プロンプトを送信するボタンを作成します。



クラシック・レポート・リージョンを作成し、SQL問合せを返すファンクション本体としてタイプを作成します。「汎用列名の使用」プロパティを有効にし、「汎用列数」に列数を入力します。


次のようにPL/SQLファンクション本体を入力します。DBMS_CLOUD_AI.GENERATEは、SELECT AIを使用してSQL問合せを返します。



「レポート」リージョンの「属性」タブで、「見出しタイプ」を「列名」に設定します。



ページが実行されると、質問をしてデータベースからレスポンスを取得できます。この例で使用されているスキーマは、HRサンプル・スキーマです。


プロンプトを入力すると、Accounting Departmentのすべての従業員が表示され、次のように結果が返されます。



プロンプトを入力して、米国内のすべての場所を表示し、次のように結果を返します。





まとめ


LLMが問合せを生成する機能は、エンタープライズ・データにより多くの価値をもたらします。これにより、ユーザー・エクスペリエンスが大幅に向上し、データ・アクセスがより効率的になります。しかし、LLMは幻覚に感受性があり、その結果が必ずしも正確ではない可能性があることを覚えておくことが重要です。特定の自然言語プロンプトが目的のSQL問合せを生成しないか、生成されたSQLが実行可能でない可能性があります。これらの制限にもかかわらず、LLMの統合はデータ管理にとって貴重な資産であり、ユーザーがその潜在的な不正確さを認識し、生成されたクエリーの解釈と実装に注意を払うことを条件としています。


コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)