56b0643890
* basic changes update version check set ef_search for clip * pgvector compatibility Revert "pgvector compatibility" This reverts commit 2b66a52aa4097dd27da58138c5288fd87cb9b24a. pgvector compatibility: minimal edition pgvector startup check * update extension at startup * wording shortened vector extension variable name * nightly docker * fixed version checks * update tests add tests for updating extension remove unnecessary check * simplify `getRuntimeConfig` * wording * reindex on minor version update * 0.2 upgrade testing update prod compose * acquire lock for init * wip vector down on shutdown * use upgrade helper * update image tag * refine restart check check error message * test reindex testing upstream fix formatting fixed reindexing * use enum in signature * fix tests remove unused code * add reindexing tests * update to official 0.2 remove alpha from version name * add warning test if restart required * update test image to 0.2.0 * linting and test cleanup * formatting * update sql * wording * handle setting search path for new and existing databases * handle new db in reindex check * fix post-update reindexing * get dim size * formatting * use vbase * handle different db name * update sql * linting * fix suggested env
30 lines
815 B
TypeScript
30 lines
815 B
TypeScript
import { AssetEntity, AssetFaceEntity, SmartInfoEntity } from '@app/infra/entities';
|
|
|
|
export const ISmartInfoRepository = 'ISmartInfoRepository';
|
|
|
|
export type Embedding = number[];
|
|
|
|
export interface EmbeddingSearch {
|
|
userIds: string[];
|
|
embedding: Embedding;
|
|
numResults: number;
|
|
withArchived?: boolean;
|
|
}
|
|
|
|
export interface FaceEmbeddingSearch extends EmbeddingSearch {
|
|
maxDistance?: number;
|
|
hasPerson?: boolean;
|
|
}
|
|
|
|
export interface FaceSearchResult {
|
|
face: AssetFaceEntity;
|
|
distance: number;
|
|
}
|
|
|
|
export interface ISmartInfoRepository {
|
|
init(modelName: string): Promise<void>;
|
|
searchCLIP(search: EmbeddingSearch): Promise<AssetEntity[]>;
|
|
searchFaces(search: FaceEmbeddingSearch): Promise<FaceSearchResult[]>;
|
|
upsert(smartInfo: Partial<SmartInfoEntity>, embedding?: Embedding): Promise<void>;
|
|
}
|