16.9.7 Oracleベクトル検索の作成

構造化データと非構造化データの両方をセマンティクスまたは意味で、および値で検索するOracleベクトル検索を作成して、超高度なAI検索アプリケーションを実現します。

ノート:

Oracleベクトル検索には、Oracle Database 23ai以降が必要です。

このトピックでは、サンプル・データセットProject DataにあるEBA_PROJECT_MILESTONES表に対してOracleベクトル検索を作成する方法を示します。この例は、サンプル・データセットProject Dataをすでにインストールしてあることを前提としています。

関連項目:

『Oracle APEX SQLワークショップ・ガイド』サンプル・データセットの使用に関する項

16.9.7.1 Oracleベクトル検索の構成について

Oracleベクトル検索の構成について学習します。

Oracle Database 23ai以降では、VECTORデータ型を使用して、ビジネス・データとともにベクトル埋込みをデータベースに格納できます。埋込みモデルを使用すると、非構造化データをベクトル埋込みに変換して、ビジネス・データに対するセマンティック問合せに使用できます。

Oracleベクトル検索の構成を作成するプロセスには、次の一般的なステップが含まれます:

  1. VECTORデータ型の列を表に追加します。
  2. ベクトル・プロバイダを作成して、テキスト文字列のベクトル埋込みを作成します。「ベクトル・プロバイダの管理」を参照してください。
  3. APEX_AIパッケージ内のGET_VECTOR_EMBEDDINGSファンクションを使用してベクトル・プロバイダから埋込みを取得します。「ベクトル・プロバイダからのベクトル埋込みの取得」を参照してください
  4. ベクトル・プロバイダおよびVECTOR列に基づいて検索構成を作成します。「Oracleベクトル検索の構成の作成」を参照してください。
  5. Oracleベクトル検索のページを作成します。「ベクトル・プロバイダからのベクトル埋込みの取得」

関連項目:

  • 『Oracle APEX APIリファレンス』APEX_AIGET_VECTOR_EMBEDDINGSファンクション
  • Oracle Database AI Vector Searchユーザーズ・ガイド概要

16.9.7.2 ベクトル列の追加

表にVECTOR列を追加する方法について学習します。

次の例では、サンプル・データセットProject DataにあるEBA_PROJECT_MILESTONES表を使用します。

VECTOR列を表に追加するには:

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックします。
  2. 「SQLコマンド」をクリックします。

    「SQLコマンド」ホームページが表示されます。

  3. コマンド・エディタに次のSQLコマンドを入力します。
    ALTER TABLE eba_project_milestones ADD (vector_column vector);
    
  4. 「実行」([Ctrl]+[Enter])をクリックして、コマンドを実行します。

    「結果」ペインに結果が表示されます。

16.9.7.3 ベクトル・プロバイダからのベクトル埋込みの取得

ベクトル・プロバイダからベクトル埋込みを取得します。

ベクトル・プロバイダにより、テキストを埋込みに変換できます。この機能は、AIサービスによって適用できますが、データベース内のONNXモデル、またはユーザー定義のPL/SQLファンクションによってローカルで適用することもできます。

次の例は、ベクトル・プロバイダを作成してあることと、APEX_AIパッケージ内のGET_VECTOR_EMBEDDINGSファンクションを使用してEBA_PROJECT_MILESTONES表から埋込みを取得していることを前提としています。

ベクトル・プロバイダからベクトル埋込みを取得するには:

  1. ワークスペースのホームページで、「SQLワークショップ」をクリックします。
  2. 「SQLコマンド」をクリックします。

    「SQLコマンド」ホームページが表示されます。

  3. コマンド・エディタに次のSQLコマンドを入力します。
    UPDATE eba_project_milestones
       SET vector_column = apex_ai.get_vector_embeddings(
                               p_value             => name || ' ' || description,
                               p_service_static_id => 'VP_OCI_EMBEDDING' )
  4. 「実行」([Ctrl]+[Enter])をクリックして、コマンドを実行します。

    「結果」ペインに結果が表示されます。

関連項目:

『Oracle APEX APIリファレンス』APEX_AIGET_VECTOR_EMBEDDINGSファンクション

16.9.7.4 Oracleベクトル検索の構成の作成

Oracleベクトル検索の構成を作成します。

ノート:

Oracleベクトル検索の構成には、Oracle Database 23ai以降が必要です。Oracleベクトル検索の構成を作成する前に、「Oracleベクトル検索の構成について」で示されているすべてのステップを完了する必要があります。

検索構成には、検索可能なデータ・ソースに関する情報が含まれます。

Oracleベクトル検索の構成を作成するには:

  1. 「構成の検索」ページにアクセスします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。
    4. 「ナビゲーションと検索」で、「構成の検索」をクリックします。
      「構成の検索」ページが表示されます。
  2. 「構成の検索」ページで、「作成」をクリックします。
    1. 名前 - 検索構成の名前を入力します(例: Search Milestones - Vector)。
    2. 検索タイプ - 検索のタイプを選択します。「Oracleベクトル検索」を選択します。
    3. 「次」をクリックします。
  3. ソース:
    1. ベクトル・プロバイダ - 指定された検索語について埋込みを取得するために使用する、ベクトル・プロバイダを選択します。この検索語は、表内のデータセットと同じ埋込みモデルを使用して変換する必要があります。
    2. ソース・タイプ - 検索構成のソースを指定します。Oracleベクトル検索の構成は、表またはSQL問合せに基づいたものにできます。
    3. 表/ビューの所有者 - その検索構成に使用するベクトル列を含む表の所有者を選択します(例: Table)。
    4. 表/ビューの名前 - その検索構成に使用するベクトル列を含む表を選択します(例: EBA_PROJECT_MILESTONES)。
    5. 「次」をクリックします。
  4. 列のマッピング:
    1. 主キー列 - 検索構成データ・ソースの主キー列を選択します(例: ID Number)。
    2. ベクトル列 - ベクトル列を選択します。近似メソッドを使用した類似検索の場合は、この列に対してベクトル索引が存在する必要があります(例: VECTOR_COLUMN (Vector))。
    3. タイトル列 - タイトルとして使用する列を選択します(例: NAME (Varchar2))
    4. 説明列 - 説明として使用する列を選択します(例: DESCRIPTION (Varchar2))
    5. アイコン・ソース - 検索結果のヘッダーに表示されるアイコンを構成します。オプションは次のとおりです。
      • イニシャル - アイコンをイニシャルとして表示するために使用するタイトル列。
      • CSSクラス - アイコンを表示するために、ここで入力したCSSクラスが使用されます。
      • クラス列 - アイコンを表示するために、アイコンCSSクラスを含むここで選択した列が使用されます。

      この例では、デフォルトの「イニシャル」を受け入れます。

  5. 「検索構成の作成」をクリックします。

    検索構成が作成されます。「検索構成」、「編集」ページが表示され、「検索構成が作成されました。」というメッセージが表示されます。

  6. レポートにリンクするように検索構成を編集します。
    1. リンク、リンク・タイプ - リンクのタイプを選択します(「このアプリケーションのページにリダイレクト」など)。
    2. ページ - リダイレクト先のページを選択または入力します(例: 2)。
    3. 「変更の適用」をクリックします。
      「検索構成が更新されました。」というメッセージとともに「構成の検索」ページが表示されます。
  7. 「アプリケーションID」ブレッドクラムをクリックして、アプリケーションのホームページに戻ります。

16.9.7.5 Oracleベクトル検索のページの作成

ページの作成ウィザードを実行して、検索ページを作成します。

ページの作成ウィザードによって検索フィールドが作成され、検索構成を選択するよう求められます。後でページ・デザイナで検索構成を追加することもできます。

検索ページには、検索フィールドと「検索結果」リージョンがあります。ページ・デザイナでは、「検索結果」リージョンに、共有コンポーネントで定義された検索構成にマップされる検索ソースが含まれています。

ページの作成ウィザードを実行して検索ページを作成するには:

  1. アプリケーションのホームページにナビゲートします。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
  2. 「アプリケーション」ホームページで、「ページの作成.」をクリックします
    「ページの作成」が表示され、「コンポーネント」「機能」および「レガシー・ページ」の3つのタブがあります。
  3. 「コンポーネント」で、「検索ページ」を選択します。
  4. ページ定義:
    1. ページ番号 - ページ番号はアプリケーション内のページを識別する整数値です。
    2. 名前 - このページのテキスト名を指定します(例: Search Projects - Vector)。

      このテキストは、レポート・タイトルにも使用されます。ページの作成後は、ページ・デザイナでタイトルを変更できます。

    3. ページ・モード - ページ・モードを指定します。デフォルトの「標準」を受け入れます。
  5. 検索構成 - このページで使用する検索構成を選択します(たとえば、「Search Page - Vector」を選択します)。
  6. ナビゲーション - デフォルトを受け入れ、「ブレッドクラムの使用」を有効にします。
  7. 「ページの作成」をクリックします。

    ページ・デザイナが表示されます。

    「レンダリング」タブでは、ページ・アイテムPX_SEARCH (Xはページ番号)および「検索結果」リージョンに注意します。PX_SEARCHは、ユーザーが検索文字列を送信できる検索フィールドです。「検索結果」リージョンには、検索結果と、共有コンポーネントに保持されている検索構成にマップされる検索ソースの両方が含まれています。プロパティ・エディタで属性を編集することにより、検索の表示や動作をさらに微調整および制御できます。

  8. ページを実行してテストします。
    1. 「ページの保存と実行」をクリックします。
      検索ページが表示されます。
    2. 検索フィールドに、検索を入力し(例: bug)、[Enter]を押します。

    検索結果が表示されます。