跳至主要內容

Gemini Embedding 2 預覽版:LiteLLM 上的多模態嵌入

LiteLLM 現已支援使用 gemini-embedding-2-preview 的多模態嵌入,可在單一請求中混合文字、圖片、音訊、影片與 PDF 內容。可透過 Gemini API(API 金鑰)與 Vertex AI(GCP 憑證)使用。

回應格式因提供者而異
  • Gemini API(gemini/...):每個輸入元素都會回傳各自的嵌入,依 0..N-1 索引,形狀與 OpenAI 的 /embeddings 相同。LiteLLM 會路由至 batchEmbedContents 端點,並為每個輸入使用一個 EmbedContentRequest。
  • Vertex AI(vertex_ai/...):所有輸入元素會透過 embedContent 組合成單一整合嵌入。Vertex AI 不會為 Gemini embedding models 提供 batchEmbedContents,因此 N 部分 → 1 向量。若要為每個項目取得一個向量,請針對每個輸入呼叫一次 embedding(...)。

支援的輸入類型​

模態支援格式
文字純文字
圖片PNG、JPEG
音訊MP3、WAV
影片MP4、MOV
文件PDF

輸入格式​

LiteLLM 接受多模態內容的三種輸入格式:

  1. Data URI – Base64 編碼內嵌:data:image/png;base64,<encoded_data>
  2. GCS URL – 雲端儲存空間路徑(Vertex AI):gs://bucket/path/to/file.png
  3. Gemini File References – 已預先上傳的檔案(Gemini API):files/abc123

快速入門​

from litellm import embedding
import os

os.environ["GEMINI_API_KEY"] = "your-api-key"

# Text + Image (base64)
response = embedding(
model="gemini/gemini-embedding-2-preview",
input=[
"The food was delicious and the waiter...",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII"
],
)
print(response)

輸入格式範例​

格式範例提供者
Data URIdata:image/png;base64,...Gemini、Vertex AI
GCS URLgs://bucket/path/image.pngVertex AI
檔案參照files/abc123僅 Gemini API

Data URI 支援的 MIME 類型​

  • 圖片: image/png、image/jpeg
  • 音訊: audio/mpeg、audio/wav
  • 影片: video/mp4、video/quicktime
  • 文件: application/pdf

GCS URL MIME 推斷​

對於 Vertex AI,MIME 類型會根據檔案副檔名推斷:

  • .png → image/png
  • .jpg / .jpeg → image/jpeg
  • .mp3 → audio/mpeg
  • .wav → audio/wav
  • .mp4 → video/mp4
  • .mov → video/quicktime
  • .pdf → application/pdf

選用參數​

參數說明對應
dimensions輸出嵌入大小outputDimensionality
response = embedding(
model="gemini/gemini-embedding-2-preview",
input=["text to embed"],
dimensions=768, # Optional: control output vector size
)

合併嵌入(Gemini API,選用)​

預設情況下,Gemini API 路徑會為每個輸入元素回傳一個嵌入(相容 OpenAI)。若要將多種模態融合為單一向量,例如以名稱 + 照片表示的產品,請將它們包裝在巢狀清單中:

from litellm import embedding

# Default: 2 inputs → 2 separate embeddings
embedding(
model="gemini/gemini-embedding-2-preview",
input=["a red shoe", "data:image/png;base64,..."],
)

# Combined: text + image fused into 1 embedding
embedding(
model="gemini/gemini-embedding-2-preview",
input=[["a red shoe", "data:image/png;base64,..."]],
)

# Mixed: 1 combined entity + 1 plain text → 2 embeddings total
embedding(
model="gemini/gemini-embedding-2-preview",
input=[["a red shoe", "data:image/png;base64,..."], "just text"],
)

這對於單一實體具有多種模態的多模態檢索很有用。詳情請參閱 embedding 文件。在 Vertex AI 上,不需要這個選用設定;每個請求都已經會回傳一個整合向量。