UNPKG

@andrejs1979/document

Version:

MongoDB-compatible document database for NoSQL

117 lines 4.07 kB
/** * 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