UNPKG

closevector-common

Version:

89 lines (73 loc) 2.44 kB
import { CloseVectorEmbeddings } from './embeddings'; import { CloseVectorDocument } from './document'; import { CloseVectorCredentials } from './credentials'; export type AddDocumentOptions = Record<string, any>; 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<void>; static load( _directory: string, _embeddings: CloseVectorEmbeddings ): Promise<CloseVectorSaveableVectorStore> { throw new Error('Not implemented'); } abstract addVectors( vectors: number[][], documents: CloseVectorDocument[], options?: AddDocumentOptions ): Promise<string[] | void>; abstract addDocuments( documents: CloseVectorDocument[], options?: AddDocumentOptions ): Promise<string[] | void>; // eslint-disable-next-line @typescript-eslint/no-explicit-any async delete(_params?: Record<string, any>): Promise<void> { 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<CloseVectorSaveableVectorStore>; abstract similaritySearchVectorWithScore( query: number[], k: number, filter?: this['FilterType'] ): Promise<[CloseVectorDocument, number][]>; async similaritySearch( query: string, k = 4, filter: this['FilterType'] | undefined = undefined ): Promise<CloseVectorDocument[]> { 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 ); } }