import { env, pipeline } from "https://cdn.jsdelivr.net/npm/@huggingface/transformers@4.2.0"; const MODEL_ID = "GoktugD/DUSUNEN-Pusula-118M-v1"; 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 !== "encode") return; try { const extractor = await getExtractor(); const started = performance.now(); const output = await extractor(data.query.trim(), { pooling: "mean", normalize: true }); self.postMessage({ type: "result", requestId: data.requestId, embedding: Array.from(output.data), inferenceMs: performance.now() - started, }); } catch (error) { extractorPromise = undefined; self.postMessage({ type: "error", message: error?.message || String(error) }); } };