先看证据

9B模型规模
2048维默认输出
1024维Matryoshka支持
2,099条评测查询
38,894篇评测文档
2,458,072个评测句块

把机制串起来

输入先把素材压到可处理的规模

RAG先把长文切成块,再把问题和各块向量化并检索;但单个块常依赖别处的标题、实体或定义,孤立编码会丢掉这些关系。Late Chunking让模型先看完整文档,再为各块池化向量;本工作进一步改变训练目标,让模型学会找“答案及其可核验依据”,而不是只认一个金标准块。

机制再把计算集中到关键步骤

教师模型同时读取查询和文档,为每个token打相关性分数;一个块的分数取其中最高n个token分数的均值,再对同一正例文档内各块做温度缩放softmax,形成软目标。学生模型以带全局上下文的块表示拟合教师分布,使用forward KL,而非把唯一金标准块做成one-hot标签;其他文档的块目标为零。另加InfoNCE文档损失,并让文档得分取其最佳块,借鉴ColBERT的MaxSim,使模型既会定位证据块,也会识别整体相关文档。训练时随机改变切块策略,同一套token相关性可重

结果最后落到可验证的工作结果

['适合跨块依赖强、需返回可核验证据的RAG', '长文先完整编码再切块,注意显存与上下文上限', '1024维或Int8可降成本,但需重新评估召回率', '不宜把preview接口当稳定生产API']

RAG的问题不总是找不到答案,而是找不到能证明答案的上下文

Perplexity Research与turbopuffer发布了pplx-embed-v2-context-9b-preview。这是一款面向RAG流水线的上下文Embedding模型,目标是处理长文档切块后产生的检索问题:一个片段可能只写着“月租为……”,真正决定它含义的物业名称、地址或条款定义却在文档的其他位置。

这次发布值得读,不是因为“上下文Embedding”这个名字本身,而是因为它把问题推进到了训练目标。传统做法通常为一个查询指定一个gold chunk,再把其他片段当作负例。可是,在法律合同、产品文档或企业制度中,另一个片段可能并不是答案本身,却是核对答案不可缺少的证据。把它标成负例,会让模型学会排斥那些本应一起出现的上下文。

关键改动发生在标签:从一个硬答案变成一组软目标

pplx-embed-v2-context的教师模型是Perplexity的query-aware context compression model。训练时,教师同时读取查询和文档,并为每个token打分。对某个chunk,系统取其中得分最高的若干token,再计算这些分数的均值,得到chunk相关性。随后,正样本文档中的各个chunk经过带温度的softmax形成软目标,而不是只有一个位置为1、其余位置为0的one-hot标签。

学生模型通过forward KL散度去拟合这组分布,同时还使用InfoNCE进行文档级训练,把文档的得分视为其中最高chunk的得分。这相当于同时保留两种判断:某个文档是否值得检索,以及文档内部哪些片段最能回答查询。教师只在训练阶段运行,因此推理阶段不会增加教师模型带来的延迟或额外存储。

它修正的不只是模型,也包括切块策略的脆弱性

这套训练有一个对工程团队很实际的特性:每个batch会随机采样切块策略。文档经过一次编码后,chunk通过一个学习得到的分隔token区分,再分别做mean pooling。由于教师产生的是基于token分数的软目标,同一批token在改变边界后可以重新聚合,不需要为每一种切块方式重新人工标注。

这与常见的“先固定chunk大小,再围绕它制作数据集”不同。材料明确指出,二元标签不仅信号粗糙,标注成本还会随数据集规模线性增长,而且标签会绑定某一种切块方案。上下文训练并没有消除切块问题,但它降低了模型对某个固定边界和单一标准答案的依赖。对于结构复杂、定义跨段分布的文档,这种鲁棒性可能比单纯扩大向量模型更有价值。

部署代价没有消失,只是转移到索引和评估

模型从Perplexity内部的9B ColBERT检索模型起步,输出2048维向量,并通过Matryoshka训练支持1024维表示。它还支持量化感知训练,可以原生生成int8 embedding。按照材料中的存储换算,1024维int8向量约为1 KB,而2048维float32向量约为8 KB;Perplexity报告称,前者在其chunk-retrieval测试中略高于voyage-context-4的后者配置。

这意味着上下文Embedding并没有要求在线检索时保存整篇文档,也没有引入一个必须在每次查询时运行的教师模型。它仍然是每个chunk一个向量,成本主要由维度和数值精度决定。但团队不能只看向量大小:更软的训练目标是否改善了自身语料上的证据召回,是否影响reranker、上下文窗口和最终生成质量,都需要单独验证。

基准结果说明了方向,但还不足以替代生产验证

Perplexity报告了新的context-bench:其中包含2099个查询、38894篇文档和21个领域,按句子切分后得到2458020个chunk,并进行穷举排序。该基准由turbopuffer私有持有,以减少训练污染。材料还提到,在K=10的chunk检索测试中,图表显示Perplexity相较Voyage存在14.4和5.0个百分点的差距,部分Voyage数值是根据这些差距反推的,其他指标并未完整列出。

这些信息足以支持一个有限判断:模型的设计目标在检索层面有可观测的评估路径,而且作者没有把指标包装成一个脱离测试条件的普遍结论。但context-bench是新建且私有的基准,训练集覆盖约430个数据集、50多种语言,并明确不含ConTEB数据,这些设定仍不能回答企业知识库中的权限、时效、重复文档和长链条证据问题。更稳妥的做法是把它作为候选召回器,与现有Embedding、reranker和最终回答评估一起做分层对比,而不是只比较单一nDCG@10。

适合先试验,不适合无条件替换现有检索栈

目前它可以自托管,权重发布在Hugging Face并采用MIT许可证,但加载需要transformers不低于5.4.0,并开启trust_remote_code=True。它尚未接入Perplexity API,模型卡还提示权重和接口可能在没有向后兼容的情况下变化。对技术负责人来说,这些不是发布说明里的附属信息,而是决定试点方式的约束:需要固定模型版本、隔离运行环境,并保留重新建索引的路径。

如果知识库中经常出现“答案片段”和“解释片段”分离的情况,可以先选取一组可人工核验的查询,把候选召回、证据覆盖和最终回答分开记录。若主要问题只是基础切块质量、权限过滤或文档过期,换Embedding模型未必能解决根因。pplx-embed-v2-context的边界也很清楚:它改善的是训练信号与上下文感知的向量表示,不会自动修复错误数据、缺失的文档关系或不可靠的生成模型。