エンベディングプロバイダーを選択する際、ニーズや好みに応じて考慮できるいくつかの要素があります:
Anthropicは独自のエンベディングモデルを提供していません。上記のすべての考慮事項を網羅する幅広いオプションと機能を持つエンベディングプロバイダーの1つが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エンベディングにアクセスするには:
export VOYAGE_API_KEY="<your secret key>"以下に説明するように、公式のvoyageai PythonパッケージまたはHTTPリクエストを使用してエンベディングを取得できます。
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は2つのエンベディングベクトルのリストで、それぞれ1024個の浮動小数点数を含みます。上記のコードを実行すると、2つのエンベディングが画面に表示されます:
[-0.013131560757756233, 0.019828535616397858, ...] # "Sample text 1"のエンベディング
[-0.0069352793507277966, 0.020878976210951805, ...] # "Sample text 2"のエンベディングエンベディングを作成する際、embed()関数にいくつかの他の引数を指定できます。
Voyage Pythonパッケージの詳細については、Voyageドキュメントをご覧ください。
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ドキュメントをご覧ください。
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クックブックをご覧ください。
最新の料金詳細については、Voyageの料金ページをご覧ください。
Was this page helpful?