Claude Platform Docs
Messages模型功能

嵌入

文字嵌入是文字的數值表示,可用於衡量語意相似度。本指南介紹嵌入、其應用,以及如何將嵌入模型用於搜尋、推薦和異常偵測等任務。

實作嵌入之前

在選擇「embeddings」(嵌入)供應商時,您可以根據自身需求與偏好考量以下幾個因素:

  • 資料集大小與領域專精度:模型訓練資料集的大小,以及它與您想要嵌入之領域的相關性。較大或更具領域專精度的資料通常能產生更好的領域內嵌入
  • 推論效能:嵌入查詢速度與端到端「latency」(延遲)。對於大規模正式環境部署而言,這是特別重要的考量
  • 客製化:是否提供以私有資料持續訓練的選項,或針對非常特定領域進行模型專精化。這可以提升在獨特詞彙上的效能

如何透過 Anthropic 取得嵌入

Anthropic 並未提供自己的嵌入模型。Voyage AI 是一家擁有多樣選項與功能、涵蓋上述所有考量的嵌入供應商。

Voyage AI 打造最先進的嵌入模型,並針對金融與醫療等特定產業領域提供客製化模型,或為個別客戶提供量身打造的「fine-tuned」(微調)模型。

本指南其餘部分以 Voyage AI 為主,但您應評估多家嵌入供應商,以找出最適合您特定使用情境的選擇。

可用模型

Voyage 建議使用以下文字嵌入模型:

Voyage 4(最新一代)

模型上下文長度嵌入維度說明
voyage-4-large32,0001024(預設)、256、512、2048最佳的通用與多語言檢索品質。詳情請參閱 Voyage 4 部落格文章。
voyage-432,0001024(預設)、256、512、2048針對通用與多語言檢索品質最佳化。在品質與效率之間取得平衡。詳情請參閱 Voyage 4 部落格文章。
voyage-4-lite32,0001024(預設)、256、512、2048針對延遲與成本最佳化。詳情請參閱 Voyage 4 部落格文章。
voyage-4-nano32,0001024(預設)、256、512、2048開放權重模型(Apache 2.0 授權),可於 Hugging Face 取得。詳情請參閱 Voyage 4 部落格文章。

前一代

模型上下文長度嵌入維度說明
voyage-3-large32,0001024(預設)、256、512、2048最佳的通用與多語言檢索品質。詳情請參閱 voyage-3-large 部落格文章。
voyage-3.532,0001024(預設)、256、512、2048針對通用與多語言檢索品質最佳化。詳情請參閱 voyage-3.5 部落格文章。
voyage-3.5-lite32,0001024(預設)、256、512、2048針對延遲與成本最佳化。詳情請參閱 voyage-3.5 部落格文章。
voyage-code-332,0001024(預設)、256、512、2048針對程式碼檢索最佳化。詳情請參閱 voyage-code-3 部落格文章。
voyage-finance-232,0001024針對金融檢索與 RAG 最佳化。詳情請參閱 voyage-finance-2 部落格文章。
voyage-law-216,0001024針對法律與長上下文檢索與 RAG 最佳化。同時也提升了所有領域的效能。詳情請參閱 voyage-law-2 部落格文章。

此外,Voyage 建議使用以下多模態嵌入模型:

模型上下文長度嵌入維度說明
voyage-multimodal-3.532,0001024(預設)、256、512、2048功能豐富的多模態嵌入模型,可將交錯的文字、圖片與影片向量化。作為首個正式環境等級的影片嵌入模型,包含影片支援。詳情請參閱 voyage-multimodal-3.5 部落格文章。
voyage-multimodal-332,0001024功能豐富的多模態嵌入模型,可將交錯的文字與內容豐富的圖片向量化,例如 PDF 截圖、投影片、表格、圖表等。詳情請參閱 voyage-multimodal-3 部落格文章。

以下情境化區塊嵌入模型可產生區塊層級的向量,無需手動補充中繼資料即可捕捉完整的文件上下文。請使用 contextualized_embed() 而非 embed() 來呼叫這些模型:

模型上下文長度嵌入維度說明
voyage-context-4120,0001024(預設)、256、512、2048針對通用與多語言檢索品質最佳化的情境化區塊嵌入。詳情請參閱 voyage-context-4 部落格文章。
voyage-context-3120,0001024(預設)、256、512、2048針對通用與多語言檢索品質最佳化的情境化區塊嵌入。詳情請參閱 voyage-context-3 部落格文章。

Voyage AI 也提供「rerankers」(重新排序器),它接收一個查詢與一份文件清單,並依照與查詢的相關性排序後回傳。請使用 rerank() 呼叫這些模型:

模型上下文長度說明
rerank-2.532,000最高準確度。建議用於大多數應用。詳情請參閱 rerank-2.5 部落格文章。
rerank-2.5-lite32,000針對延遲與成本最佳化。詳情請參閱 rerank-2.5 部落格文章。

需要協助決定使用哪個文字嵌入模型嗎?請查看 Voyage AI 常見問題。

開始使用 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-4", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings 是一個包含兩個嵌入向量的清單,每個向量包含 1024 個浮點數。執行上述程式碼後,這兩個嵌入會印在螢幕上:

[-0.013131560757756233, 0.019828535616397858, ...]   # embedding for "Sample text 1"
[-0.0069352793507277966, 0.020878976210951805, ...]  # embedding for "Sample text 2"

建立嵌入時,您可以為 embed() 函式指定其他幾個引數。

如需更多關於 Voyage Python 套件的資訊,請參閱 Voyage Python 套件文件。

Voyage HTTP API

您也可以透過請求 Voyage HTTP API 來取得嵌入。例如,您可以在終端機中透過 curl 指令傳送 HTTP 請求:

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

您會收到的回應是一個包含嵌入與 token 用量的 JSON 物件:

{
  "object": "list",
  "data": [
    {
      "embedding": [-0.013131560757756233, 0.019828535616397858 /* ... */],
      "index": 0
    },
    {
      "embedding": [-0.0069352793507277966, 0.020878976210951805 /* ... */],
      "index": 1
    }
  ],
  "model": "voyage-4",
  "usage": {
    "total_tokens": 10
  }
}

如需更多關於 Voyage HTTP API 的資訊,請參閱 Voyage HTTP API 文件。

AWS Marketplace

Voyage 嵌入可於 AWS Marketplace 取得。在 AWS 上存取 Voyage 的說明請參閱 Voyage AWS Marketplace 文件。

快速入門範例

以下簡短範例展示如何使用嵌入。

假設您有一個包含六份文件的小型語料庫可供檢索

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-4", input_type="document").embeddings

嵌入讓您能在向量空間中進行語意搜尋/檢索。給定一個範例查詢,

query = "When is Apple's conference call scheduled?"

接著,將其轉換為嵌入,並進行最近鄰搜尋,根據嵌入空間中的距離找出最相關的文件。

import numpy as np

# 嵌入查詢
query_embd = vo.embed([query], model="voyage-4", 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" 分別用於嵌入文件與查詢。更多規格說明請參閱 Voyage Python 函式庫。

輸出為第五份文件,它確實是與查詢最相關的文件:

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?