Oracle Database内でのテキスト文字列から埋込みへの変換

データベースに格納されているベクトル埋込みモデルにアクセスして、テキストから埋込みへの変換を実行します。

埋込み機械学習モデルをダウンロードし、ONNX形式に変換して(ONNX形式ではない場合)、モデルをOracle Databaseにロードできます。その後、そのモデルにアクセスして、ベクトル索引の移入に使用されるデータをベクトル化できます。索引付けするデータとユーザーの入力問合せの両方に同じ埋込みモデルを使用する必要があります。この例では、ユーザーの入力問合せをその場でベクトル化する方法を確認できます。

ここでは、VECTOR_EMBEDDING SQL関数またはUTL_TO_EMBEDDING PL/SQLファンクション(単数形の「embedding」であることに注意してください)のいずれかをコールできます。VECTOR_EMBEDDINGUTL_TO_EMBEDDINGは、どちらも(配列ではなく) VECTOR型を直接返します。

ONNX形式の埋込みモデルを使用して、ユーザーの入力テキスト文字列「hello」をベクトル埋込みに変換するには:

  1. ローカル・ユーザーとしてOracle Databaseに接続します。
    1. SQL*PlusにSYSユーザーとしてログインし、SYSDBAとして接続します。
      conn sys/password as sysdba
      CREATE TABLESPACE tbs1
      DATAFILE 'tbs5.dbf' SIZE 20G AUTOEXTEND ON
      EXTENT MANAGEMENT LOCAL
      SEGMENT SPACE MANAGEMENT AUTO;
      SET ECHO ON
      SET FEEDBACK 1
      SET NUMWIDTH 10
      SET LINESIZE 80
      SET TRIMSPOOL ON
      SET TAB OFF
      SET PAGESIZE 10000
      SET LONG 10000
    2. ローカル・ユーザー(docuser)を作成し、必要な権限を付与します。
      DROP USER docuser cascade;
      CREATE USER docuser identified by docuser DEFAULT TABLESPACE tbs1 quota unlimited on tbs1;
      GRANT DB_DEVELOPER_ROLE, create credential to docuser;
    3. ローカル・ユーザー(docuser)として接続します:
      CONN docuser/password
  2. VECTOR_EMBEDDINGまたはUTL_TO_EMBEDDINGをコールします。
    1. ONNX形式の埋込みモデルをOracle Databaseにロードします。

      このステップの実行方法の詳細は、「Oracle Databaseのエンドツーエンドの例へのONNXモデルのインポート」を参照してください。

    2. VECTOR_EMBEDDINGまたはUTL_TO_EMBEDDINGをコールします。ユースケースに応じて、DBMS_VECTORまたはDBMS_VECTOR_CHAINパッケージのUTL_TO_EMBEDDINGを使用できます。

      • VECTOR_EMBEDDING:

        SELECT TO_VECTOR(VECTOR_EMBEDDING(doc_model USING 'hello' as data)) AS embedding;
      • DBMS_VECTOR.UTL_TO_EMBEDDING:

        var params clob;
        exec :params := '{"provider":"database", "model":"doc_model"}';
        
        select dbms_vector.utl_to_embedding('hello', json(:params)) from dual;

      ここで、doc_modelには、埋込みモデルをデータベースに格納したときの名前を指定します。

    次のような埋込みが生成されます。

    EMBEDDING
    -------------------------------------------------------------------------------------------------------------------------------------
    [8.78423732E-003,-4.29633334E-002,-5.93001908E-003,-4.65480909E-002,2.14333013E-002,6.53376281E-002,-5.93746938E-002,2.10403297E-002,
    4.38376889E-002,5.22960871E-002,1.25104953E-002,6.49512559E-002,-9.26998071E-003,-6.97442219E-002,-3.02916039E-002,-4.74979728E-003,
    -1.08755399E-002,-4.63751052E-003,3.62781435E-002,-9.35919806E-002,-1.13934642E-002,-5.74270077E-002,-1.36667723E-002,2.42995787E-002,
    -6.96804151E-002,4.93822657E-002,1.01460628E-002,-1.56464987E-002,-2.39410568E-002,-4.27529104E-002,-5.65665103E-002,-1.74160264E-002,
    5.05326502E-002,4.31500375E-002,-2.6994409E-002,-1.72731467E-002,9.30535868E-002,6.85951149E-004,5.61876409E-003,-9.0233935E-003,
    -2.55788807E-002,-2.04174276E-002,3.74175981E-002,-1.67872179E-002,1.07479304E-001,-6.64602639E-003,-7.65537247E-002,-9.71965566E-002,
    -3.99636962E-002,-2.57076006E-002,-5.62455431E-002,-1.3583754E-001,3.45946029E-002,1.85191762E-002,3.01524661E-002,-2.62163244E-002,
    -4.05582506E-003,1.72979087E-002,-3.66434865E-002,-1.72491539E-002,3.95228416E-002,-1.05518714E-001,-1.27463877E-001,1.42578809E-002