Search API¶
TurboQuant vector search functional API.
Provides compressed vector search using TurboQuant's quantization. Supports approximate nearest-neighbor search without index building.
CompressedCorpus
dataclass
¶
CompressedCorpus(mse_data: Optional[MSEData] = None, prod_data: Optional[ProdData] = None, quantizer: Optional[TorbuquantMSE | TorbuquantProd] = None, dim: int = 0, num_vectors: int = 0, bits: float = 4.0)
Compressed corpus for vector search.
Attributes: mse_data: MSE quantization data (for simple compression). prod_data: Product quantization data (for inner-product aware). quantizer: Quantizer used for compression. dim: Original vector dimension. num_vectors: Number of vectors in corpus. bits: Bits per element used.
compress_vectors ¶
compress_vectors(embeddings: Tensor, bits: float = 3.5, use_prod: bool = True, seed: int = 42) -> CompressedCorpus
Compress a corpus of embedding vectors for fast approximate search.
Args:
embeddings: Document embeddings of shape [N_docs, dim].
bits: Bits per element. Must be > 1.0 for product quantization.
use_prod: Use TurboQuantProd (inner-product aware) vs MSE-only.
seed: Random seed for rotation matrices.
Returns: CompressedCorpus ready for search.
Source code in turboquant/search/functional.py
inner_product ¶
Compute approximate inner products between queries and corpus.
Args:
queries: Query embeddings [N_queries, dim] or [dim].
corpus: Compressed corpus from compress_vectors.
Returns:
Inner product scores [N_queries, N_docs].
Source code in turboquant/search/functional.py
search ¶
search(query: Tensor, corpus: CompressedCorpus, top_k: int = 10) -> Tuple[torch.Tensor, torch.Tensor]
Approximate nearest-neighbor search over compressed corpus.
No index build step required — add documents, query immediately.
Args:
query: Query embedding [dim] or [N_q, dim].
corpus: Compressed corpus from compress_vectors.
top_k: Number of nearest neighbours to return.
Returns:
scores: Top-k dot-product scores [top_k] or [N_q, top_k].
indices: Top-k indices into corpus, same shape as scores.
Source code in turboquant/search/functional.py
decompress ¶
Decompress corpus back to approximate vectors.
Note: This is lossy - the decompressed vectors are approximations. Use for debugging and visualization only.
Args: corpus: Compressed corpus.
Returns:
Approximate vectors [N_docs, dim].
Source code in turboquant/search/functional.py
compute_recall ¶
compute_recall(queries: Tensor, corpus_original: Tensor, corpus_compressed: CompressedCorpus, top_k: int = 10) -> float
Compute recall@k for compressed search vs exact search.
Args:
queries: Query embeddings [N_q, dim].
corpus_original: Original corpus embeddings [N_docs, dim].
corpus_compressed: Compressed corpus.
top_k: k for recall@k.
Returns: Recall@k as float in [0, 1].