Gemini Embedding 2:把文字、圖像、影片和音訊放進同一個向量空間

Google 介紹 Gemini Embedding 2 的多模態 embedding 能力:統一處理文字、圖像、影片、音訊和文件,並用於 RAG、視覺搜尋、重排序和分類。

Google Developers Blog 介紹了 Gemini Embedding 2 的開發用法。這個模型已經透過 Gemini API 和 Gemini Enterprise Agent Platform 進入 GA,重點不只是「新的 embedding 模型」,而是把文字、圖像、影片、音訊和文件映射到同一個語義空間。

這會讓檢索系統的邊界變寬。過去很多 RAG 流程需要先把圖片、影片、音訊拆成文字或中繼資料,再分別建立索引;Gemini Embedding 2 則可以直接處理多模態輸入,讓代理、搜尋和分類系統更容易圍繞真實業務材料工作。

原文連結:Building with Gemini Embedding 2: Agentic multimodal RAG and beyond

模型能力

Gemini Embedding 2 支援 100 多種語言。單次請求可以處理:

  • 最多 8,192 個文字 token
  • 最多 6 張圖片
  • 最多 120 秒影片
  • 最多 180 秒音訊
  • 最多 6 頁 PDF

它的關鍵點是「統一語義空間」。開發者可以把不同模態的內容放在同一套向量表示裡,用同一種檢索、聚類或重排序邏輯處理。

例如,文字描述和圖片可以放在同一次 embedding 請求裡:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from google import genai
from google.genai import types

client = genai.Client()

with open('dog.png', 'rb') as f:
    image_bytes = f.read()
result = client.models.embed_content(
    model='gemini-embedding-2',
    contents=[
        "An image of a dog",
        types.Part.from_bytes(
            data=image_bytes,
            mime_type='image/png',
        ),
    ]
)

print(result.embeddings)

如果你希望每個輸入分別得到 embedding,而不是聚合成一個向量,可以使用 Batch API。原文也提到,Agent Platform 對這類批次支援還在跟進中。

對 RAG 的意義

多模態 embedding 對代理式 RAG 很有用。一個 AI agent 可能需要同時檢查程式碼倉庫、PDF、截圖、圖表、音訊會議紀錄和產品圖片。如果所有資料都能進入同一個語義空間,檢索鏈路就不必為每種材料單獨設計一套入口。

Google 建議根據任務使用 task prefix,讓 embedding 更貼近檢索目標。例如問答、事實核查、程式碼檢索和搜尋結果,可以使用不同前綴:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Generate embedding for your task's query:
def prepare_query(query):
    return f"task: question answering | query: {content}"
    # return f"task: fact checking | query: {content}"
    # return f"task: code retrieval | query: {content}"
    # return f"task: search result | query: {content}"
# Generate embedding for document of an asymmetric retrieval task:
def prepare_document(content, title=None):
    if title is None:
        title = "none"
    return f"title: {title} | text: {content}"

這種前綴適合非對稱檢索:使用者查詢往往很短,文件內容往往很長。把 querydocument 分別按任務格式整理,可以改善短查詢到長文件之間的匹配。

原文給了兩個落地回饋:

  • Harvey 在法律檢索基準上,Recall@20 precision 相比上一代 embedding 提升 3%。
  • Supermemory 在 Recall@1 搜尋準確率上提升 40%,並把它用於記憶、索引、搜尋和問答管線。

這些數字不代表所有場景都會同幅度提升,但說明多模態 embedding 已經不只是展示能力,而是在真實檢索產品中產生效果。

視覺搜尋

Gemini Embedding 2 也適合做以圖搜圖、圖文混合搜尋和商品識別。原文提到服裝租賃公司 Nuuly 用它匹配倉庫中未打標籤的服裝照片,使 Match@20 從 60% 提升到接近 87%,整體成功識別率從 74% 提升到 90% 以上。

這類場景的關鍵不是生成內容,而是理解「這張圖片和哪個庫存、文件或商品紀錄最接近」。如果你的業務裡有大量圖片、影片片段或掃描件,多模態 embedding 會比純文字索引更自然。

檢索重排序

Embedding 還可以用於 rerank。常見做法是先用基礎檢索拿到一批候選結果,再計算候選結果和使用者查詢之間的相似度,把更相關的內容排到前面:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. Define a function to calculate the dot product (cosine similarity)
def dot_product(a: np.ndarray, b: np.ndarray):
  return (np.array(a) @ np.array(b).T)
# 2. Retrieve your embeddings
# (Assuming 'summaries' is your list of search results)
search_res = get_embeddings(summaries)
embedded_query = get_embeddings([query])

# 3. Calculate similarity scores
sim_value = dot_product(search_res, embedded_query)

# 4. Select the most relevant result
best_match_index = np.argmax(sim_value)

原文還提到一種思路:先讓模型根據內部知識生成一個假設答案,再把這個假設答案做 embedding,與候選內容比較相似度,用來挑出語義更貼近的結果。這對問答型 RAG 尤其有用。

聚類、分類和異常檢測

除了檢索,embedding 也適合聚類、分類和異常檢測。和前面的問答檢索不同,這些屬於對稱任務,querydocument 可以使用同一種任務前綴:

1
2
3
4
5
# Generate embedding for query & document of your task.
def prepare_query_and_document(content):
    # return f'task: clustering | query: {content}'
    # return f'task: sentence similarity | query: {content}'
    # return f'task: classification | query: {content}'

這類任務可以用於輿情分類、內容審核、相似資產歸類、異常樣本發現,也可以幫助 agent 對大量上下文材料先做整理,再進入後續推理。

儲存和成本

Gemini Embedding 2 預設輸出 3,072 維向量。它使用 Matryoshka Representation Learning,因此可以透過 output_dimensionality 把向量截斷到更小維度。Google 推薦在效率優先時使用 1,536 或 768 維:

1
2
3
4
5
result = client.models.embed_content(
    model="gemini-embedding-2",
    contents="What is the meaning of life?",
    config={"output_dimensionality": 768}
)

向量可以存到 Agent Platform Vector Search、Pinecone、Weaviate、Qdrant、ChromaDB 等系統裡。成本方面,原文提到 Batch API 可提供更高吞吐,並達到預設 embedding 價格的 50%。

開發者該怎麼用

如果你已有文字 RAG,可以先從兩類增量改造開始:

  1. 把 PDF、截圖、圖片說明和文字文件放入同一個索引,測試查詢召回是否更穩定。
  2. 給不同任務加 task prefix,例如問答、事實核查、程式碼檢索、商品搜尋,不要把所有內容都按同一種 embedding 方式處理。

如果你在做新產品,可以優先考慮這些方向:

  • 企業知識庫:同時檢索文件、圖表、簡報截圖和會議材料。
  • 視覺搜尋:用圖片、文字或混合輸入查找商品、資產、設計稿和檔案。
  • Agent 工具鏈:讓 coding agent、研究 agent 或客服 agent 檢索多種格式的業務材料。
  • 內容治理:對文字、圖片、影片片段做統一分類、聚類和異常檢測。

Gemini Embedding 2 的價值在於把多模態材料變成同一套可檢索資產。對開發者來說,這會減少「先轉文字再檢索」的中間層,也讓 RAG 系統更接近真實世界的資料形態。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計