※ 本記事は、Mark Hornickによる”Give Oracle Select AI the Business Context Behind Your Data“を翻訳したものです。

2026年11月8日

カタログ、ファイル、コールバック、MCP経由の情報源、オントロジーの知識を、自然言語による問い合わせに活用する

データベースのメタデータからは、TOTAL_SPENDが数値型であり、LAST_ORDER_DATEが日付型であることを、AIモデルに伝えられます。しかし、「優良顧客」が累計購入額50,000ドル超の顧客を意味するのか、「リスクのある顧客」には未解決案件をエスカレーション・サポートする必要があるのか、といった業務上の意味までは説明できません。そのような知識は、業務用語集、カタログ、ポリシーファイル、オントロジー、アプリケーションなどで管理されています。Select AIのセマンティックコンテキストを使うと、自然言語からSQLを生成するプロンプトに、データベースのメタデータと併せて、こうした業務知識を加えられます。その結果、組織で使う用語やルールを反映したSQLを生成しやすくなります。

業務上の意味を伝えることが重要

利用者は、答えてほしい質問を業務で使う言葉で表します。一方、スキーマには実装上の名前が使われることが多く、チーム内では指標、顧客区分、期間、関係性について合意した定義を使っています。問い合わせを処理するときにその定義を参照できなければ、同じ表現でも解釈が分かれる可能性があります。たとえば、業務用語集で「リスクのある顧客」を、「優良顧客のうち、過去90日間に注文がなく、サポートでエスカレーションされた未解決案件がある顧客」と定義しているかもしれません。この定義を渡すと、Oracle Select AIと選択したLLMは、「地域別にリスクのある顧客を一覧表示して」というプロンプトの解釈に活用できます。

セマンティックコンテキストは、表名や列名、データ型、コメント、制約、アノテーション、プロファイルの指示など、スキーマのメタデータを補足するために使います。業務用語、指標の定義、オブジェクトの説明、業務ルール、関係性を追加できます。オブジェクト単位の情報は、対象となるオブジェクトを自動検出する際にも役立ちます。情報源は1つだけでも、複数を組み合わせても利用できます。セマンティックコンテキストを設定していないプロファイルは、これまでどおりに動作します。

管理している知識に合う情報源を選ぶ

セマンティックソースとは、Oracle Select AIが業務情報を取得するために設定する情報源です。データベースオブジェクトに関連付ける情報にはobjectスコープを、プロンプト全体や一般的な業務に適用する情報にはglobalスコープを使います。両方を組み合わせることもできます。プロンプトを処理するときに、Oracle Select AIは、有効なAIプロファイルに関連付けられたソースから情報を取得し、利用可能なデータベースのメタデータと組み合わせます。

データカタログに接続する

組織ですでにデータカタログに定義を保守しているなら、同じ説明を別のシステムにコピーする代わりに、そのカタログを接続してください。catalog型の連携では、AlationやInformaticaなど、対応するプロバイダーから、業務用語やオブジェクトの説明を取得できます。設定する際は、必要なメタデータを含むカタログのデータソースを特定し、アクセスに適した認証情報を設定します。対応するカタログ連携には、AlationとInformaticaがあります。

次のコード例では、AlationとInformaticaのカタログに、それぞれのアクセス情報を指定し、セマンティックソースオブジェクトを作成します。scopeに「all」を指定すると、オブジェクト単位と全体向けの両方の情報を扱うソースとして設定できます。

BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_ALATION_CATALOG_SOURCE',
    type        => 'catalog',
    attributes  => '{
      "provider": "alation",
      "scope": "all",
      "source_endpoint": "<ALATION_ENDPOINT>",
      "credential_name": "<ALATION_CREDENTIAL>",
      "data_source_name": "SALES_DATA_SOURCE"
    }'
  );
END;
BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_INFORMATICA_CATALOG_SOURCE',
    type        => 'catalog',
    attributes  => '{
      "provider": "informatica",
      "scope": "all",
      "source_endpoint": "<INFORMATICA_ENDPOINT>",
      "credential_name": "<INFORMATICA_CREDENTIAL>",
      "data_source_name": "SALES_DATA_SOURCE"
    }'
  );
END;

カスタムコールバックを使う

custom型のソースでは、セマンティックコンテキストを返すPL/SQL関数を呼び出します。アプリケーションの表や、データベースからアクセスできるほかの情報源でルールやメタデータを管理している場合に利用できます。また、要求されたデータベースオブジェクトに応じて、渡す情報を選ぶ処理も実装できます。必要に応じて、オブジェクト向けコールバック、全体向けコールバック、またはその両方を設定してください。カスタムコールバックでは、呼び出された時点で情報を動的に取得できます。

BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_CALLBACK_SOURCE',
    type        => 'custom',
    attributes  => '{
      "scope": "all",
      "object_callback_func": "APP_SEMANTICS.GET_OBJECT_CONTEXT",
      "global_callback_func": "APP_SEMANTICS.GET_GLOBAL_CONTEXT",
      "params": {"domain": "sales"}
    }'
  );
END;

返すセマンティック項目には、用語または名前、その定義、その情報を適用するデータベースオブジェクトを含めます。

ファイルから情報を取得する

file型のソースでは、用語集、指標のガイド、その他の業務上の参照資料を、全体向けの情報として利用できます。データベースのディレクトリ内のファイルか、オブジェクトストレージ上のファイルを指定します。ファイルの内容を処理して索引を作成する際は、ベクトル索引の作成に使う埋め込みモデルを指定したAIプロファイルを使用します。

BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_GLOSSARY_FILE',
    type        => 'file',
    attributes  => '{
      "scope": "global",
      "source_endpoint": "<OBJECT_STORAGE_FILE_URI>",
      "credential_name": "SALES_FILE_CREDENTIAL",
      "profile_name": "SEMANTIC_FILE_EMBEDDING_PROFILE"
    }'
  );
END;

MCPを介して情報を取得する

mcp型のソースでは、MCP対応サービスが公開するツールを使い、セマンティックコンテキストを取得します。既存のサービスから業務知識を取得できる場合や、必要な情報を動的に取得したい場合に使います。globalツールからは、一般的な用語や定義を取得します。objectツールからは、要求された表や列に関連する情報を取得できます。応答のマッピングでは、ツールの応答のどの部分に、項目、用語、定義が含まれるかをOracle Select AIに伝えます。

BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_GLOSSARY_MCP',
    type        => 'mcp',
    attributes  => '{
      "scope": "global",
      "source_endpoint": "<MCP_ENDPOINT>",
      "credential_name": "SALES_MCP_CREDENTIAL",
      "global_tool": {
        "name": "search_business_glossary",
        "arguments": {"domain": "sales"},
        "response_mapping": {
          "items": "$.results[*]",
          "term": "$.term",
          "definition": "$.definition"
        }
      }
    }'
  );
END;

objectツールでは、返されたオブジェクトの識別子もマッピングします。また、プロバイダー側のオブジェクトとデータベースオブジェクトを対応付けられるよう、${owner}と${name}を含むオブジェクトパターンを指定します。

オントロジーを使う

オントロジーでは、業務上の概念とその関係を、構造化した知識として表現します。たとえば、顧客、アカウント、注文、エスカレーション案件が、互いにどのように関係しているかを説明するために使えます。これらの関係や概念の定義を、自由記述の説明だけでなくオントロジーで管理している場合は、ontology型のソースを選んでください。

-- Replace the marked key and value with the ontology integration settings
BEGIN
  DBMS_AI_SEM.CREATE_SEMANTIC_SOURCE(
    source_name => 'SALES_ONTOLOGY_SOURCE',
    type        => 'ontology',
    attributes  => '{
      "scope": "all",
      "<ONTOLOGY_SPECIFIC_KEY>": "<ONTOLOGY_SPECIFIC_VALUE>"
    }'
  );
END;

スコープの指定によって、そのソースから、オブジェクト単位の情報、全体向けの情報、または両方を提供するかを制御します。

AIプロファイルにソースを関連付ける

セマンティックソースを作成しただけでは、すべてのプロンプトで自動的に使えるようにはなりません。依頼の処理に使うAIプロファイルのsemantic_source属性に、1つ以上のソース名を追加します。プロファイルでは、その所有者が所有しているソースか、その所有者に利用権限が付与されたソースを参照できます。

BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
    profile_name => 'SALES_PROFILE',
    attributes   => '{
      "provider": "<PROFILE_PROVIDER>",
      "credential_name": "<PROFILE_CREDENTIAL>",
      "semantic_source": [
        "SALES_CATALOG_SOURCE",
        "SALES_GLOSSARY_FILE"
      ]
    }'
  );
END;

ソースの設定と認証情報は、ソースの所有者が管理します。別のプロファイル所有者に権限を付与すると、その所有者はソースを関連付けて利用できますが、ソースの所有権を移したり、ソースの認証情報を共有したりするわけではありません。ソースの所有者は、そのソースを更新したり、無効にしたりできます。使用する製品リリースのドキュメントに記載された制限に従い、有効なプロファイルに関連付けられているソースは削除できません。

プロンプトに使われる情報を確認する

生成されたSQLを調べる前に、SHOWCONTEXTで、プロンプトに追加されたセマンティックコンテキストを確認してください。出力には、オブジェクトの説明、列の説明、全体向けの業務情報が含まれる場合があります。これにより、プロファイルで想定したソースを使っているか、取得した定義が意図したものかを確認しやすくなります。

SELECT AI SHOWCONTEXT 'List at-risk customers by region';

検証する際は、セマンティックコンテキストを使う場合と使わない場合で、同じプロンプトを比較するとよいでしょう。SHOWCONTEXTで渡された情報を調べ、SHOWSQLで生成されたSQL文を確認し、最終的な結果を、正しい結果が分かっている例と照合します。この手順によって、アプリケーションでそのクエリを利用する前に、定義の欠落、オブジェクトの対応付けの不一致、業務ルールの曖昧さを見つけやすくなります。

すでに信頼している知識から始める

Oracle Select AIのセマンティックコンテキストを使えば、SQLを生成するプロファイルに、業務知識を結び付けられます。一元管理している定義にはカタログを、参照資料にはファイルを、動的に取得する情報にはコールバックやMCPサービスを、構造化された概念と関係性にはオントロジーを使ってください。まず、これまで解釈の不一致を招いてきた業務上の表現を1つ選び、その定義を持つソースを関連付けます。そして、その情報を加えたことで、生成されるSQLがどのように変わるかを確認してください。

参考資料

詳しくは、次の資料を参照してください。