/**
 * Advanced vector search utilities and algorithms
 */
export interface VectorSearchResult<T = any> {
    item: T;
    score: number;
    distance?: number;
}
export interface VectorIndex<T = any> {
    id: string | number;
    vector: number[];
    data: T;
}
export declare class VectorSearchEngine<T = any> {
    private index;
    private dimensions;
    /**
     * Add vectors to the search index
     */
    addVectors(vectors: VectorIndex<T>[]): void;
    /**
     * Search for similar vectors using cosine similarity
     */
    searchSimilar(queryVector: number[], options?: {
        limit?: number;
        threshold?: number;
        includeDistance?: boolean;
    }): VectorSearchResult<T>[];
    /**
     * Search using multiple query vectors (ensemble search)
     */
    searchEnsemble(queryVectors: number[][], weights?: number[], options?: {
        limit?: number;
        threshold?: number;
        aggregation?: 'mean' | 'max' | 'weighted';
    }): VectorSearchResult<T>[];
    /**
     * Find approximate nearest neighbors using locality-sensitive hashing
     */
    searchApproximate(queryVector: number[], options?: {
        limit?: number;
        numHashes?: number;
        bucketSize?: number;
    }): VectorSearchResult<T>[];
    /**
     * Get statistics about the vector index
     */
    getIndexStats(): {
        size: number;
        dimensions: number;
        avgMagnitude: number;
        memoryUsage: number;
    };
    /**
     * Clear the index
     */
    clear(): void;
    /**
     * Remove vectors by ID
     */
    removeVectors(ids: (string | number)[]): number;
    /**
     * Update a vector in the index
     */
    updateVector(id: string | number, newVector: number[], newData?: T): boolean;
    /**
     * Get item ID for deduplication
     */
    private getItemId;
}
/**
 * Create a vector search engine from memories
 */
export declare function createMemoryVectorIndex<T extends {
    id?: string | number;
    embedding?: number[];
}>(memories: T[]): VectorSearchEngine<T>;
/**
 * Hybrid search combining vector and text search
 */
export declare function hybridSearch<T>(vectorResults: VectorSearchResult<T>[], textResults: T[], options?: {
    vectorWeight?: number;
    textWeight?: number;
    maxResults?: number;
}): VectorSearchResult<T>[];
//# sourceMappingURL=vector-search.d.ts.map