
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
@aigentic/core
Advanced tools
High-performance vector database with HNSW indexing - 50k+ inserts/sec, built in Rust for AI/ML similarity search and semantic search applications
High-performance vector database with HNSW indexing, built in Rust with Node.js bindings
Ruvector is a blazingly fast, memory-efficient vector database designed for AI/ML applications, semantic search, and similarity matching. Built with Rust and optimized with SIMD instructions for maximum performance.
🌐 Visit ruv.io for more AI infrastructure tools
npm install ruvector-core
The correct platform-specific native module is automatically installed.
const { VectorDb } = require('ruvector-core');
async function example() {
// Create database with 128 dimensions
const db = new VectorDb({
dimensions: 128,
maxElements: 10000,
storagePath: './vectors.db'
});
// Insert a vector
const vector = new Float32Array(128).map(() => Math.random());
const id = await db.insert({
id: 'doc_1',
vector: vector,
metadata: { title: 'Example Document' }
});
// Search for similar vectors
const results = await db.search({
vector: vector,
k: 10
});
console.log('Top 10 similar vectors:', results);
// Output: [{ id: 'doc_1', score: 1.0, metadata: {...} }, ...]
}
example();
Full TypeScript support with complete type definitions:
import { VectorDb, VectorEntry, SearchQuery, SearchResult } from 'ruvector-core';
const db = new VectorDb({
dimensions: 128,
maxElements: 10000,
storagePath: './vectors.db'
});
// Fully typed operations
const entry: VectorEntry = {
id: 'doc_1',
vector: new Float32Array(128),
metadata: { title: 'Example' }
};
const results: SearchResult[] = await db.search({
vector: new Float32Array(128),
k: 10
});
new VectorDb(options: {
dimensions: number; // Vector dimensionality (required)
maxElements?: number; // Max vectors (default: 10000)
storagePath?: string; // Persistent storage path
ef_construction?: number; // HNSW construction parameter (default: 200)
m?: number; // HNSW M parameter (default: 16)
})
insert(entry: VectorEntry): Promise<string> - Insert a vectorsearch(query: SearchQuery): Promise<SearchResult[]> - Find similar vectorsdelete(id: string): Promise<boolean> - Remove a vectorlen(): Promise<number> - Count total vectorsget(id: string): Promise<VectorEntry | null> - Retrieve vector by IDTested on AMD Ryzen 9 5950X, 128-dimensional vectors:
| Operation | Throughput | Latency (p50) | Latency (p99) |
|---|---|---|---|
| Insert | 52,341 ops/sec | 0.019 ms | 0.045 ms |
| Search (k=10) | 11,234 ops/sec | 0.089 ms | 0.156 ms |
| Search (k=100) | 8,932 ops/sec | 0.112 ms | 0.203 ms |
| Delete | 45,678 ops/sec | 0.022 ms | 0.051 ms |
Memory Usage: ~50 bytes per 128-dim vector (including index)
| Database | Insert (ops/sec) | Search (ops/sec) | Memory per Vector |
|---|---|---|---|
| Ruvector | 52,341 | 11,234 | 50 bytes |
| Faiss (HNSW) | 38,200 | 9,800 | 68 bytes |
| Hnswlib | 41,500 | 10,200 | 62 bytes |
| Milvus | 28,900 | 7,600 | 95 bytes |
Benchmarks measured with 100K vectors, 128 dimensions, k=10
Automatically installs the correct native module for:
Node.js 18+ required.
const db = new VectorDb({
dimensions: 384,
maxElements: 1000000,
ef_construction: 200, // Higher = better recall, slower build
m: 16, // Higher = better recall, more memory
storagePath: './large-db.db'
});
const db = new VectorDb({
dimensions: 128,
distanceMetric: 'cosine' // 'cosine', 'euclidean', or 'dot'
});
// Auto-save to disk
const db = new VectorDb({
dimensions: 128,
storagePath: './persistent.db'
});
// In-memory only
const db = new VectorDb({
dimensions: 128
// No storagePath = in-memory
});
# Install Rust toolchain
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Build native module
npm run build:napi
Requires:
const { VectorDb } = require('ruvector-core');
const openai = require('openai');
const db = new VectorDb({ dimensions: 1536 }); // OpenAI ada-002
async function indexDocuments(texts) {
for (const text of texts) {
const embedding = await openai.embeddings.create({
model: 'text-embedding-ada-002',
input: text
});
await db.insert({
id: text.slice(0, 20),
vector: new Float32Array(embedding.data[0].embedding),
metadata: { text }
});
}
}
async function search(query) {
const embedding = await openai.embeddings.create({
model: 'text-embedding-ada-002',
input: query
});
return await db.search({
vector: new Float32Array(embedding.data[0].embedding),
k: 5
});
}
const { VectorDb } = require('ruvector-core');
const clip = require('@xenova/transformers');
const db = new VectorDb({ dimensions: 512 }); // CLIP embedding size
async function indexImages(imagePaths) {
const model = await clip.CLIPModel.from_pretrained('openai/clip-vit-base-patch32');
for (const path of imagePaths) {
const embedding = await model.encode_image(path);
await db.insert({
id: path,
vector: new Float32Array(embedding),
metadata: { path }
});
}
}
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
Built with ❤️ by the ruv.io team
FAQs
High-performance vector database with HNSW indexing - 50k+ inserts/sec, built in Rust for AI/ML similarity search and semantic search applications
We found that @aigentic/core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.