/** * SMI-584: Hybrid Search with Semantic Embeddings * Combines FTS5 keyword search with vector similarity using RRF */ import { type SearchResult } from '../cache/index.js'; export interface HybridSearchOptions { dbPath: string; cachePath?: string; k?: number; ftsWeight?: number; semanticWeight?: number; } export interface SearchQuery { query: string; limit?: number; offset?: number; filters?: { source?: string; category?: string; minQuality?: number; }; } export interface SearchResponse { results: SearchResult[]; totalCount: number; cached: boolean; searchTimeMs: number; } export declare class HybridSearch { private db; private embeddings; private cache; private k; private ftsWeight; private semanticWeight; /** * @deprecated Use HybridSearch.create(options) — async factory with WASM fallback. * This constructor always throws to prevent silent data loss. */ constructor(_options: HybridSearchOptions); /** * Async factory — supports both native and WASM SQLite. * * @param options - Search options; dbPath is opened via createDatabaseAsync * @returns Fully initialised HybridSearch instance */ static create(options: HybridSearchOptions): Promise; private initFTS; /** * FTS5 keyword search */ private ftsSearch; /** * Semantic similarity search using embeddings */ private semanticSearch; /** * Main hybrid search combining FTS5 and semantic search */ search(query: SearchQuery): Promise; /** * Index a skill for searching */ indexSkill(skill: { id: string; name: string; description: string; source?: string; category?: string; qualityScore?: number; }): Promise; /** * Bulk index skills */ bulkIndex(skills: Array<{ id: string; name: string; description: string; source?: string; category?: string; qualityScore?: number; }>): Promise; /** * Get cache statistics */ getCacheStats(): { l1: import("../cache/lru.js").CacheStats; l2: import("../cache/lru.js").CacheStats | null; }; /** * Close all connections */ close(): void; } export default HybridSearch; //# sourceMappingURL=hybrid.d.ts.map