本文目錄

北京時間 2026-11-03 09:09:18(2026-11-03T01:09:18.361Z),Perplexity 社區賬號 pplx-announcements 在 Announcements 分區發帖,標題為 *Introducing pplx-embed-v2-context: open-weight vision-language embedding models in 9B and 0.6B*。短帖寫明兩型號均可返回 一個 int8 向量/文檔,或 一個能看見整篇文檔的分塊向量/塊;鏈到論文 arXiv:2610.38854,並註明文稿與 turbopuffer 合寫。

社區發帖時刻不是該系列的最早時間戳。論文頁 citation_date 為 2026/10/28,頁內寫 “Submitted on 28 Oct 2026”。Hugging Face 上 pplx-embed-v2-context-0.6b 的 createdAt 為 北京時間 2026-10-21 20:42:50,lastModified 為 2026-10-30 18:00:18;pplx-embed-v2-context-9b 的 createdAt 為 北京時間 2026-10-28 20:38:45,lastModified 為 2026-10-30 17:59:28。2026-11-03 是社區官宣日——不是整系當天早晨才首現。

相關閱讀:OlmoEarth 1.3:不用訓練大模型,怎樣用衛星數據找地表變化?、Perplexity Computer 怎樣在 Mac 上本機執行,Hybrid 模式又做什麼、Atria Dawn 正式版權重開放:Hugging Face 上的 512K 上下文、OpenAI Habitat:儲存讀延遲約快 12 倍,不等於回答快 12 倍。上述篇目分屬衛星嵌入瀏覽、Perplexity Computer 本機、正式開放權重、儲存讀延遲等鄰近線,不是多模態上下文檢索嵌入同題。

為什麼孤立分塊會丟答案

在檢索增強生成裡,長文檔常被切成獨立索引、獨立打分的分塊。租金數字、修訂字母或表格單元格,往往依賴同文件別處的標題、定義或實體名。普通稠密嵌入把每塊孤立編碼,向量可能對不上需要周圍上下文的查詢。把整篇壓成一個向量,又容易沖掉讀者仍需要的細節。

上下文嵌入在編碼某一分塊時仍能看見文檔周圍內容。Perplexity 模型卡在同一套型號上寫了兩種模式:contextual(分塊能看見鄰居)與 non-contextual(文本輸入孤立編碼)。社區短帖的「整篇一個 int8」與「每塊一個能看見全文的向量」對應的就是這條分界。

論文 *Contextual Embeddings Beyond the Gold Chunk* 指出:真實檢索往往不止一個「金句」答案跨度——還要撈出用於識別實體、時期或條件的證據塊。訓練側用查詢感知的上下文壓縮模型蒸餾分等級的塊級相關性,而不是隻靠金塊標註。研究細節在 arXiv;下面對照社區公告、模型卡與論文頁上運維能核到的邊界。

Hugging Face 上的兩個開放權重規格

兩倉均在 perplexity-ai 下,標籤含 feature-extraction/contextual-embeddings、多語言,以及 custom_code;均為 gated=false。基座是 late 分塊兄弟倉:perplexity-ai/pplx-embed-v2-late-0.6b 與 perplexity-ai/pplx-embed-v2-late-9b(模型卡 finetune 關係)。

字段0.6B9B
倉perplexity-ai/pplx-embed-v2-context-0.6bperplexity-ai/pplx-embed-v2-context-9b
Safetensors total595370176(約 595M)8401083632(約 8.40B)
許可(卡/API)cardData/README YAML 無明確 license(API license=None)cardData 寫 license: mit(tags 含 license:mit)
gatedfalsefalse
原生寬度(卡示例)10242048(Matryoshka 另訓 1024)

許可邊界:9B 模型卡寫明 MIT;0.6B 卡面、README 頭與 API 未見明確許可字段——0.6B 沒有寫成 MIT,兩規格也不是同一許可。再分發前宜回託管頁複核。

模型卡文案自稱 “state-of-the-art”。該措辭是模型卡自報。召回、nDCG、顯存、吞吐、多語言質量與視覺文檔檢索,我們未複測。

會靜默降質的編碼規則

兩份 README 硬規則相同。漏掉任一條,索引看起來「能跑」,排序仍可能變差。

  1. 查詢用 encode_queries,文檔塊用 encode。 模型按不同的 query/document 前綴訓練;用 encode 編查詢會靜默降質——不報錯,只是檢索變差。
  2. 上下文模式分塊應非重疊(non-overlapping)。 重疊跨度與「邊界即分隔」的訓練假設衝突。
  3. 原生產出未歸一化 int8。 用餘弦相似度比較,或設 normalize_embeddings=True 後用點積。
  4. 加載須 trust_remote_code=True。 依賴自定義代碼;文檔寫明 transformers>=5.4.0,以及 torch、numpy、safetensors、tqdm、Pillow、torchvision。可選 flash-linear-attention、causal-conv1d 走快速線性注意力路徑。
  5. 文本 encode 不截斷。 超長文檔須事先切分或截斷。若要「整篇一個向量」,把該文檔作為單塊列表傳入。

模型卡上的最小文本形狀(ID/開關與文檔一致):

python
from transformers import AutoModel

model = AutoModel.from_pretrained(
    "perplexity-ai/pplx-embed-v2-context-0.6b",  # 或 ...-9b
    trust_remote_code=True,
).to("cuda")

documents = [
    ["文檔1塊A。", "文檔1塊B。"],
    ["文檔2唯一塊。"],
]
chunk_embeddings = model.encode(documents, normalize_embeddings=True)
query_embeddings = model.encode_queries(
    [["與塊A匹配的問題?"]],
    normalize_embeddings=True,
)

非上下文模式在卡上會把每塊壓成單獨的單元素列表再 encode。上下文模式則按文檔把分塊成組,使鄰居在同一次前向中可見。

9B 與 0.6B 混用同一索引

模型卡寫明:9B 的 1024 維 MRL 前綴與 0.6B 共享向量空間。文檔可用一規格建庫、另一規格查詢——前提是維度對齊正確。

9B 卡寫 Matryoshka 訓練於 1024 與 2048。要與 0.6B 對齊:

  1. 先對 encode/encode_queries/encode_images 取未歸一化輸出(原生 int8)。
  2. 只保留每個 9B 向量的前 1024 維。
  3. 再做 L2 歸一化。
  4. 查詢與圖像嵌入在混用時走同一「先截斷再歸一化」路徑。

其他截斷寬度未按此對齊訓練。先歸一化再截斷,是另一類靜默錯位。

圖像與視覺文檔:水平 band

兩卡均提供 encode_images,把頁面或其他圖像做成上下文分塊。每張圖在一次上下文前向中編碼;合併後的視覺 token 按整行水平 band劃分。對著這些頁面的查詢仍用 encode_queries。

文檔中的圖像參數含 chunks(默認請求 8 條 band)、min_pixels(16384)、max_pixels(1800000)、batch_size(1)。實際 band 數受合併後圖像行數上限約束。卡上頁面打分示例在歸一化矩陣乘積後取最大塊分。卡文稱切圖可顯著提升檢索——仍是卡面自報,不是 DigIntoAI 實測。

普通分塊 vs 上下文分塊

維度普通(非上下文)上下文(pplx-embed-v2-context)
編碼器所見單塊孤立塊+文檔周圍上下文
卡上典型調用壓成 [[chunk], …] 再 encode按文檔保持 [[c1, c2, …], …] 再 encode
查詢路徑仍是 encode_queries仍是 encode_queries
重疊經典 RAG 常見卡要求上下文模式非重疊
整篇向量孤立文檔串文檔作單塊列表傳入

塊本身已自洽(FAQ 行、短標題)時可走非上下文。答案依賴同文件標題、代詞、表頭或修訂說明時走上下文——這正是論文與模型卡針對的失敗模式。

運維對照清單

  1. 時間。 社區帖 北京時間 2026-11-03 09:09:18,賬號 pplx-announcements;論文提交 2026-10-28;HF 倉早於社區官宣——不是「今日首現」。
  2. 規格。 開放權重 9B(約 8.40B)與 0.6B(約 595M),均 gated=false,自定義代碼,面向文本/圖片/視覺文檔檢索。
  3. 許可。 9B=MIT(cardData);0.6B=無明確 license——許可分開記。
  4. API 分流。 文檔 → encode;查詢 → encode_queries。用錯方法會靜默降質。
  5. 分塊。 上下文模式 → 非重疊;可選單塊列表得到整篇一向量。
  6. 向量。 原生未歸一化 int8;餘弦,或歸一化後點積。
  7. 加載。 trust_remote_code=True;依賴棧按卡面 transformers>=5.4.0 等。
  8. 跨規格。 共享 1024 維 MRL 前綴:對未歸一化 9B 向量截前 1024 維,再歸一化,再與 0.6B 比較。
  9. 視覺。 encode_images 按水平 band;查詢仍走 encode_queries。
  10. 分數。 卡/論文「SOTA」=自報。召回、顯存、多語言與視覺檢索我們未複測。

小結

2026-11-03 的社區公告把運維指向開放權重 pplx-embed-v2-context 的 9B 與 0.6B:上下文分塊向量能看見文檔其餘部分,並可用共享 1024 維空間做混規格索引。論文與 HF 倉在 2026 年 10 月下旬已有記錄。真正的坑是操作層,不是宣傳語:查詢走錯 encode、上下文分塊重疊、MRL 截斷前先歸一化、以及把模型卡 SOTA 當成第三方實測。這些權重的端到端檢索與硬件賬我們未跑——現場筆記可通過頁腳站長聯繫方式反饋。