AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

新しい埋め込みモデルへ移行する

現在のモデルがレガシーまたは非推奨のステータスに達した場合、または、新しいモデルがユースケースに合わせて、より優れた取得品質、レイテンシ、またはコストを提供する場合は、新しい Voyage AI 埋め込みモデルに移行する。

異なるモデルが生成する埋め込みは比較できません。したがって、移行にはモデル名の変更以外の作業が必要です。常に、後継モデルを使用してコーパス全体の埋め込みを再生成してください。それにより、保存されたベクトルとクエリベクトルが同じモデルから生成されるようになります。

後継モデルが現在のモデルと同じ次元数で、および同じ要素型の埋め込みを生成する場合でも、コーパスを再生成します。次元が一致すると、2つのベクトルのセットは数学的に比較可能になります。しかし、Voyage AI モデルはモデル間で関連性を保持するようにトレーニングされていません。新しいモデルからのクエリ埋め込みと古いモデルからの保存された埋め込みを比較すると、取得品質が劣化し、新しいモデルへ移行する利点が減らせられます。

フォローする手順は、埋め込みがどのように生成されるかによって異なります。

埋め込みメソッド
移行ステップ

自動埋め込み

MongoDB ベクトル検索 は埋め込みを生成して保存します。インデックス定義のモデルを変更すると、 MongoDB ベクトル検索 はデータを再埋め込みます。 「 自動埋め込みによる移行 」を参照してください。

自己管理型埋め込み

埋め込みの生成と保存は自分で行います。埋め込みと再ランク付けAPIを使用して base を再埋め込み、アプリケーションを更新 し、ベクトルインデックスを再構築します 。 「 自己管理型埋め込みの移行 」を参照してください。

まず、「現在のモデルのステータス」テーブルで現在のモデルのステータスを確認してください。モデルがレガシーまたは非推奨の場合は、テーブルにそのモデルの代替として記載されている推奨される代替モデルに移行します。

利用可能なモデルを比較するには、「 投票AI埋め込みと再ランク付けモデルの概要 」を参照してください。ほとんどの移行では、次の推奨モデルから継承を選択します。

  • 汎用テキスト。最高の取得品質にはvoyage-4-large、最低のレイテンシとコストにはvoyage-4-lite、および品質とパフォーマンスのバランスにはvoyage-4を使用します。詳細については、「テキスト埋め込み」を参照してください。

  • コード。voyage-code-4 は、コーディング エージェントやプログラミングドキュメントなどのコード取得およびエージェントコーディング アプリケーションに使用されます。特定のドメインのモデルを比較するには、ドメイン固有モデル を参照してください。

  • より長いドキュメント。voyage-context-4 を使用すると、手動でメタデータやコンテキストの拡張を行わずに、ドキュメントの全体のコンテキストを捕捉するチャンクを埋め込むことができます。検索品質は、長いドキュメントで最も向上します。標準的な埋め込みのドロップインリプレイスメントとして機能し、後続のワークフローに変更を加える必要はありません。詳しくは、コンテキスト化されたチャンク埋め込みを参照してください。

  • マルチモーダル。voyage-multimodal-3.5 を使用すると、テキストと画像データを組み合わせたものを埋め込むことができます。例えば、PDF、スライド、表、図のスクリーンショットなどです。詳細を学ぶには、「マルチモーダル埋め込み」を参照してください。

これらのモデルから選択する際は、次のモデル特性を考慮してください。

  • モダリリティ。現在のモデルと同じデータ型をサポートするモデルへ移行します。例えば、テキストのみのモデルに移行するのではなく、voyage-multimodal-3 から voyage-multimodal-3.5 へ移行します。

  • 埋め込み次元。継承モデルが生成する次元数に注目してください。新しいベクトルインデックスではその値を指定する必要があります。

  • コンテキストの長さ。現在のモデルよりもコンテキストの長さが短い場合、最も長いドキュメントが切り捨てられる可能性があります。使用されるAI埋め込みと再ランク付けモデルの概要 で、継承モデルのコンテキスト長を確認します。

注意

voyage-4 シリーズ モデルからの埋め込みは互換性があり、比較可能ですが、Voyage AI は、それらの間を移行する際にコーパスを再生成することをなおお勧めしています。

後継モデルを選択した後、本番コーパスを移行する前に、自身のデータの代表的なサンプルでその取得品質を評価します。

MongoDB ベクトル検索で自動埋め込みを使用する場合、MongoDB がお客様のために移行を管理します。MongoDB ベクトル検索インデックス定義を編集し、autoEmbed 型フィールド定義の model フィールドの値を後継モデルに変更します。

{
"fields": [
{
"type": "autoEmbed",
"modality": "text",
"path": "<field-name>",
"model": "<successor-model>"
}
]
}

model、numDimensions、quantizationの設定を変更すると、MongoDB ベクトル検索はインデックスと埋め込みを再生成します。これにより、追加の埋め込みコストが発生します。インデックスの再構築中に、古いインデックス定義に引き続きクエリを実行できます。再構築が完了すると、MongoDB ベクトル検索は古いインデックスを自動的に置き換えます。

インデックスの編集 の詳細については、 「 MongoDB ベクトル検索インデックスの編集 」を参照してください。自動埋め込みがサポートするモデルについては、「 自動埋め込みのモデル 」を参照してください。

注意

自己管理型配置では、インデックスを作成した後は、autoEmbed 型フィールドを変更できません。移行するには、後続モデルを指定する新しいインデックスを作成し、古いインデックスを削除します。

自分で埋め込みを生成している場合は、次の手順を実行して後継モデルに移行する。ダウンタイムを避けるため、新しい埋め込みを新しいフィールドに書き込み (write)ます。また、移行が完了するまでは、現在のフィールドとインデックスをそのまま維持します。

Embedding and Reranking API を使用して、既存のドキュメントに対して後継モデルを使用して新しい埋め込みを生成します。モデル API Key をお持ちでない場合は、API Key の作成 を参照してください。

次の例では、コレクション内の各ドキュメントからソース テキストを読み取り、後継モデルを使用して埋め込みをバッチするで生成し、その結果を新しいフィールドに書き込み (write)ます。

import os
import voyageai
from pymongo import MongoClient, UpdateOne
SUCCESSOR_MODEL = "<successor-model>"
TEXT_FIELD = "<source-text-field>"
NEW_EMBEDDING_FIELD = "<new-embedding-field>"
BATCH_SIZE = 100
vo = voyageai.Client()
# This automatically uses the VOYAGE_API_KEY environment variable.
client = MongoClient(os.environ["MONGODB_URI"])
collection = client["<database>"]["<collection>"]
def process_batch(documents):
texts = [document[TEXT_FIELD] for document in documents]
result = vo.embed(
texts,
model=SUCCESSOR_MODEL,
input_type="document"
)
collection.bulk_write([
UpdateOne(
{"_id": document["_id"]},
{"$set": {NEW_EMBEDDING_FIELD: embedding}}
)
for document, embedding in zip(documents, result.embeddings)
])
batch = []
for document in collection.find({}, {TEXT_FIELD: 1}):
batch.append(document)
if len(batch) == BATCH_SIZE:
process_batch(batch)
batch = []
if batch:
process_batch(batch)

リクエストをバッチ処理し、トークンの使用状況をモニターしてください。大規模なコーパスを再度埋め込むと、レート制限が超過する可能性があるためです。詳細については、「レート制限の管理」および「使用状況のモニター」を参照してください。

新しい埋め込みを保持するフィールド上に、新しい MongoDB ベクトル検索インデックスを作成します。numDimensions を、後継モデルが生成する次元の数に設定します。

{
"fields": [
{
"type": "vector",
"path": "<new-embedding-field>",
"numDimensions": "<successor-model-dimensions>",
"similarity": "dotProduct"
}
]
}

インデックスの作成方法については、「 MongoDB ベクトル検索インデックスの作成 」を参照してください。完全なインデックス定義構文については、 「ベクトル検索のフィールドにインデックスを作成する方法」 を参照してください。

新しいインデックスに付ける名前を心に留めておいてください。アプリケーション コードを更新するときに、それが必要です。クエリする前に、インデックスが READY ステータスになるまで待ってください。

アプリケーションを更新して、後続モデルでクエリ埋め込みを生成するようにします。クエリ埋め込みは保存された埋め込みと同じモデルから生成される必要があります。したがってアプリケーションが Embedding and Reranking API を呼び出すすべての場所でモデルを変更してください。

result = vo.embed(
[query_text],
model="<successor-model>",
input_type="query"
)

取得するには、input_type パラメーターをクエリの場合は query に、保存されたテキストの場合は document に設定します。Voyage AI は、入力にタスク固有のプロンプトを先頭に追加することで取得精度を向上させます。

構成ファイルまたは環境変数でモデル名を設定している場合は、その値を更新してください。また、スキーマ検証やベクトルストレージ設定など、埋め込みディメンションの数に依存するコードを更新します。

新しいインデックス名および新しい埋め込みフィールドパスを使用するようにクエリを更新し、その後、取得結果を確認します。新しいインデックスが期待される結果を返すことを確認したら、古いインデックスを削除し、ドキュメントから古い埋め込みフィールドを取り除きます。

埋め込みの生成について詳しく学ぶには、テキスト埋め込みを参照してください。