import { CloseVectorEmbeddings } from './embeddings'; import { CloseVectorDocument } from './document'; import { CloseVectorCredentials } from './credentials'; export type AddDocumentOptions = Record; export abstract class CloseVectorSaveableVectorStore { declare FilterType: object | string; embeddings: CloseVectorEmbeddings; credentials?: CloseVectorCredentials; constructor(embeddings: CloseVectorEmbeddings, credentials?: CloseVectorCredentials) { this.embeddings = embeddings; this.credentials = credentials; } abstract save(directory: string): Promise; static load( _directory: string, _embeddings: CloseVectorEmbeddings ): Promise { throw new Error('Not implemented'); } abstract addVectors( vectors: number[][], documents: CloseVectorDocument[], options?: AddDocumentOptions ): Promise; abstract addDocuments( documents: CloseVectorDocument[], options?: AddDocumentOptions ): Promise; // eslint-disable-next-line @typescript-eslint/no-explicit-any async delete(_params?: Record): Promise { throw new Error('Not implemented.'); } // abstract saveToCloud(options?: { // uuid?: string; // url?: string; // public?: boolean; // credentials?: CloseVectorCredentials; // }); // abstract loadFromCloud(options: { // uuid?: string; // url?: string, // credentials?: CloseVectorCredentials, // onProgress?: (progress: { loaded: number; total: number }) => void; // }): Promise; abstract similaritySearchVectorWithScore( query: number[], k: number, filter?: this['FilterType'] ): Promise<[CloseVectorDocument, number][]>; async similaritySearch( query: string, k = 4, filter: this['FilterType'] | undefined = undefined ): Promise { const results = await this.similaritySearchVectorWithScore( await this.embeddings.embedQuery(query), k, filter ); return results.map(result => result[0]); } async similaritySearchWithScore( query: string, k = 4, filter: this['FilterType'] | undefined = undefined ): Promise<[CloseVectorDocument, number][]> { return this.similaritySearchVectorWithScore( await this.embeddings.embedQuery(query), k, filter ); } }