import type { Memory } from "./types"; export interface SearchOptions { query: string; limit?: number; alpha?: number; type?: string; minScore?: number; topK?: number; } export interface VectorSearchOptions { limit?: number; type?: string; excludeAggregateRecall?: boolean; } export interface HybridSearchOptions { limit?: number; alpha?: number; minScore?: number; topK?: number; type?: string; } export interface SearchResult { id: string; content: string; score: number; type: string; source: "vector" | "keyword" | "hybrid"; tags?: string[]; confidence?: number; } /** * SQLite database interface for raw queries */ interface SQLiteDatabase { prepare(sql: string): { run(...args: unknown[]): void; get(...args: unknown[]): Record | undefined; all(...args: unknown[]): Record[]; }; } /** * Database wrapper interface (like our Database class) */ interface DatabaseWrapper { db: SQLiteDatabase | null; getMemories(type?: string): Memory[]; } export declare function buildFtsMatchQuery(query: string): string | null; export declare function cosineSimilarity(a: Float32Array, b: Float32Array): number; /** * Pure vector search using sqlite-vec * Uses the vec_embeddings virtual table for efficient similarity search */ export declare function vectorSearch(db: SQLiteDatabase, queryVector: Float32Array, options?: VectorSearchOptions): Array<{ id: string; score: number; }>; /** * Pure BM25 keyword search using FTS5 */ export declare function keywordSearch(db: SQLiteDatabase, query: string, limit?: number): Array<{ id: string; score: number; }>; /** * Hybrid search combining vector similarity and BM25 keyword search * Scores are blended using alpha parameter */ export declare function hybridSearch(db: SQLiteDatabase, queryVector: Float32Array | null, queryText: string, options?: HybridSearchOptions): SearchResult[]; /** * Main search entry point * Falls back to simple text matching if hybrid search components unavailable */ export declare function search(db: SQLiteDatabase | DatabaseWrapper, options: SearchOptions): Promise; export {}; //# sourceMappingURL=search.d.ts.map