@andrejs1979/document
Version:
MongoDB-compatible document database for NoSQL
117 lines • 4.07 kB
TypeScript
/**
* NoSQL - Hybrid Document+Vector Search
* Advanced search combining text, metadata, and vector similarity
*/
import { QueryFilter, HybridSearchQuery, HybridSearchResult, VectorDocumentResult, DocumentDatabaseConfig } from '../types';
import { DistanceMetric } from '../../vector/types';
import { DocumentStorage } from '../storage/document-storage';
import { MongoQueryEngine } from './query-engine';
/**
* Hybrid search engine combining document queries with vector similarity
*/
export declare class HybridSearchEngine {
private documentStorage;
private queryEngine;
private config;
private searchCache;
constructor(documentStorage: DocumentStorage, queryEngine: MongoQueryEngine, config: DocumentDatabaseConfig);
/**
* Perform hybrid search combining text, vector, and metadata filters
*/
hybridSearch(database: string, collection: string, query: HybridSearchQuery): Promise<HybridSearchResult>;
/**
* Search documents by text content with optional vector boost
*/
textSearch(database: string, collection: string, searchText: string, options?: {
vectorBoost?: boolean;
filters?: QueryFilter;
limit?: number;
threshold?: number;
}): Promise<VectorDocumentResult[]>;
/**
* Search documents by vector similarity with optional text boost
*/
vectorSearch(database: string, collection: string, queryVector: Float32Array | number[], options?: {
textBoost?: boolean;
filters?: QueryFilter;
limit?: number;
threshold?: number;
metric?: DistanceMetric;
}): Promise<VectorDocumentResult[]>;
/**
* Semantic search combining text embedding and vector similarity
*/
semanticSearch(database: string, collection: string, searchText: string, options?: {
embeddingModel?: string;
filters?: QueryFilter;
limit?: number;
threshold?: number;
textWeight?: number;
vectorWeight?: number;
}): Promise<VectorDocumentResult[]>;
/**
* Multi-modal search across different content types
*/
multiModalSearch(database: string, collection: string, queries: {
text?: string;
image?: Uint8Array;
audio?: Uint8Array;
video?: Uint8Array;
}, options?: {
weights?: Record<string, number>;
filters?: QueryFilter;
limit?: number;
threshold?: number;
}): Promise<VectorDocumentResult[]>;
/**
* Similar document finder using document as query
*/
findSimilarDocuments(database: string, collection: string, documentId: string, options?: {
useText?: boolean;
useVector?: boolean;
useMetadata?: boolean;
filters?: QueryFilter;
limit?: number;
threshold?: number;
}): Promise<VectorDocumentResult[]>;
/**
* Recommendation engine based on user interaction history
*/
getRecommendations(database: string, collection: string, userHistory: {
viewedDocuments?: string[];
likedDocuments?: string[];
searchQueries?: string[];
}, options?: {
limit?: number;
diversityFactor?: number;
filters?: QueryFilter;
}): Promise<VectorDocumentResult[]>;
private determineSearchType;
private performTextSearch;
private performVectorSearch;
private performHybridSearch;
private mergeSearchResults;
private calculateTextScore;
private calculateVectorSimilarity;
private extractSearchableText;
private extractMetadataFilters;
private generateEmbedding;
private generateImageEmbedding;
private combineEmbeddings;
private convertToVectorDocumentResults;
private applyDiversityFilter;
private calculateDocumentSimilarity;
private getSearchCacheKey;
/**
* Clear search cache
*/
clearSearchCache(): void;
/**
* Get search cache statistics
*/
getSearchCacheStats(): {
size: number;
memoryUsage: number;
};
}
//# sourceMappingURL=hybrid-search.d.ts.map