CREATE_VOCABULARY

独自のトークン語彙ファイルをデータベースにロードするには、DBMS_VECTOR_CHAIN.CREATE_VOCABULARYチャンカ・ヘルパー・プロシージャを使用します。

用途

ベクトル埋込みモデルで使用されるトークナイザによって認識されるカスタム・トークン語彙を作成します。

語彙には、モデルの統計トレーニング処理中に収集される一連のトークン(単語および単語の断片)が含まれています。このデータをチャンカに供給すると、埋込みモデルのトークナイザによって課される最大入力制限に近いテキスト・サイズを正確に選択するのに役立ちます。

使用上の注意

  • 通常、サポートされている語彙ファイル(認識されたトークンを含む)は、モデルの配布の一部として含まれています。対象のモデルに関連付けられた語彙ファイルを使用するようにお薦めします。

    語彙ファイルが使用できない場合は、トークナイザのタイプに応じて、次のいずれかのファイルをダウンロードできます:
    • WordPiece:

      "bert-base-uncased" (英語)または"bert-base-multilingual-cased"モデルの語彙ファイル(vocab.txt)

    • バイトペア・エンコーディング(BPE):

      "GPT2"モデルの語彙ファイル(vocab.json)

      次のpythonスクリプトを使用して、ファイルを抽出します:
      import json
      import sys
       
      with open(sys.argv[1], encoding="utf-8") as f:
        d = json.load(f)
        for term in d:
          print(term)
    • SentencePiece:

      "xlm-roberta-base"モデルの語彙ファイル(tokenizer.json)

      次のpythonスクリプトを使用して、ファイルを抽出します:
      import json
      import sys
       
      with open(sys.argv[1], encoding="utf-8") as f:
        d = json.load(f)
        for entry in d["model"]["vocab"]:
          print(entry[0])

    語彙ファイルは必ずUTF-8エンコーディングで保存してください。

  • ユーザー指定の語彙名(VOCABULARY_NAME)を使用して、schema.table.columnにロードされたトークンに基づいて語彙を作成できます。

    語彙データのロード後、by vocabularyチャンク化モード(VECTOR_CHUNKSまたはUTL_TO_CHUNKSを使用)を使用して、トークン数をカウントすることで入力データを分割できます。

  • 次のデータ・ディクショナリ・ビューに問い合せると、既存の語彙データにアクセスできます。
    • ALL_VECTOR_VOCABには、使用可能なすべての語彙が表示されます。

    • USER_VECTOR_VOCABには、現在のユーザーのスキーマの語彙が表示されます。

    • ALL_VECTOR_VOCAB_TOKENSには、使用可能なすべての語彙のトークンのリストが表示されます。

    • USER_VECTOR_VOCAB_TOKENSには、現在のユーザーが所有する語彙のトークンのリストが表示されます。

構文

DBMS_VECTOR_CHAIN.CREATE_VOCABULARY(
    PARAMS      IN JSON default NULL
);

PARAMS

JSON形式で入力パラメータを指定します。
{
    table_name, 
    column_name, 
    vocabulary_name,
    format,
    cased
}

表12-20 パラメータの詳細

パラメータ 説明 必須 デフォルト値

table_name

語彙ファイルをロードする表の名前(およびオプションの表の所有者)

はい

値なし

column_name

語彙ファイルをロードする語彙テーブルの列名

はい

値なし

vocabulary_name

語彙のユーザー指定の名前とオプションの所有者名(現在の所有者以外の場合)

はい

値なし

format

  • xlm: SentencePieceトークン化の場合

  • bert: WordPieceトークン化の場合

  • gpt2: BPEトークン化の場合

はい

値なし

cased

語彙の大文字と小文字の区別。つまり、語彙が大文字または小文字のいずれとして扱われるか

いいえ

false

DECLARE
  params clob := '{"table_name"       : "doc_vocabtab",
                   "column_name"      : "token",
                   "vocabulary_name"  : "doc_vocab",
                   "format"           : "bert",
                   "cased"            : false}';

BEGIN
  dbms_vector_chain.create_vocabulary(json(params));
END;
/

エンドツーエンドの例:

このプロシージャを使用してエンドツーエンドのシナリオ例を実行するには、「カスタム語彙の作成および使用」を参照してください。