DUSUNEN-Search-Lab / worker.js
GoktugD's picture
Rebrand public DUSUNEN portfolio
136e519 verified
Raw
History Blame Contribute Delete
1.23 kB
import { env, pipeline } from "https://cdn.jsdelivr.net/npm/@huggingface/transformers@4.2.0";
const MODEL_ID = "GoktugD/DUSUNEN-Rota-270M-v1";
const TASK = "Given a Turkish web search query, retrieve relevant passages that answer the query";
env.allowLocalModels = false;
env.useBrowserCache = true;
let extractorPromise;
function getExtractor() {
if (!extractorPromise) {
extractorPromise = pipeline("feature-extraction", MODEL_ID, {
dtype: "q8",
progress_callback: (event) => self.postMessage({ type: "progress", event }),
});
}
return extractorPromise;
}
self.onmessage = async ({ data }) => {
if (data.type !== "search") return;
try {
const extractor = await getExtractor();
const query = `Instruct: ${TASK}\nQuery: ${data.query.trim()}`;
const started = performance.now();
const output = await extractor(query, { pooling: "last_token", normalize: true });
self.postMessage({
type: "result",
requestId: data.requestId,
embedding: Array.from(output.data),
inferenceMs: performance.now() - started,
});
} catch (error) {
self.postMessage({ type: "error", message: error?.message || String(error) });
extractorPromise = undefined;
}
};