埋め込みベクトルモデルは、あなたの検索システムがどの程度の情報を抽出できるかを決定します。これは入力をそれぞれのベクトルに圧縮し、関連するものを近くに配置することで、語義に基づいて検索を行うことを可能にします。このため、どのモデルを選ぶかは常にRAG、多言語ドキュメントベース、コードリポジトリ、および画像とテキストのコレクションにおいて異なる課題となります。OpenRouterは9月11日に自社の埋め込みモデル一覧を確認し、37項目をカバーし、embeddings APIを通じて19のモデルに一括リクエストを送信し、28項目のテストを実施しました。その実測ガイドによって、選定の論理が明確になりました。

最も実用的な結論は、シナリオに応じて候補者を分けることです。英語向けRAGでは、openai/text-embedding-3-smallがデフォルトで使用されます。これは価格が低く、コンテキストが8192トークン、次元も調整可能です。入力が8192トークンを超える場合や、Voyage4の各レベル間で切り替えたいがインデックスを再構築したくない場合は、voyage-4-largeを使用してください。これは32000トークンのコンテキストと4つの選択可能な次元を提供し、他のVoyage4の階層と互換性があります。オープンな重みを求める場合は、qwen3-embedding-8bがより長いコンテキスト窓と低いプロンプト価格を提供します。多言語検索にはqwen3-embedding-8b(オープンな重み、100種類以上の言語対応)を使用し、コード検索にはvoyage-code-4、テキストと画像検索にはgoogle/gemini-embedding-2またはvoyage-multimodal-3.5を使用してください。有料テキストの中で最も安価なのはperplexity/pplx-embed-v1-0.6bで、100万トークンあたり0.004ドルです。無料テキストはnvidia/nemotron-3-embed-1b:freeで、32768トークンのコンテキストをサポートしています。

image.png

参加モデルを一覧表に並べることで、違いが明確になります。text-embedding-3-smallはテキストで、8192トークンのコンテキスト、1536次元、100万トークンあたり0.02ドル、非公開です。3-largeは同じ8192トークンのコンテキストですが、3072次元で、0.13ドルです。Voyage4シリーズは統一されています:lite、standard、large、code-4、multimodal-3.5はすべて32000トークンのコンテキストと1024次元で、価格は0.02から0.12ドルまで異なり、すべて非公開です。Qwen3Embedding8Bはテキストで、32768トークンのコンテキスト、4096次元、100万トークンあたり0.01ドルで、オープンな重みを備えています。4B版は2560次元で、0.02ドルです。Perplexityの0.6Bと4Bはそれぞれ1024次元で0.004ドル、2560次元で0.03ドルで、どちらもオープンです。Gemini Embedding2はテキストと画像に対応し、8192トークンのコンテキスト、3072次元で、テキストは100万トークンあたり0.20ドル、画像は0.45ドルで、非公開です。NVIDIAの無料ルーティングは32768トークンのコンテキスト、2048次元、34種類の言語をカバーしています。目録にはbge-m3、mistral-embed、codestral-embedなどの代替案もありますが、ガイドラインでは主にこれらのモデルをテストしています。

実際のテスト方法についても言及する価値があります。OpenRouterは19のモデルに2つの文字列のバッチリクエストを送信し、バッチ入力、設定可能な次元、画像入力、テキスト+画像、エラーハンドリングを含む28項目のチェックを行いました。16の有料モデルはすべての入力に対して安定してベクトルを返しました。dimensionsパラメータはOpenAI 3 Small、Gemini 2、Voyage4 Largeで効果がありました。例えば、256または512に設定すると、実際にその長さのベクトルが返されます。存在しないモデルにリクエストを送ると、400エラーが返され、モデルが存在しないことが表示されます。ただし、境界線をはっきりさせる必要があります:これらのチェックはリクエストとレスポンスの動作を確認したものであり、検索品質を確認したものではありません。レスポンスタイムは除外されています。なぜなら、各モデルのサービス条件が異なるためです。3つの無料ルーティングはテストアカウントで404エラーを返しました。理由は、そのアカウントのプライバシー設定で無料モデルのプロンプトトレーニングを許可していないためです。これは開発者にとって重要なポイントです。無料オプション、ワークスペースの制限、またはprovider.data_collectionをdenyに設定している場合、このようなリクエストは直接404エラーを返す可能性があります。

具体的なシナリオに落とし込むと、英語向けRAGでは、最初は1536次元のSmallを使用し、Largeの半分です。初めて評価するときはデフォルトを保持し、ストレージや検索コストがボトルネックになるまで縮小を考慮しません。dimensions=256を設定することで、さらにベクトルを圧縮できますが、検索品質に悪影響を与える可能性があるため、既存のインデックスを変更する前に必ず試す必要があります。Voyage4シリーズは256、512、1024、2048の4つの次元をサポートしており、公式に4シリーズのベクトルが相互に互換性があることを示しており、次元を変更してもインデックスを再構築する必要はありません。多言語の場合は、Qwen3Embedding8Bは4096次元をデフォルトで返し、MTEB多言語スコアは70.58を報告しています。4B版は2560次元で、リソースを節約できます。bge-m3は第二のオープンな多言語オプションで、8192トークンのコンテキスト、1024次元です。コード検索ではvoyage-code-4が最適で、codestral-embed-2505と比較できます。CoIRベンチマークを使って横断的に比較できます。画像とテキストの検索では、Gemini Embedding2は両方の入力を同じベクトル空間に入れ、64×64のPNGは258トークンで、費用は0.000128ドルです。voyage-multimodal-3.5も同様に検証されており、64×64のPNGは89トークンで、費用は0.00003ドルですが、両者のベクトル空間は異なるため、インデックスを作成する前には一度決めなければなりません。

評価に関してOpenRouterの提案は控えめです:同じ語彙、クエリ、関連性タグ、ブロック、指標を用い、モデルのみを変更し、それ以外はすべて固定することで、結果を比較可能にします。英語向けRAGでは、512から1024トークンのブロックから始めて、複数のブロックに関連性を評価する際にnDCGを使用します。多言語では、それぞれの言語ごとに報告し、平均値が弱点を隠してしまうことを防ぎます。コード検索では、問題説明を解決するファイルとブロックにマッピングします。ストレージコストも計算に入れる必要があります:4096次元のfloat32ベクトル100万個は約16.4GBを占め、1024次元の場合は約4.1GBです。式はベクトル数 × 次元 × 各値のバイト数で、目標を満たす最小次元を選ぶのが最も経済的です。

最後に、鉄則があります:異なるモデルファミリーのベクトルは座標空間を共有できません。3-smallで作成されたインデックスは、必ずしもそれに該当するクエリベクトルを生成しなければなりません。モデルを混ぜると、信頼性の低い結果を得るだけです。Gemini2と001も異なる空間を持ち、切り替えるにはインデックスを再構築する必要があります。唯一文書化されている例外は、Voyage4ファミリー内の互換性で、次元を変更する前にサンプルで検索品質を検証する必要があります。展開する際には、モデルのslug、出力次元、プロンプト形式、作成日をインデックスのメタデータとして一緒に保存しておくことを忘れないでください。これにより、後の設定の照合が容易になります。また、一般的な質問にも答えています。モデルを変更するには、通常すべての語彙を再埋め込みする必要があります。最速のモデルは遅延のベンチマークを実施していません。ada-002は新しいインデックスのデフォルトではなく、無料ルーティングが404エラーになる場合は、プライバシー設定を確認してください。このガイドラインは、検索システムを構築中の開発者にとって非常に価値があり、試行錯誤のコストを大幅に削減することができます。