Vector Search Module

The Vector Search module provides similarity search capabilities for embeddings, enabling AI/ML applications like RAG (Retrieval Augmented Generation) and semantic search.

What is it?

VectorSearch is a class that provides methods for storing and searching vector embeddings. It supports cosine similarity, euclidean distance, and dot product calculations, with optimizations for precomputed magnitudes.

Why do you need it?

  • AI/ML Applications: Store and search embeddings for RAG systems
  • Semantic Search: Find similar documents based on meaning
  • Recommendations: Find similar items based on embeddings
  • Performance: Optimized with precomputed magnitudes and caching

How it works

VectorSearch stores embeddings as arrays in documents and uses AQL to compute similarity scores (cosine, euclidean, or dot product). It can precompute vector magnitudes for faster cosine similarity calculations and supports filtering and caching.

Exports

  • VectorSearch - Main VectorSearch class
  • VectorSearchOptions - TypeScript type for search options
  • EmbeddingOptions - TypeScript type for embedding options

Method Signatures

  • constructor(database: Database) - Create VectorSearch instance
  • static computeMagnitude(vector: number[]): number - Compute L2 norm
  • createVectorIndex(collectionName: string, field: string, options?: EmbeddingOptions): Promise<void>
  • similaritySearch(collectionName: string, queryVector: number[], options?: VectorSearchOptions): Promise<any[]>
  • store(collectionName: string, document: any): Promise<any>

TypeScript Types

interface VectorSearchOptions {
  limit?: number;
  threshold?: number;
  distance?: 'cosine' | 'euclidean' | 'dot';
  filter?: Record;
  usePrecomputedMagnitudes?: boolean;
  cache?: CacheManager;
}

interface EmbeddingOptions {
  field?: string;
  dimensions?: number;
}
📖 For usage examples and best practices: See Vector Search Guide for detailed documentation, examples, and best practices.