closevector-common
Version:
89 lines (73 loc) • 2.44 kB
text/typescript
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
);
}
}