Enet4/faiss-rs

Dynamically casting the wrapped quantizer when casting a IndexImpl to a IVFScalarQuantizerIndex?

Aberta

#100 aberto em 4 de set. de 2025

 (3 comentários) (0 reação) (0 responsável)Rust (50 forks)auto 404
enhancementhelp wanted

Métricas do repositório

Stars
 (252 estrelas)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

So I'm trying to read an IVFScalarQuantizer index from a file but it seems like IndexImpl::into_ivf_scalar_quantizer allows me to build a IVFScalarQuantizerIndex<IndexImpl>, but then there is no way to downcast the wrapped quantizer into a concrete type like FlatIndex (to get the ConcurrentIndex impl for it).

Thoughts on letting the quantizer also be specified during the conversion?

- pub fn into_ivf_scalar_quantizer(self) -> Result<IVFScalarQuantizerIndexImpl<IndexImpl>>
+ pub fn into_ivf_scalar_quantizer<Q>(self) -> Result<IVFScalarQuantizerIndexImpl<Q>>

This would allow the caller to assume a concrete type for the quantizer, which would then enable other traits like ConcurrentIndex (if the quantizer index is itself a ConcurrentIndex).

Guia do colaborador