interface VectorDBConfig { dim: number; maxElements: number; autoCompaction?: boolean; compactionInterval?: number; } interface VectorEntry { id: string; vector: number[]; metadata?: Record; } interface SearchResult { id: string; similarity: number; metadata: Record; } interface HybridSearchResult extends SearchResult { vectorScore: number; textScore: number; combinedScore: number; } interface HybridSearchOptions { vectorWeight?: number; textWeight?: number; k?: number; metadataFilter?: Record; rerank?: boolean; } export declare class VectorDB { private readonly dim; private readonly maxElements; private readonly namespaces; private compactionIntervalId; private readonly bm25Params; constructor(config: VectorDBConfig); /** * Clean up resources and stop background tasks * Call this before your process exits */ destroy(): void; private initializeNamespace; private validateVector; private tokenizeText; /** * Calculate document length (number of tokens) for BM25 */ private calculateDocLength; /** * Update BM25 statistics when documents are added/removed */ private updateBM25Stats; private indexMetadata; private withReadLock; private withWriteLock; setFullTextIndexedFields(namespace: string, fields: string[]): Promise; /** * Set BM25 parameters for tuning text search * @param k1 - Term frequency saturation parameter (default: 1.5, range: 1.2-2.0) * @param b - Length normalization parameter (default: 0.75, range: 0-1) */ setBM25Params(k1?: number, b?: number): void; insert(namespace: string, id: string, vector: number[], metadata?: Record): Promise; batchInsert(namespace: string, entries: VectorEntry[]): Promise; update(namespace: string, id: string, newVector: number[], newMetadata?: Record): Promise; delete(namespace: string, id: string): Promise; search(namespace: string, queryVector: number[], k?: number, metadataFilter?: Record): Promise; /** * Calculate BM25 score for a document * @param termFreq - Map of term to its frequency in the document * @param docLength - Length of the document * @param nsData - Namespace data containing BM25 statistics * @returns BM25 score */ private calculateBM25Score; /** * Full-text search using BM25 scoring */ fullTextSearch(namespace: string, query: string, k?: number, metadataFilter?: Record): Promise; /** * Perform hybrid search combining vector similarity and BM25 text search */ hybridSearch(namespace: string, queryVector: number[], queryText: string, options?: HybridSearchOptions): Promise; /** * Reciprocal Rank Fusion (RRF) hybrid search */ hybridSearchRRF(namespace: string, queryVector: number[], queryText: string, k?: number, rrf_k?: number, metadataFilter?: Record): Promise; private performVectorSearch; private performTextSearch; private combineSearchResults; private rerankResults; private cosineSimilarity; save(namespace: string, filePath: string): Promise; load(namespace: string, filePath: string): Promise; private scheduleCompaction; private compactNamespace; } export {};