NeurIPS 2026

Spherical Interpolation for Backward-Compatible Multimodal Representations

Backward-compatible upgrades of vision-language retrieval models: orthogonal alignment of new-model queries, followed by spherical interpolation with the old-model query.

1DINFO, University of Florence 2MICC, University of Florence 3University of Trento

TL;DR When a retrieval gallery is indexed by an old vision-language model, we rotate new-model queries into the old space (orthogonal Procrustes), then query with a point on the spherical arc between the old and the aligned new query. A single weight, chosen on a support set, makes the upgrade backward-compatible in 85 of 90 evaluations (45 with alignment alone), with no retraining and no re-indexing.

Abstract

Contrastive vision-language models map visual and textual representations into a shared normalized embedding space, making cosine similarity the natural metric for cross-modal retrieval. A practical challenge arises during model upgrades: independently trained models generally produce incompatible representation spaces, so replacing a deployed model typically requires recomputing embeddings for the entire gallery, which is prohibitively expensive at scale. Orthogonal post-hoc alignment can partially mitigate this problem by mapping new-model queries into the old-model gallery space. However, because independently trained models can differ in fine-grained representation structure, the orthogonal alignment remains approximate, leaving a residual angular discrepancy between the old-model query and the aligned new-model query. We study whether interpolation along the spherical geodesic between these two normalized query representations can improve retrieval without re-indexing the gallery. We characterize when this path contains an interior query direction closer to an idealized retrieval-optimal direction than either endpoint, and connect this characterization to Recall@K through a local margin-based certification result. Experiments across multiple benchmarks and model families show that post-alignment spherical interpolation improves over orthogonal alignment alone, recovering backward-compatibility in most evaluated settings. Consistent with our geometric characterization, per-query oracle analysis shows that retrieval-favorable interior points occur frequently in practice.

Method

The gallery stays encoded by the old model \(\phi_{\text{old}}\). Only queries change: each query is encoded by both models, the new embedding is rotated into the old space, and the two are blended along the sphere.

1Align

Fit an orthogonal map \(R^\star\) from new to old embeddings on a support set (12,637 CC3M image–text pairs). It has a closed form via one SVD. We call this baseline SVD.

2Interpolate

For a query \(x\), move along the geodesic from the old query \(u=\phi_{\text{old}}(x)\) to the aligned new query \(v=\phi_{\text{new}}(x)R^\star\) with SLERP.

3Retrieve

Search the unchanged old-model gallery with \(q_{\hat\alpha}\). One weight \(\hat\alpha\) per retrieval direction, chosen on the support set.

$$R^\star=\mathop{\arg\min}_{R^\top R=I}\big\|\bar V R-U\big\|_F^2=P\,Q^\top,\qquad \bar V^\top U=P\,\Sigma\,Q^\top$$
$$q_\alpha=\frac{\sin\big((1-\alpha)\theta\big)}{\sin\theta}\,u+\frac{\sin(\alpha\theta)}{\sin\theta}\,v,\qquad \theta=\angle(u,v)$$

Because \(R^\star\) is a rotation, it keeps the new model's inner products intact. Independently trained models still differ in fine-grained structure, so a residual angle \(\theta\) remains between u and v. SLERP moves at constant angular speed, \(\angle(u,q_\alpha)=\alpha\theta\), so \(\alpha\) means the same fraction of the way from u (\(\alpha=0\), old query) to v (\(\alpha=1\), SVD) for every query.

When can an interior point help?

Let \(q^\ast\) be an idealized retrieval-optimal query direction (used only for analysis), and let \(p\) be its projection onto the plane spanned by \(u\) and \(v\).

Theorem 1. For \(\|p\|>0\), there is an \(\alpha^\ast\in(0,1)\) with \(\angle(q_{\alpha^\ast},q^\ast)<\min\{\angle(u,q^\ast),\angle(v,q^\ast)\}\) if and only if \(p/\|p\|\) lies strictly inside the arc from \(u\) to \(v\). Otherwise the best point on the arc is an endpoint.

Appendix F connects this angular gap to Recall@K through a top-K margin bound. Empirically (Appendix M, Flickr30k, CLIP ViT-L/14 → ViT-B/32), the similarity to a relevant caption peaks strictly inside the arc for 99.87% of the 31,014 image queries, and 1,408 queries reach Recall@1 only at interior weights.

Four sphere diagrams of the interpolation plane: the minimizer of the angular gap is interior only when the normalized projection of q* lies on the arc between u and v.
Geometry of SLERP in the interpolation plane (Fig. 2). A strict interior improvement occurs exactly when \(p/\|p\|\) lies in the relative interior of the arc; when \(p=0\) the angular gap is constant along it.

Explore the interpolation path

Recall along the geodesic for the CLIP ViT-L/14 → CLIP ViT-B/32 upgrade. The gallery is always encoded by ViT-B/32 (old). \(\hat\alpha\) maximizes CC3M Recall@1 for the selected support modality and direction, and is then reused unchanged on every test set.

Test set Direction Support Metric
α 0.7

Values from results/l14_to_b32.csv in the repository, which may differ from the paper by a few hundredths of a point.

Results

Five upgrades (CLIP ViT-L/14 → ViT-B/32, CLIP ViT-H/14 → ViT-B/32, SigLIP2 → SigLIP1, SigLIP2 → CLIP ViT-B/32, SigLIP1 → CLIP ViT-H/14) on Flickr30k, COCO and NoCaps. An upgrade is backward-compatible when new-to-old retrieval beats the old system, \(M_{\text{new}\to\text{old}} > M_{\text{old}\to\text{old}}\).

4585 / 90
compatible evaluations, SVD alone vs. SVD + SLERP (Recall@1)
40.6248.00
Flickr30k I2T R@1, ViT-L/14 → ViT-B/32, zero gallery items re-encoded
91.1%
of the gain of fully re-indexing the gallery (48.72) in that setting
45.4658.63
SigLIP2 → SigLIP1: SVD breaks compatibility (old: 58.09), SLERP restores it
Method · text-only supportFlickr30kCOCONoCaps
I2T@1T2I@1I2T@1T2I@1I2T@1T2I@1
CLIP ViT-L/14 → CLIP ViT-B/32  same family
Old model (ViT-B/32)40.6221.7328.7614.4771.2945.24
XBT (compatibility training)42.4722.3830.7315.5575.0248.02
SVD42.8921.4930.2714.0369.2243.92
+ SLERP (α̂ = 0.7 / 0.5)48.0023.3333.4015.2673.9846.59
New model (ViT-L/14), re-indexed48.7228.2734.3318.6873.3647.84
SigLIP2 → SigLIP1  same family
Old model (SigLIP1)58.0939.4046.9930.8886.2064.18
SVD45.4646.2836.3030.5375.0064.64
+ SLERP (α̂ = 0.3 / 0.4)58.6345.9946.7632.5085.8766.59
New model (SigLIP2), re-indexed69.3151.2951.0635.0489.1869.82
SigLIP2 → CLIP ViT-B/32  cross family
Old model (ViT-B/32)40.6221.7328.7614.4771.2945.24
SVD42.8023.5632.3315.6272.1646.41
+ SLERP (α̂ = 0.6 / 0.5)51.0125.7937.3517.1878.5650.59
New model (SigLIP2), re-indexed69.3151.2951.0635.0489.1869.82
SigLIP1 → CLIP ViT-H/14  cross family, new model not uniformly stronger
Old model (ViT-H/14)59.3843.0743.5028.5684.2763.53
SVD60.5029.9141.8223.1881.4056.13
+ SLERP (α̂ = 0.5 / 0.1)64.8143.3846.5628.7985.8963.89
New model (SigLIP1), re-indexed58.0939.4046.9930.8886.2064.18

Recall@1 (%) with text-only Procrustes support, from Tables 1 and 2. ✓ / × mark backward compatibility against the old model. α̂ is selected on CC3M (I2T / T2I) and fixed across test sets. Image-only and joint supports, the CLIP ViT-H/14 → ViT-B/32 pair, Recall@5/10, the test-set oracle α* and zero-shot classification are in the paper.

Where the gains come from

Implementation

The method consists of two functions in PyTorch (see slerp_bc/method.py).

def procrustes(V_new, U_old):
    # argmin_R ||V_new R - U_old||_F  s.t.  R orthogonal  (closed form)
    P, _, Qt = torch.linalg.svd(V_new.T @ U_old, full_matrices=False)
    return P @ Qt

def slerp(u, v, alpha, eps=1e-7):
    u, v = F.normalize(u, dim=-1), F.normalize(v, dim=-1)
    theta = torch.acos((u * v).sum(-1, keepdim=True).clamp(-1 + eps, 1 - eps))
    q = (torch.sin((1 - alpha) * theta) * u + torch.sin(alpha * theta) * v) / torch.sin(theta)
    return F.normalize(q, dim=-1)

d = max(V_support.shape[1], U_support.shape[1])
pad = lambda x: F.pad(x, (0, d - x.shape[-1]))   # zero-pads the old space when d_new > d_old
R = procrustes(V_support, pad(U_support))      # new -> old, fitted once on the support set
q = slerp(pad(old_query_emb), new_query_emb @ R, alpha=alpha_hat)
scores = q @ pad(old_gallery).T                # = q[:, :d_old] @ old_gallery.T: the gallery is untouched

Zero-padding keeps \(R^\star\) square when the new model has more dimensions (e.g. 768 → 512). Scores only depend on the original old-model coordinates.

Limitations

Citation

@inproceedings{ricci2026spherical,
  title     = {Spherical Interpolation for Backward-Compatible Multimodal Representations},
  author    = {Ricci, Simone and Biondi, Niccol{\`o} and Pernici, Federico},
  booktitle = {Advances in Neural Information Processing Systems},
  volume    = {39},
  year      = {2026}
}