Claude Platform Docs
Messages模型功能

嵌入

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

實作嵌入之前

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

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

如何透過 Anthropic 取得嵌入

Anthropic 並未提供自己的嵌入模型。MongoDB 旗下的 Voyage AI 是一家提供多種模型和功能的嵌入供應商。

Voyage AI 開發嵌入模型和「reranker」(重新排序器)。其嵌入模型包括通用、多模態、情境化以及領域專用的模型。

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

可用模型

Voyage AI 提供以下文字嵌入模型:

最新世代

模型上下文長度嵌入維度說明
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-code-432,0001024(預設)、256、512、2048針對程式碼檢索和代理式程式設計應用進行最佳化。詳情請參閱 voyage-code-4 部落格文章。
voyage-4-nano32,0002048(預設)、256、512、1024開放權重模型(Apache 2.0 授權),您可從 Hugging Face 下載並自行執行。無法透過 Atlas Embedding and Reranking API 使用。詳情請參閱 Voyage 4 部落格文章。

前一代

關於各模型的生命週期狀態和建議的替代模型,請參閱 MongoDB 文件中的 Model deprecations, lifecycle states, and support。

模型上下文長度嵌入維度說明
voyage-3-large32,0001024(預設)、256、512、2048voyage-4-large 的前一世代。詳情請參閱 voyage-3-large 部落格文章。
voyage-3.532,0001024(預設)、256、512、2048voyage-4 的前一世代。詳情請參閱 voyage-3.5 部落格文章。
voyage-3.5-lite32,0001024(預設)、256、512、2048voyage-4-lite 的前一世代。詳情請參閱 voyage-3.5 部落格文章。
voyage-code-332,0001024(預設)、256、512、2048voyage-code-4 的前一世代。詳情請參閱 voyage-code-3 部落格文章。
voyage-finance-232,0001024針對金融檢索和 RAG 進行最佳化。詳情請參閱 voyage-finance-2 部落格文章。
voyage-law-216,0001024針對法律檢索和 RAG 進行最佳化。詳情請參閱 voyage-law-2 部落格文章。

此外,Voyage AI 還提供以下多模態嵌入模型。請使用 multimodal_embed() 而非 embed() 來呼叫這些模型:

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

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

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

120,000 個 token 的上限適用於您將 enable_auto_chunking 設為 true 時。否則,所有輸入的 token 總數不得超過 32,000。

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

模型上下文長度說明
rerank-332,000最高準確度。建議用於大多數應用。詳情請參閱 rerank-3 部落格文章。
rerank-3-lite32,000針對延遲和成本進行最佳化。詳情請參閱 rerank-3 部落格文章。
rerank-2.532,000rerank-3 的前一世代。詳情請參閱 rerank-2.5 部落格文章。
rerank-2.5-lite32,000rerank-3-lite 的前一世代。詳情請參閱 rerank-2.5 部落格文章。

需要協助決定使用哪個模型嗎?請參閱 MongoDB 文件中的 Voyage AI embedding and reranking models overview。

開始使用 Voyage AI

若要存取 Voyage AI 模型,請在 MongoDB Atlas 中建立模型 API 金鑰:

  1. 註冊 MongoDB Atlas 帳戶,或登入。
  2. 在您的 Atlas 專案中,於導覽列選擇 AI Model APIs,點擊 Create model API key,為金鑰命名,然後點擊 Create。
  3. 為方便起見,將 API 金鑰設定為環境變數:
export VOYAGE_API_KEY="<your model API key>"

更多詳細資訊,請參閱 MongoDB 文件中的 Voyage AI quick start。

您可以使用官方的 voyageai Python 套件或 HTTP 請求來取得嵌入,如以下各節所述。Voyage AI 也有官方的 TypeScript 用戶端。若要搭配 Atlas 的模型 API 金鑰使用,請將其 environment 選項設為 https://ai.mongodb.com/v1,如 MongoDB 文件中的 TypeScript client 所述。

Voyage AI Python 函式庫

使用以下指令安裝 voyageai 套件。若要使用 Atlas 的模型 API 金鑰,您需要 0.3.7 或更新版本。

pip install -U voyageai

接著,您可以建立一個用戶端物件,並開始用它來嵌入您的文字:

import voyageai

vo = voyageai.Client()
# 這會自動使用環境變數 VOYAGE_API_KEY。
# 或者,您也可以使用 vo = voyageai.Client(api_key="<your model API 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() 函式指定其他幾個引數。

關於 Python 套件的更多資訊,請參閱 MongoDB 文件中的 Accessing Voyage AI models。

Voyage AI HTTP API

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

cURL
curl https://ai.mongodb.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",
    "input_type": "document"
  }'

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

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

Atlas 的模型 API 金鑰可搭配 ai.mongodb.com 使用,但限定於特定地理區域的金鑰除外,這類金鑰會使用該地理區域的端點。如果您持有的是 Voyage AI 平台的 API 金鑰,請參閱 MongoDB 文件中的 Migrate your applications to use the Atlas Embedding and Reranking API。

完整的請求和回應參考資料,請參閱 Atlas Embedding and Reranking API 文件中的 Create text embeddings。

AWS Marketplace

Voyage AI 模型也可透過 MongoDB 的賣家頁面在 AWS Marketplace 上取得。相關說明請參閱 MongoDB 文件中的 Deploy Voyage AI models using 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 AI 將每份文件轉換為嵌入向量。

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 AI 的嵌入向量已正規化為長度 1,因此內積(dot-product)
# 與餘弦相似度(cosine similarity)相同。
similarities = np.dot(doc_embds, query_embd)

retrieved_id = np.argmax(similarities)
print(documents[retrieved_id])

請注意,input_type="document" 和 input_type="query" 分別用於嵌入文件和查詢。關於 input_type 的更多資訊,請參閱常見問題中的何時以及如何使用 input_type 參數?。

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

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 範例。

常見問題

定價

如需最新的定價詳情,請參閱 MongoDB 文件中的 Model pricing。

Was this page helpful?