エンベディングを実装する前に

エンベディングプロバイダーを選択する際、ニーズと好みに応じて考慮すべき要因がいくつかあります:

  • データセットのサイズとドメインの特異性:モデルの学習データセットのサイズと、エンベッドしたいドメインとの関連性。より大きなデータセットや、より特定のドメインに特化したデータは、一般的にドメイン内でより良いエンベディングを生成します
  • 推論パフォーマンス:エンベディングの検索速度とエンドツーエンドのレイテンシー。これは特に大規模な本番環境での展開において重要な考慮事項です
  • カスタマイズ:プライベートデータでの継続的なトレーニング、または非常に特定のドメイン向けのモデルの特殊化のオプション。これにより、独自の語彙に対するパフォーマンスを向上させることができます

Anthropicでエンベディングを取得する方法

Anthropicは独自のエンベディングモデルを提供していません。上記の考慮事項をすべて網羅する幅広いオプションと機能を持つエンベディングプロバイダーの1つがVoyage AIです。

Voyage AIは最先端のエンベディングモデルを提供し、金融や医療などの特定の業界ドメイン向けのカスタマイズされたモデル、または個々の顧客向けにカスタマイズされた微調整モデルを提供しています。

このガイドの残りの部分はVoyage AIについてですが、特定のユースケースに最適なものを見つけるために、さまざまなエンベディングベンダーを評価することをお勧めします。

利用可能なモデル

Voyageは以下のテキストエンベディングモデルの使用を推奨しています:

モデルコンテキスト長エンベディング次元説明
voyage-3-large32,0001024(デフォルト)、256、512、2048最高の汎用および多言語検索品質。
voyage-332,0001024汎用および多言語検索品質に最適化。詳細はブログ記事をご覧ください。
voyage-3-lite32,000512レイテンシーとコストに最適化。詳細はブログ記事をご覧ください。
voyage-code-332,0001024(デフォルト)、256、512、2048コード検索に最適化。詳細はブログ記事をご覧ください。
voyage-finance-232,0001024金融検索とRAGに最適化。詳細はブログ記事をご覧ください。
voyage-law-216,0001024法律および長文コンテキスト検索とRAGに最適化。すべてのドメインでパフォーマンスが向上。詳細はブログ記事をご覧ください。

さらに、以下のマルチモーダルエンベディングモデルが推奨されています:

モデルコンテキスト長エンベディング次元説明
voyage-multimodal-3320001024PDFのスクリーンショット、スライド、表、図などのテキストとコンテンツが豊富な画像を組み合わせてベクトル化できる豊かなマルチモーダルエンベディングモデル。詳細はブログ記事をご覧ください。

どのテキストエンベディングモデルを使用すべきか迷っていますか?FAQをご確認ください。

Voyage AIを始める

Voyageエンベディングにアクセスするには:

  1. Voyage AIのウェブサイトでサインアップ
  2. APIキーを取得
  3. 便宜上、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", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddingsは、それぞれ1024個の浮動小数点数を含む2つのエンベディングベクトルのリストになります。上記のコードを実行すると、2つのエンベディングが画面に表示されます:

[0.02012746, 0.01957859, ...]  # "Sample text 1"のエンベディング
[0.01429677, 0.03077182, ...]  # "Sample text 2"のエンベディング

エンベディングを作成する際、embed()関数に他のいくつかの引数を指定することもできます。仕様の詳細はこちらをご覧ください

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"
  }'

レスポンスとして、エンベディングとトークン使用量を含むJSONオブジェクトが返されます:

{
  "object": "list",
  "data": [
    {
      "embedding": [0.02012746, 0.01957859, ...],
      "index": 0
    },
    {
      "embedding": [0.01429677, 0.03077182, ...],
      "index": 1
    }
  ],
  "model": "voyage-3",
  "usage": {
    "total_tokens": 10
  }
}

エンベディングエンドポイントの詳細については、Voyageのドキュメントをご覧ください。

AWS Marketplace

VoyageエンベディングはAWS Marketplaceでも利用可能です。AWSでのVoyageへのアクセス手順はこちらで確認できます。

クイックスタート例

エンベディングの取得方法がわかったところで、簡単な例を見てみましょう。

6つの文書からなる小さなコーパスから検索を行うとします:

documents = [
    "地中海式食事は魚、オリーブオイル、野菜を重視し、慢性疾患を減らすと考えられています。",
    "植物の光合成は光エネルギーをグルコースに変換し、必要不可欠な酸素を生成します。",
    "20世紀のイノベーションは、ラジオからスマートフォンまで、電子技術の進歩を中心に展開されました。",
    "河川は水、灌漑、水生生物の生息地を提供し、生態系にとって重要です。",
    "Appleの第4四半期の業績と事業アップデートに関するカンファレンスコールは、2023年11月2日木曜日午後2時(PT)/午後5時(ET)に予定されています。",
    "シェイクスピアの作品「ハムレット」や「真夏の夜の夢」などは、文学の中で生き続けています。"
]

まず、Voyageを使用してそれぞれをエンベディングベクトルに変換します:

import voyageai

vo = voyageai.Client()

# 文書をエンベッド
doc_embds = vo.embed(
    documents, model="voyage-3", input_type="document"
).embeddings

エンベディングにより、ベクトル空間での意味的検索/検索が可能になります。例えばこのようなクエリがあるとします:

query = "Appleのカンファレンスコールはいつ予定されていますか?"

これをエンベディングに変換し、エンベディング空間での距離に基づいて最も関連性の高い文書を見つけるために最近傍検索を行います。

import numpy as np

# クエリをエンベッド
query_embd = vo.embed(
    [query], model="voyage-3", 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の第4四半期の業績と事業アップデートに関するカンファレンスコールは、2023年11月2日木曜日午後2時(PT)/午後5時(ET)に予定されています。

ベクターデータベースを含むエンベディングを使用したRAGの詳細なクックブックをお探しの場合は、RAGクックブックをご覧ください。

FAQ

価格

最新の価格詳細については、Voyageの価格ページをご覧ください。