本文目录

北京时间 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 当成第三方实测。这些权重的端到端检索与硬件账我们未跑——现场笔记可通过页脚站长联系方式反馈。