brainy/dist/hnsw/distributedSearch.d.ts
David Snelling f8c45f2d8d Initial commit: Brainy - Multi-Dimensional AI Database
Open source vector database with HNSW indexing, graph relationships,
and metadata facets. Features CLI with professional augmentation registry
integration for discovering extensions and capabilities.
2025-08-18 17:35:06 -07:00

118 lines
3.2 KiB
TypeScript

/**
* Distributed Search System for Large-Scale HNSW Indices
* Implements parallel search across multiple partitions and instances
*/
import { Vector } from '../coreTypes.js';
import { PartitionedHNSWIndex } from './partitionedHNSWIndex.js';
interface DistributedSearchConfig {
maxConcurrentSearches?: number;
searchTimeout?: number;
resultMergeStrategy?: 'distance' | 'score' | 'hybrid';
adaptivePartitionSelection?: boolean;
redundantSearches?: number;
loadBalancing?: boolean;
}
export declare enum SearchStrategy {
BROADCAST = "broadcast",// Search all partitions
SELECTIVE = "selective",// Search subset of partitions
ADAPTIVE = "adaptive",// Dynamically adjust based on results
HIERARCHICAL = "hierarchical"
}
interface SearchWorker {
id: string;
busy: boolean;
tasksCompleted: number;
averageTaskTime: number;
lastTaskTime: number;
}
/**
* Distributed search coordinator for large-scale vector search
*/
export declare class DistributedSearchSystem {
private config;
private searchWorkers;
private searchQueue;
private activeSearches;
private partitionStats;
private searchStats;
constructor(config?: Partial<DistributedSearchConfig>);
/**
* Execute distributed search across multiple partitions
*/
distributedSearch(partitionedIndex: PartitionedHNSWIndex, queryVector: Vector, k: number, strategy?: SearchStrategy): Promise<Array<[string, number]>>;
/**
* Select partitions to search based on strategy
*/
private selectPartitions;
/**
* Adaptive partition selection based on historical performance
*/
private adaptivePartitionSelection;
/**
* Select top-performing partitions
*/
private selectTopPartitions;
/**
* Hierarchical partition selection for very large datasets
*/
private hierarchicalPartitionSelection;
/**
* Create search tasks for parallel execution
*/
private createSearchTasks;
/**
* Execute searches in parallel across selected partitions
*/
private executeParallelSearches;
/**
* Execute search on a single partition
*/
private executePartitionSearch;
/**
* Determine if search should use worker thread
*/
private shouldUseWorkerThread;
/**
* Execute search in worker thread
*/
private executeInWorkerThread;
/**
* Get available worker from pool
*/
private getAvailableWorker;
/**
* Merge search results from multiple partitions
*/
private mergeSearchResults;
/**
* Get partition quality score
*/
private getPartitionQuality;
/**
* Update search statistics
*/
private updateSearchStats;
/**
* Initialize worker thread pool
*/
private initializeWorkerPool;
/**
* Generate unique search ID
*/
private generateSearchId;
/**
* Get search performance statistics
*/
getSearchStats(): typeof this.searchStats & {
workerStats: SearchWorker[];
partitionStats: Array<{
id: string;
stats: any;
}>;
};
/**
* Cleanup resources
*/
cleanup(): void;
}
export {};