Skip to content
WeftKitBeta
Modules/WeftKitVec
PineconepgvectorFAISS

WeftKitVec

Vector Similarity Search

Disk-resident approximate nearest neighbor search for RAG pipelines, semantic search, and recommendation systems. Handles billion-point datasets on a single machine.

~234 μs

flat search (100 vectors, 128-dim)

HNSWDiskANNIVF-PQScalar QuantizationSIMD AVX2/NEON
Features

Key Features

What makes WeftKitVec stand out.

HNSW Graph Index

Hierarchical Navigable Small World graph with delta updates for real-time insertions. SIMD-accelerated distance kernels (AVX2/NEON).

DiskANN / Vamana

SSD-resident graph index for billion-scale datasets. In-memory navigation graph with on-disk full-precision vectors for re-ranking.

Product Quantization (IVF-PQ)

k-means clustering with PQ compression. 8–32x memory reduction with configurable recall vs. memory tradeoff.

Metadata Filtering

Pre-filtering and post-filtering with adaptive strategy based on filter selectivity. Combine vectors with structured attributes.

Hybrid Search

Combine vector similarity with keyword BM25 scores via reciprocal rank fusion for enhanced retrieval quality.

Multiple Distance Metrics

Cosine similarity, Euclidean (L2), inner product (dot), Hamming (binary), and custom metrics via function pointer.

Performance

Performance Targets

Real numbers from Criterion benchmarks on reference hardware.

1M vectors (768-dim) top-10< 5 ms p99 at recall@95%
100M vectors (DiskANN)< 20 ms p99 on NVMe SSD
Insertion rate> 10,000 vectors/sec with concurrent search
Memory (1M vectors, PQ)≤ 50 MB
Memory (100K vectors, ARM)≤ 20 MB
Compatibility

Wire Protocol

WeftKitVec supports the gRPC protocol. Your existing tools just work.

Custom clientgrpcurlAny gRPC client
Code Example

Get Started in Seconds

Add WeftKitVec to your Rust project and start querying.

vector.rs
rust
use weftkitvec::prelude::*;

// Open or create a database
let db = Database::open("my_app.db")?;

// Use the module API
let result = db.query("SELECT * FROM users WHERE active = true")?;

for row in result.rows() {
    println!("{:?}", row);
}
Use Cases

Where to Use It

1

RAG pipeline semantic retrieval

2

Recommendation systems

3

Image and audio similarity search