vecstore-js
Version:
A pluggable, browser-native vector database using IndexedDB with support for HNSW and local embeddings.
33 lines (32 loc) • 900 B
TypeScript
export type Document = {
id: string;
vector: number[];
content?: unknown;
metadata?: Record<string, any>;
};
export interface Embedder {
embed(text: string): Promise<number[]>;
}
export interface StorageAdapter {
put(doc: Document): Promise<void>;
getAll(): Promise<Document[]>;
}
export interface SearchAlgorithm {
search(queryVector: number[], documents: Document[], topK: number): Promise<(Document & {
score: number;
})[]>;
}
export interface IndexedSearchAlgorithm extends SearchAlgorithm {
addDocument(doc: Document): Promise<void>;
searchIndex(queryVector: number[], topK: number): Promise<(Document & {
score: number;
})[]>;
initialize(): Promise<void>;
}
export interface VecStoreOptions {
embedder: Embedder;
dbName?: string;
store?: StorageAdapter;
search?: SearchAlgorithm;
storeContent?: boolean;
}