Blog
跳至主要內容

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

Sameer Kankute
SWE @ LiteLLM (LLM Translation)

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

回應格式因提供者而異
  • Gemini APIgemini/...):每個輸入元素都會回傳其自己的嵌入,依 0..N-1 索引 — 與 OpenAI 的 /embeddings 格式相同。LiteLLM 會路由到 batchEmbedContents 端點,且每個輸入使用一個 EmbedContentRequest
  • Vertex AIvertex_ai/...):所有輸入元素會透過 embedContent 合併為單一整合嵌入。Vertex AI 不會為 Gemini 嵌入模型公開 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/pngimage/jpeg
  • 音訊: audio/mpegaudio/wav
  • 影片: video/mp4video/quicktime
  • 文件: application/pdf

GCS URL MIME 推斷

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

  • .pngimage/png
  • .jpg / .jpegimage/jpeg
  • .mp3audio/mpeg
  • .wavaudio/wav
  • .mp4video/mp4
  • .movvideo/quicktime
  • .pdfapplication/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 上不需要這個選用設定——每個請求都已經回傳一個合併後的向量。

🚅
LiteLLM Enterprise
為正式環境打造的 SSO/SAML、稽核記錄、支出追蹤、多團隊管理與防護欄。
深入瞭解 →