update computeImageEmbedding to accept model param

This commit is contained in:
Abhinav 2024-01-05 17:06:46 +05:30
parent b4a630cf3b
commit 66ccae9314
4 changed files with 18 additions and 11 deletions

View file

@ -2,8 +2,10 @@ import { ipcRenderer } from 'electron';
import { writeStream } from '../services/fs';
import { isExecError } from '../utils/error';
import { parseExecError } from '../utils/error';
import { Model } from '../types';
export async function computeImageEmbedding(
model: Model,
imageData: Uint8Array
): Promise<Float32Array> {
let tempInputFilePath = null;
@ -13,7 +15,8 @@ export async function computeImageEmbedding(
await writeStream(tempInputFilePath, imageStream);
const embedding = await ipcRenderer.invoke(
'compute-image-embedding',
tempInputFilePath
model,
imageData
);
return embedding;
} catch (err) {

View file

@ -36,6 +36,7 @@ const TEXT_EMBEDDING_EXTRACT_CMD: string[] = [
const ort = require('onnxruntime-node');
import Tokenizer from '../utils/clip-bpe-ts/mod';
import { readFile } from 'promise-fs';
import { Model } from '../types';
const TEXT_MODEL_DOWNLOAD_URL = {
ggml: 'https://models.ente.io/clip-vit-base-patch32_ggml-text-model-f16.gguf',
@ -208,16 +209,14 @@ function getTokenizer() {
}
export async function computeImageEmbedding(
model: Model,
inputFilePath: string
): Promise<Float32Array> {
const ggmlImageEmbedding = await computeGGMLImageEmbedding(inputFilePath);
const onnxImageEmbedding = await computeONNXImageEmbedding(inputFilePath);
const score = await computeClipMatchScore(
ggmlImageEmbedding,
onnxImageEmbedding
);
log.info('imageEmbeddingScore', score);
return onnxImageEmbedding;
if (model === Model.GGML_CLIP) {
return await computeGGMLImageEmbedding(inputFilePath);
} else {
return await computeONNXImageEmbedding(inputFilePath);
}
}
export async function computeGGMLImageEmbedding(

View file

@ -70,3 +70,8 @@ export interface AppUpdateInfo {
export interface GetFeatureFlagResponse {
desktopCutoffVersion?: string;
}
export enum Model {
GGML_CLIP = 'ggml-clip',
ONNX_CLIP = 'onnx-clip',
}

View file

@ -175,8 +175,8 @@ export default function setupIpcComs(
setOptOutOfCrashReports(optOut);
updateOptOutOfCrashReports(optOut);
});
ipcMain.handle('compute-image-embedding', (_, inputFilePath) => {
return computeImageEmbedding(inputFilePath);
ipcMain.handle('compute-image-embedding', (_, model, inputFilePath) => {
return computeImageEmbedding(model, inputFilePath);
});
ipcMain.handle('compute-text-embedding', (_, text) => {
return computeTextEmbedding(text);