在實施嵌入向量之前

在選擇嵌入向量提供商時,根據您的需求和偏好,可以考慮以下幾個因素:

  • 數據集大小和領域特異性: 模型訓練數據集的大小及其與您要嵌入的領域的相關性。更大或更具領域特異性的數據通常會產生更好的領域內嵌入效果
  • 推理性能: 嵌入查找速度和端到端延遲。這對於大規模生產部署來說是一個特別重要的考慮因素
  • 自定義: 在私有數據上繼續訓練的選項,或針對特定領域的模型專門化。這可以提高在獨特詞彙表上的性能

如何使用 Anthropic 獲取嵌入向量

Anthropic 不提供自己的嵌入模型。Voyage AI 是一個涵蓋上述所有考慮因素的嵌入向量提供商,具有多種選項和功能。

Voyage AI 提供最先進的嵌入模型,並為金融和醫療保健等特定行業領域提供定制模型,或為個別客戶提供定制微調模型。

本指南的其餘部分是關於 Voyage AI 的,但我們建議您評估各種嵌入向量供應商,以找到最適合您特定用例的供應商。


Voyage AI 入門

查看我們的嵌入向量筆記本以了解 Voyage AI 實現示例。

要訪問 Voyage 嵌入向量:

  1. Voyage AI 的網站上註冊
  2. 獲取 API 密鑰
  3. 為方便起見,將 API 密鑰設置為環境變量:
Python
export VOYAGE_API_KEY="<your secret key>"

您可以通過使用官方 voyageai Python 包或 HTTP 請求來運行嵌入向量,如下所述。

Voyage Python 包

可以使用以下命令安裝 voyageai 包:

Python
pip install -U voyageai

然後,您可以創建一個客戶端對象並開始使用它來嵌入您的文本:

Python
import voyageai

vo = voyageai.Client()
# This will automatically use the environment variable VOYAGE_API_KEY.
# Alternatively, you can use vo = voyageai.Client(api_key="<your secret key>")

texts = ["Sample text 1", "Sample text 2"]

result = vo.embed(texts, model="voyage-2", input_type="document")
print(result.embeddings[0])
print(result.embeddings[1])

result.embeddings 將是一個包含兩個嵌入向量的列表,每個向量包含 1024 個浮點數。

運行上述代碼後,兩個嵌入向量將顯示在屏幕上:

Python
[0.02012746, 0.01957859, ...]  # embedding for "Sample text 1"
[0.01429677, 0.03077182, ...]  # embedding for "Sample text 2"

在創建嵌入向量時,您可以為 embed() 函數指定其他幾個參數。以下是規範:

voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)

  • texts (List[str]) - 作為字符串列表的文本列表,例如 ["I like cats", "I also like dogs"]。目前,列表的最大長度為 128,列表中的總標記數對於 voyage-2 最多為 320K,對於 voyage-large-2/voyage-code-2 最多為 120K。
  • model (str) - 模型名稱。推薦選項:voyage-2voyage-large-2voyage-code-2
  • input_type (str, 可選,默認為 None) - 輸入文本的類型。默認為 None。其他選項:querydocument
    • 當 input_type 設置為 None 時,輸入文本將直接由 Voyage 的嵌入模型編碼。或者,當輸入是文檔或查詢時,用戶可以將 input_type 指定為 querydocument。在這種情況下,Voyage 將在輸入文本前添加特殊提示,並將擴展的輸入發送到嵌入模型
    • 對於檢索/搜索用例,我們建議在編碼查詢或文檔時指定此參數以提高檢索質量。使用和不使用 input_type 參數生成的嵌入向量是兼容的
  • truncation (bool, 可選,默認為 None) - 是否將輸入文本截斷以適應上下文長度。
    • 如果為 True,超長輸入文本將被截斷以適應上下文長度,然後由嵌入模型向量化
    • 如果為 False,當任何給定文本超過上下文長度時將引發錯誤
    • 如果未指定(默認為 None),如果輸入文本略微超過上下文窗口長度,Voyage 將在將其發送到嵌入模型之前截斷輸入文本。如果它顯著超過上下文窗口長度,將引發錯誤

Voyage HTTP API

您也可以通過請求 Voyage HTTP API 獲取嵌入向量。例如,您可以通過終端中的 curl 命令發送 HTTP 請求:

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

您將收到一個包含嵌入向量和標記使用情況的 JSON 對象:

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

Voyage AI 的嵌入端點是 https://api.voyageai.com/v1/embeddings(POST)。請求標頭必須包含 API 密鑰。請求主體是一個包含以下參數的 JSON 對象:

  • input (str, List[str]) - 單個文本字符串,或作為字符串列表的文本列表。目前,列表的最大長度為 128,列表中的總標記數對於 voyage-2 最多為 320K,對於 voyage-large-2/voyage-code-2 最多為 120K。
  • model (str) - 模型名稱。推薦選項:voyage-2voyage-large-2voyage-code-2
  • input_type (str, 可選,默認為 None) - 輸入文本的類型。默認為 None。其他選項:querydocument
  • truncation (bool, 可選,默認為 None) - 是否將輸入文本截斷以適應上下文長度
    • 如果為 True,超長輸入文本將在被嵌入模型向量化之前截斷以適應上下文長度
    • 如果為 False,當任何給定文本超過上下文長度時將引發錯誤
    • 如果未指定(默認為 None),如果輸入文本略微超過上下文窗口長度,Voyage 將在將其發送到嵌入模型之前截斷輸入文本。如果它顯著超過上下文窗口長度,將引發錯誤
  • encoding_format (str, 可選,默認為 None) - 嵌入向量的編碼格式。Voyage 目前支持兩個選項:
    • 如果未指定(默認為 None):嵌入向量表示為浮點數列表
    • "base64":嵌入向量壓縮為 Base64 編碼

Voyage 嵌入向量示例

現在我們知道了如何使用 Voyage 獲取嵌入向量,讓我們通過一個簡短的示例來看看它的實際應用。

假設我們有一個包含六個文檔的小型語料庫可供檢索

Python
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 將每個文檔轉換為嵌入向量

Python
import voyageai

vo = voyageai.Client()

# Embed the documents
doc_embds = vo.embed(
    documents, model="voyage-2", input_type="document"
).embeddings

嵌入向量將允許我們在向量空間中進行語義搜索/檢索。然後我們可以將一個示例查詢,

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

轉換為嵌入向量,然後進行最近鄰搜索,根據嵌入空間中的距離找到最相關的文檔。

Python
import numpy as np

# Embed the query
query_embd = vo.embed(
    [query], model="voyage-2", input_type="query"
).embeddings[0]

# Compute the similarity
# Voyage embeddings are normalized to length 1, therefore dot-product
# and cosine similarity are the same.
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.

可用的 Voyage 模型

Voyage 推薦使用以下嵌入模型:

模型上下文長度嵌入維度描述
voyage-large-2160001536Voyage AI 最強大的通用嵌入模型。
voyage-code-2160001536針對代碼檢索進行優化(比替代方案好 17%),並且在通用語料庫上也達到了最先進水平。詳情請參見這篇 Voyage 博客文章
voyage-240001024基礎通用嵌入模型,針對延遲和質量進行優化。
voyage-lite-02-instruct40001024指令微調用於分類、聚類和句子文本相似度任務,這些是此模型唯一推薦的使用場景。

voyage-2voyage-large-2 是通用嵌入模型,在各個領域都能達到最先進的性能,並保持高效率。voyage-code-2 針對代碼領域進行了優化,提供了 4 倍的上下文長度以實現更靈活的使用,儘管延遲相對較高。

Voyage 正在積極開發更先進和專門化的模型,並提供微調服務以為個別客戶定制專屬模型。有關專屬模型的更多信息,請聯繫您的 Anthropic 客戶經理或聯繫 Anthropic 支持。

  • voyage-finance-2:即將推出
  • voyage-law-2:即將推出
  • voyage-multilingual-2:即將推出
  • voyage-healthcare-2:即將推出

AWS Marketplace 上的 Voyage

Voyage 嵌入向量也可在 AWS Marketplace 上使用。以下是在 AWS 上訪問 Voyage 的說明:

  1. 訂閱模型包
    1. 導航到模型包列表頁面並選擇要部署的模型
    2. 點擊 Continue to subscribe 按鈕
    3. 仔細查看 Subscribe to this software 頁面上的詳細信息。如果您同意標準最終用戶許可協議 (EULA)、定價和支持條款,請點擊 “Accept Offer”
    4. 選擇 Continue to configuration 並選擇區域後,您將看到一個 Product Arn。這是使用 Boto3 創建可部署模型所需的模型包 ARN
      1. 複製與您選擇的區域相對應的 ARN,並在後續單元格中使用它
  2. 部署模型包

從這裡開始,在 Sagemaker Studio 中創建一個 JupyterLab 空間,上傳 Voyage 的筆記本,並按照其中的說明進行操作。


常見問題


定價

訪問 Voyage 的定價頁面以獲取最新的定價詳情。