埋め込み
埋め込みを実装する前に
埋め込みプロバイダーを選択する際、ニーズと好みに応じて考慮できるいくつかの要因があります:
- データセットサイズとドメイン特異性:モデル訓練データセットのサイズと、埋め込みたいドメインとの関連性。一般的に、より大きなまたはよりドメイン固有のデータは、より良いドメイン内埋め込みを生成します
- 推論パフォーマンス:埋め込み検索速度とエンドツーエンドレイテンシ。これは大規模な本番デプロイメントにとって特に重要な考慮事項です
- カスタマイゼーション:プライベートデータでの継続的な訓練、または非常に特定のドメインに対するモデルの特殊化のオプション。これは独特な語彙でのパフォーマンスを向上させることができます
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、スライド、テーブル、図などのスクリーンショットなど、インターリーブされたテキストとコンテンツリッチな画像をベクトル化できる豊富なマルチモーダル埋め込みモデル。詳細はブログ投稿をご覧ください。 |
どのテキスト埋め込みモデルを使用するかの決定にお困りですか?FAQをご確認ください。
Voyage AIを始める
Voyage埋め込みにアクセスするには:
- Voyage AIのウェブサイトでサインアップ
- APIキーを取得
- 便宜上、APIキーを環境変数として設定:
export VOYAGE_API_KEY="<your secret key>"公式のvoyageai PythonパッケージまたはHTTPリクエストのいずれかを使用して埋め込みを取得できます。以下で説明します。
Voyage Pythonライブラリ
voyageaiパッケージは以下のコマンドを使用してインストールできます:
pip install -U voyageaiその後、クライアントオブジェクトを作成し、テキストの埋め込みに使用を開始できます:
import voyageai
vo = voyageai.Client()
# これは自動的に環境変数VOYAGE_API_KEYを使用します。
# または、vo = voyageai.Client(api_key="<your secret key>")を使用できます
texts = ["Sample text 1", "Sample text 2"]
result = vo.embed(texts, model="voyage-3.5", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])result.embeddingsは、それぞれ1024個の浮動小数点数を含む2つの埋め込みベクトルのリストになります。上記のコードを実行すると、2つの埋め込みが画面に印刷されます:
[-0.013131560757756233, 0.019828535616397858, ...] # "Sample text 1"の埋め込み
[-0.0069352793507277966, 0.020878976210951805, ...] # "Sample text 2"の埋め込み埋め込みを作成する際、embed()関数にいくつかの他の引数を指定できます。
Voyage pythonパッケージの詳細については、Voyageドキュメントをご覧ください。
Voyage HTTP API
Voyage HTTP APIをリクエストして埋め込みを取得することもできます。例えば、ターミナルでcurlコマンドを通じてHTTPリクエストを送信できます:
curl https://api.voyageai.com/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $VOYAGE_API_KEY" \
-d '{
"input": ["Sample text 1", "Sample text 2"],
"model": "voyage-3.5"
}'取得するレスポンスは、埋め込みとトークン使用量を含むJSONオブジェクトです:
{
"object": "list",
"data": [
{
"embedding": [-0.013131560757756233, 0.019828535616397858, ...],
"index": 0
},
{
"embedding": [-0.0069352793507277966, 0.020878976210951805, ...],
"index": 1
}
],
"model": "voyage-3.5",
"usage": {
"total_tokens": 10
}
}
Voyage HTTP APIの詳細については、Voyageドキュメントをご覧ください。
AWS Marketplace
Voyage埋め込みはAWS Marketplaceで利用可能です。AWSでVoyageにアクセスするための手順はこちらで利用可能です。
クイックスタート例
埋め込みの取得方法がわかったので、簡単な例を見てみましょう。
検索対象の6つのドキュメントからなる小さなコーパスがあるとします
documents = [
"The Mediterranean diet emphasizes fish, olive oil, and vegetables, believed to reduce chronic diseases.",
"Photosynthesis in plants converts light energy into glucose and produces essential oxygen.",
"20th-century innovations, from radios to smartphones, centered on electronic advancements.",
"Rivers provide water, irrigation, and habitat for aquatic species, vital for ecosystems.",
"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.",
"Shakespeare's works, like 'Hamlet' and 'A Midsummer Night's Dream,' endure in literature."
]
まず、Voyageを使用してそれぞれを埋め込みベクトルに変換します
import voyageai
vo = voyageai.Client()
# ドキュメントを埋め込む
doc_embds = vo.embed(
documents, model="voyage-3.5", input_type="document"
).embeddings埋め込みにより、ベクトル空間でセマンティック検索/検索を行うことができます。例のクエリが与えられた場合、
query = "When is Apple's conference call scheduled?"これを埋め込みに変換し、埋め込み空間での距離に基づいて最も関連性の高いドキュメントを見つけるために最近傍検索を実行します。
import numpy as np
# クエリを埋め込む
query_embd = vo.embed(
[query], model="voyage-3.5", input_type="query"
).embeddings[0]
# 類似性を計算
# Voyage埋め込みは長さ1に正規化されているため、内積と
# コサイン類似度は同じです。
similarities = np.dot(doc_embds, query_embd)
retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])ドキュメントとクエリの埋め込みにそれぞれinput_type="document"とinput_type="query"を使用していることに注意してください。詳細な仕様はこちらで確認できます。
出力は5番目のドキュメントになり、これは実際にクエリに最も関連性があります:
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.ベクトルデータベースを含む埋め込みを使用したRAGの詳細なクックブックセットをお探しの場合は、RAGクックブックをご確認ください。
FAQ
価格
最新の価格詳細については、Voyageの価格ページをご覧ください。