在實施嵌入向量之前

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

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

如何通過 Anthropic 獲取嵌入向量

Anthropic 並不提供自己的嵌入模型。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-3320001024豐富的多模態嵌入模型,可以向量化交錯的文本和內容豐富的圖像,如 PDF 截圖、幻燈片、表格、圖表等。詳情請參閱博客文章

需要幫助決定使用哪個文本嵌入模型?查看常見問題

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 = ["示例文本 1", "示例文本 2"]

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

result.embeddings 將是一個包含兩個嵌入向量的列表,每個向量包含 1024 個浮點數。運行上述代碼後,兩個嵌入向量將顯示在屏幕上:

[0.02012746, 0.01957859, ...]  # "示例文本 1" 的嵌入向量
[0.01429677, 0.03077182, ...]  # "示例文本 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": ["示例文本 1", "示例文本 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 的說明可在此處獲得。

快速入門示例

現在我們知道如何獲取嵌入向量,讓我們看一個簡短的示例。

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

documents = [
    "地中海飲食強調魚類、橄欖油和蔬菜,被認為可以減少慢性疾病。",
    "植物的光合作用將光能轉化為葡萄糖並產生必需的氧氣。",
    "20世紀的創新,從收音機到智能手機,都圍繞著電子技術的進步。",
    "河流提供水源、灌溉和水生物種的棲息地,對生態系統至關重要。",
    "Apple 將於 2023 年 11 月 2 日星期四太平洋時間下午 2:00 / 東部時間下午 5:00 舉行第四財季業績和業務更新電話會議。",
    "莎士比亞的作品,如《哈姆雷特》和《仲夏夜之夢》,在文學中經久不衰。"
]

我們首先使用 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 將於 2023 年 11 月 2 日星期四太平洋時間下午 2:00 / 東部時間下午 5:00 舉行第四財季業績和業務更新電話會議。

如果您正在尋找關於如何使用嵌入向量進行 RAG 的詳細食譜集,包括向量數據庫,請查看我們的 RAG 食譜

常見問題

定價

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