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§
Sourcefn id(&self) -> &str
fn id(&self) -> &str
Stable identifier surfaced in stats + logs. Must be unique per
kernel type (e.g. "cpu", "cuda:0", "metal").
Sourcefn caps(&self) -> KernelCaps
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).
Sourcefn scan(&self, req: ScanRequest<'_>) -> Result<ScanResponse, RabitqError>
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.