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; } };