埋め込みを実装する前に
埋め込みプロバイダーを選択する際、ニーズと好みに応じて考慮できるいくつかの要因があります:- データセットサイズとドメイン特異性:モデル訓練データセットのサイズと、埋め込みたいドメインとの関連性。一般的に、より大きなまたはよりドメイン固有のデータは、より良いドメイン内埋め込みを生成します
- 推論パフォーマンス:埋め込み検索速度とエンドツーエンドレイテンシ。これは大規模な本番デプロイメントにとって特に重要な考慮事項です
- カスタマイゼーション:プライベートデータでの継続的な訓練、または非常に特定のドメインに対するモデルの特殊化のオプション。これは独特な語彙でのパフォーマンスを向上させることができます
Anthropicで埋め込みを取得する方法
Anthropicは独自の埋め込みモデルを提供していません。上記のすべての考慮事項を包含する幅広い選択肢と機能を持つ埋め込みプロバイダーの一つがVoyage AIです。 Voyage AIは最先端の埋め込みモデルを作成し、金融や医療などの特定の業界ドメイン向けのカスタマイズされたモデル、または個別の顧客向けのオーダーメイドのファインチューニングされたモデルを提供しています。 このガイドの残りの部分はVoyage AI向けですが、特定のユースケースに最適な選択肢を見つけるために、さまざまな埋め込みベンダーを評価することをお勧めします。利用可能なモデル
Voyageは以下のテキスト埋め込みモデルの使用を推奨しています:| モデル | コンテキスト長 | 埋め込み次元 | 説明 |
|---|---|---|---|
voyage-3-large | 32,000 | 1024(デフォルト)、256、512、2048 | 最高の汎用および多言語検索品質。詳細はブログ投稿をご覧ください。 |
voyage-3.5 | 32,000 | 1024(デフォルト)、256、512、2048 | 汎用および多言語検索品質に最適化。詳細はブログ投稿をご覧ください。 |
voyage-3.5-lite | 32,000 | 1024(デフォルト)、256、512、2048 | レイテンシとコストに最適化。詳細はブログ投稿をご覧ください。 |
voyage-code-3 | 32,000 | 1024(デフォルト)、256、512、2048 | コード検索に最適化。詳細はブログ投稿をご覧ください。 |
voyage-finance-2 | 32,000 | 1024 | 金融検索とRAGに最適化。詳細はブログ投稿をご覧ください。 |
voyage-law-2 | 16,000 | 1024 | 法的および長いコンテキスト検索とRAGに最適化。すべてのドメインでのパフォーマンスも向上。詳細はブログ投稿をご覧ください。 |
| モデル | コンテキスト長 | 埋め込み次元 | 説明 |
|---|---|---|---|
voyage-multimodal-3 | 32000 | 1024 | PDF、スライド、テーブル、図などのスクリーンショットなど、インターリーブされたテキストとコンテンツリッチな画像をベクトル化できる豊富なマルチモーダル埋め込みモデル。詳細はブログ投稿をご覧ください。 |
Voyage AIを始める
Voyage埋め込みにアクセスするには:- Voyage AIのウェブサイトでサインアップ
- APIキーを取得
- 便宜上、APIキーを環境変数として設定:
voyageai PythonパッケージまたはHTTPリクエストのいずれかを使用して埋め込みを取得できます。以下で説明します。
Voyage Pythonライブラリ
voyageaiパッケージは以下のコマンドを使用してインストールできます:
result.embeddingsは、それぞれ1024個の浮動小数点数を含む2つの埋め込みベクトルのリストになります。上記のコードを実行すると、2つの埋め込みが画面に印刷されます:
embed()関数にいくつかの他の引数を指定できます。
Voyage pythonパッケージの詳細については、Voyageドキュメントをご覧ください。
Voyage HTTP API
Voyage HTTP APIをリクエストして埋め込みを取得することもできます。例えば、ターミナルでcurlコマンドを通じてHTTPリクエストを送信できます:
AWS Marketplace
Voyage埋め込みはAWS Marketplaceで利用可能です。AWSでVoyageにアクセスするための手順はこちらで利用可能です。クイックスタート例
埋め込みの取得方法がわかったので、簡単な例を見てみましょう。 検索対象の6つのドキュメントからなる小さなコーパスがあるとしますinput_type="document"とinput_type="query"を使用していることに注意してください。詳細な仕様はこちらで確認できます。
出力は5番目のドキュメントになり、これは実際にクエリに最も関連性があります:
FAQ
なぜVoyage埋め込みは優れた品質を持つのですか?
なぜVoyage埋め込みは優れた品質を持つのですか?
埋め込みモデルは、生成モデルと同様に、セマンティックコンテキストを捉えて圧縮するために強力なニューラルネットワークに依存しています。Voyageの経験豊富なAI研究者チームは、以下を含む埋め込みプロセスのすべてのコンポーネントを最適化しています:
- モデルアーキテクチャ
- データ収集
- 損失関数
- オプティマイザー選択
どの埋め込みモデルが利用可能で、どれを使用すべきですか?
どの埋め込みモデルが利用可能で、どれを使用すべきですか?
汎用埋め込みには、以下を推奨します:
voyage-3-large:最高品質voyage-3.5-lite:最低レイテンシとコストvoyage-3.5:競争力のある価格ポイントで優れた検索品質を持つバランスの取れたパフォーマンス
input_typeパラメータを使用してテキストがクエリかドキュメントタイプかを指定します。ドメイン固有モデル:- 法的タスク:
voyage-law-2 - コードとプログラミングドキュメント:
voyage-code-3 - 金融関連タスク:
voyage-finance-2
どの類似度関数を使用すべきですか?
どの類似度関数を使用すべきですか?
Voyage埋め込みは、内積類似度、コサイン類似度、またはユークリッド距離のいずれかで使用できます。埋め込み類似度についての説明はこちらで見つけることができます。Voyage AI埋め込みは長さ1に正規化されています。これは以下を意味します:
- コサイン類似度は内積類似度と等価であり、後者はより迅速に計算できます。
- コサイン類似度とユークリッド距離は同一のランキングをもたらします。
文字、単語、トークンの関係は何ですか?
文字、単語、トークンの関係は何ですか?
このページをご覧ください。
input_typeパラメータをいつ、どのように使用すべきですか?
input_typeパラメータをいつ、どのように使用すべきですか?
すべての検索タスクとユースケース(例:RAG)について、
input_typeパラメータを使用して入力テキストがクエリかドキュメントかを指定することを推奨します。input_typeを省略したり、input_type=Noneを設定したりしないでください。入力テキストがクエリかドキュメントかを指定することで、検索のためのより良い密なベクトル表現を作成でき、より良い検索品質につながります。input_typeパラメータを使用する際、埋め込み前に入力テキストに特別なプロンプトが前置されます。具体的には:📘input_typeに関連するプロンプト
- クエリの場合、プロンプトは「Represent the query for retrieving supporting documents: 」です。
- ドキュメントの場合、プロンプトは「Represent the document for retrieval: 」です。
- 例
input_type="query"の場合、「When is Apple’s conference call scheduled?」のようなクエリは「Represent the query for retrieving supporting documents: When is Apple’s conference call scheduled?」になります。input_type="document"の場合、「Apple’s conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.」のようなクエリは「Represent the document for retrieval: Apple’s conference call to discuss fourth fiscal quarter results and business updates is scheduled for Thursday, November 2, 2023 at 2:00 p.m. PT / 5:00 p.m. ET.」になります。
voyage-large-2-instructは、名前が示すように、入力テキストに前置される追加の指示に応答するように訓練されています。分類、クラスタリング、または他のMTEBサブタスクについては、こちらの指示を使用してください。どの量子化オプションが利用可能ですか?
どの量子化オプションが利用可能ですか?
埋め込みでの量子化は、32ビット単精度浮動小数点数などの高精度値を、8ビット整数や1ビットバイナリ値などの低精度フォーマットに変換し、ストレージ、メモリ、コストをそれぞれ4倍と32倍削減します。サポートされているVoyageモデルは、
output_dtypeパラメータで出力データ型を指定することで量子化を有効にします:float:返される各埋め込みは32ビット(4バイト)単精度浮動小数点数のリストです。これはデフォルトで、最高の精度/検索精度を提供します。int8とuint8:返される各埋め込みは、それぞれ-128から127と0から255の範囲の8ビット(1バイト)整数のリストです。binaryとubinary:返される各埋め込みは、ビットパックされた量子化された単一ビット埋め込み値を表す8ビット整数のリストです:binaryの場合はint8、ubinaryの場合はuint8。返される整数のリストの長さは、埋め込みの実際の次元の1/8です。バイナリタイプはオフセットバイナリ方法を使用し、以下のFAQで詳しく学ぶことができます。
バイナリ量子化の例 以下の8つの埋め込み値を考えてみてください:-0.03955078、0.006214142、-0.07446289、-0.039001465、0.0046463013、0.00030612946、-0.08496094、0.03994751。バイナリ量子化では、ゼロ以下の値はバイナリゼロに量子化され、正の値はバイナリ1に量子化され、以下のバイナリシーケンスになります:0、1、0、0、1、1、0、1。これらの8ビットは単一の8ビット整数01001101にパックされます(左端のビットが最上位ビット)。
ubinary:バイナリシーケンスは直接変換され、符号なし整数(uint8)77として表現されます。binary:バイナリシーケンスは、オフセットバイナリ方法を使用して計算された符号付き整数(int8)-51として表現されます(77 - 128 = -51)。
Matryoshka埋め込みをどのように切り詰めることができますか?
Matryoshka埋め込みをどのように切り詰めることができますか?
Matryoshka学習は、単一のベクトル内で粗から細への表現を持つ埋め込みを作成します。複数の出力次元をサポートする
voyage-code-3などのVoyageモデルは、このようなMatryoshka埋め込みを生成します。次元の先頭サブセットを保持することで、これらのベクトルを切り詰めることができます。例えば、以下のPythonコードは1024次元ベクトルを256次元に切り詰める方法を示しています: