Skip to content
~/docs/guides/vectors
DOCUMENTATION

Vector Search

Semantic similarity search with embeddings

KiteDB includes built-in vector search for semantic similarity queries. Store embeddings and find similar nodes using IVF indexing.

Creating a Vector Index

typescript
import { createVectorIndex } from '@kitedb/core';

// Create an index for 1536-dimensional vectors (OpenAI embeddings)
const index = createVectorIndex({
  dimensions: 1536,
  metric: 'Cosine',  // or 'Euclidean', 'DotProduct'
});

Storing Embeddings

typescript
// Generate embedding with your preferred provider
const response = await openai.embeddings.create({
  model: 'text-embedding-ada-002',
  input: 'Your document content here',
});
const embedding = response.data[0].embedding;

// Store the vector, associated with a node ID
index.set(doc.id, embedding);
typescript
// Search for similar vectors
const queryEmbedding = await getEmbedding('search query');

const results = index.search(queryEmbedding, {
  k: 10,           // Return top 10 results
  threshold: 0.7,  // Minimum similarity (0-1)
});

// Results contain nodeId, distance, and similarity
for (const hit of results) {
  console.log(`Node ${hit.nodeId}: similarity=${hit.similarity.toFixed(3)}`);
}

Index Management

typescript
// Check if a node has a vector
const hasVector = index.has(doc.id);

// Get a stored vector
const vector = index.get(doc.id);

// Delete a vector
index.delete(doc.id);

// Build/rebuild the IVF index for faster search
index.buildIndex();

// Get index statistics
const stats = index.stats();
console.log(`Total vectors: ${stats.totalVectors}`);

Next Steps