/** * SQLite Vector Index using sqlite-vec * * Provides vector similarity search using sqlite-vec extension. */ import type Database from "better-sqlite3"; /** * Vector index configuration */ export interface SQLiteVecConfig { db: Database.Database; tableName: string; dimensions: number; } /** * Vector search result */ export interface VectorSearchResult { rowId: number; distance: number; } /** * SQLite Vector Index * * Manages vector embeddings using sqlite-vec virtual tables */ export declare class SQLiteVecIndex { private db; private tableName; private dimensions; constructor(config: SQLiteVecConfig); /** * Create the virtual table if not exists */ createTable(): void; /** * Insert a single embedding and return the generated rowid * * Note: sqlite-vec auto-generates rowid, we cannot specify it explicitly. * * @param embedding - The embedding vector * @returns The generated rowid */ insert(embedding: number[]): number; /** * Insert embeddings in batch (transactional) * * Note: sqlite-vec auto-generates rowids, we cannot specify them. * * @param embeddings - Array of embedding vectors * @returns Array of generated rowids (in insertion order) */ insertBatch(embeddings: number[][]): number[]; /** * Update an existing embedding * * Note: sqlite-vec doesn't support UPDATE on virtual tables. * We need to DELETE and INSERT. * * @param rowId - The rowid to delete * @param embedding - New embedding vector * @returns The newly generated rowid (may be different from original) */ update(rowId: number, embedding: number[]): number; /** * Delete an embedding */ delete(rowId: number): void; /** * Delete embeddings in batch (transactional) */ deleteBatch(rowIds: number[]): void; /** * KNN search - find similar vectors * * @param query - Query embedding * @param limit - Number of results * @returns Array of { rowId, distance } */ search(query: number[], limit?: number): VectorSearchResult[]; /** * Get all row IDs in the index */ getAllRowIds(): number[]; /** * Count vectors in the index */ count(): number; /** * Clear all vectors from the index */ clear(): void; /** * Drop the virtual table */ drop(): void; } /** * Create vector indices for episodic and semantic memories */ export declare function createVectorIndices(db: Database.Database, dimensions: number): { episodicIndex: SQLiteVecIndex; semanticIndex: SQLiteVecIndex; }; //# sourceMappingURL=sqlite-vec.d.ts.map