カスタム・チャンク化指定を使用したテキストからチャンクへの変換

チャンク化された出力(特に長い複雑なドキュメントの場合)は、コンテキスト上の意味を失ったり、親コンテンツとの一貫性を失うことがあります。この例では、カスタム・チャンク仕様を適用してチャンクを絞り込む方法を確認できます。

ここでは、DBMS_VECTOR_CHAINパッケージのVECTOR_CHUNKS SQL関数またはUTL_TO_CHUNKS() PL/SQLファンクションを使用します。

ノート:

この例では、一部のカスタム・チャンク・パラメータを適用する方法を示します。サポートされるすべてのチャンク化パラメータのより詳細な例については、「チャンク化の手法と例」を参照してください。
  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 to docuser;
    3. ローカル・ユーザー(docuser)として接続します:
      CONN docuser/password
  2. 非構造化テキスト・チャンクを格納するリレーショナル表(documentation_tab)を作成します。
    DROP TABLE IF EXISTS documentation_tab; 
    
    CREATE TABLE documentation_tab (
        id NUMBER, 
        text VARCHAR2(2000));
    INSERT INTO documentation_tab VALUES(1,
    'Oracle AI Vector Search stores and indexes vector embeddings'||
    ' for fast retrieval and similarity search.'||CHR(10)||CHR(10)||
    '    About Oracle AI Vector Search'||CHR(10)||
    '    Vector Indexes are a new classification of specialized indexes'||
    ' that are designed for Artificial Intelligence (AI) workloads that allow'||
    ' you to query data based on semantics, rather than keywords.'||CHR(10)||CHR(10)||
    '    Why Use Oracle AI Vector Search?'||CHR(10)||
    ' The biggest benefit of Oracle AI Vector Search is that semantic search'||
    ' on unstructured data can be combined with relational search on business'||
    ' data in one single system.'||CHR(10));
    
    COMMIT;
    SET LINESIZE 1000;
    SET PAGESIZE 200;
    COLUMN doc FORMAT 999;
    COLUMN id  FORMAT 999;
    COLUMN pos FORMAT 999;
    COLUMN siz FORMAT 999;
    COLUMN txt FORMAT a60;
    COLUMN data FORMAT a80;
  3. VECTOR_CHUNKS SQL関数をコールし、次のカスタム・チャンク化パラメータを指定します。NORMALIZEパラメータをallに設定すると、結果の書式設定が読みやすくなります。これは、データにPDFドキュメントが含まれている場合に特に役立ちます:
    SELECT D.id doc, C.chunk_offset pos, C.chunk_length siz, C.chunk_text txt
    FROM documentation_tab D, VECTOR_CHUNKS(D.text 
        BY words
        MAX 50
        OVERLAP 0
        SPLIT BY recursively
        LANGUAGE american
        NORMALIZE all) C;

    DBMS_VECTOR_CHAINパッケージのUTL_TO_CHUNKS関数を使用して同じ操作をコールするには、次を実行します。

    SELECT D.id doc,
        JSON_VALUE(C.column_value, '$.chunk_id' RETURNING NUMBER) AS id,
        JSON_VALUE(C.column_value, '$.chunk_offset' RETURNING NUMBER) AS pos,
        JSON_VALUE(C.column_value, '$.chunk_length' RETURNING NUMBER) AS siz,
        JSON_VALUE(C.column_value, '$.chunk_data') AS txt
    FROM documentation_tab D,
       dbms_vector_chain.utl_to_chunks(D.text,
       JSON('{"by":"words",
              "max":"50",
              "overlap":"0",
              "split":"recursively",
              "language":"american",
              "normalize":"all"}')) C;

    これにより、3つのチャンクのセットが戻されます。これらは、空白行、改行および空白を使用して再帰的に単語で分割されています。

    DOC  POS  SIZ  TXT
    ---- ---- ---- ------------------------------------------------------------
    1   1    108   Oracle AI Vector Search stores and indexes vector embeddings
    		 for fast retrieval and similarity search.
    
    1   109  234   About Oracle AI Vector Search
    	        Vector Indexes are a new classification of specialized index
    	        es that are designed for Artificial Intelligence (AI) worklo
    	        ads that allow you to query data based on semantics, rather
    	        than keywords.
    
    1   343  204   Why Use Oracle AI Vector Search?
    	        The biggest benefit of Oracle AI Vector Search is that seman
    	        tic search on unstructured data can be combined with relatio
    	        nal search on business data in one single system.
    チャンク化の結果には、次のものが含まれます。
    • chunk_id (DOC): 各チャンクのID

    • chunk_offset (POS): ソース・ドキュメント内の各チャンクの元の位置(ドキュメントの始まりの位置(1の位置)を基準)

    • chunk_length (SIZ): 各チャンクの文字長

    • chunk_data (TXT): 各チャンクのテキスト・コンテンツ

関連トピック