Skip to main content

VectorKernel

Trait VectorKernel 

Source
pub trait VectorKernel: Send + Sync {
    // Required methods
    fn id(&self) -> &str;
    fn caps(&self) -> KernelCaps;
    fn scan(&self, req: ScanRequest<'_>) -> Result<ScanResponse, RabitqError>;
}
Expand description

A vector kernel executes scan + exact rerank for one or more queries against a compressed RaBitQ index.

Implementations are stateless w.r.t. the index — they receive it by reference on every call, so a single kernel instance can serve many caches / collections concurrently. Concrete GPU kernels may carry a driver handle or stream object; that’s kernel state, not index state.

Required Methods§

Source

fn id(&self) -> &str

Stable identifier surfaced in stats + logs. Must be unique per kernel type (e.g. "cpu", "cuda:0", "metal").

Source

fn caps(&self) -> KernelCaps

Capability advertisement — what this kernel can do. Return a fresh struct (not a static reference) so kernels can narrow caps at runtime (e.g. GPU-down → min_batch = usize::MAX).

Source

fn scan(&self, req: ScanRequest<'_>) -> Result<ScanResponse, RabitqError>

Run the scan + rerank for every query in req. Returns one Vec<SearchResult> per query, in the input order.

Implementors§