Qwen3-Reranker-0.6B-Web / assets /index-K3DCGs5P.js
shreyask's picture
Switch to Qwen brand colors (blue theme)
ff1111f verified
(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))o(t);new MutationObserver(t=>{for(const s of t)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function r(t){const s={};return t.integrity&&(s.integrity=t.integrity),t.referrerPolicy&&(s.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?s.credentials="include":t.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(t){if(t.ep)return;t.ep=!0;const s=r(t);fetch(t.href,s)}})();const I="onnx-community/Qwen3-Reranker-0.6B-ONNX",$="Given a web search query, retrieve relevant passages that answer the query",N=["Paris is the capital and largest city of France, located in northern France.","Berlin is the capital city of Germany.","France is a country in Western Europe known for its wine, cuisine, and art.","The Eiffel Tower is a famous landmark located in Paris, France."];let b=0;const M=document.getElementById("status-bar"),R=document.getElementById("status-text"),x=document.getElementById("progress-bar-wrap"),F=document.getElementById("progress-bar"),i=document.getElementById("rank-btn"),v=document.getElementById("docs-list"),S=document.getElementById("results-header"),g=document.getElementById("dtype-select"),y=document.getElementById("query-input");let h=w();function w(){const e=new Worker(new URL(""+new URL("worker-Cv6xZSLB.js",import.meta.url).href,import.meta.url),{type:"module"});return e.addEventListener("message",O),e}const f=new Map;function O({data:e}){const{type:c}=e;if(c==="progress"){const r=e.progress!=null?Math.round(e.progress):null;u("loading",`${e.file??"model"}${r!=null?r+"%":"…"}`,r);return}if(c==="ready"){document.getElementById("runtime-info").textContent=`dtype: ${e.dtype}`,u("ready",`Model ready · ${I}`),i.disabled=!1,g.disabled=!1;return}if(c==="load_error"){u("error",`Failed to load: ${e.message}`),g.disabled=!1;return}if(c==="scored"){const r=f.get(e.id);r&&(r.resolve(e.score),f.delete(e.id));return}if(c==="score_error"){const r=f.get(e.id);r&&(r.reject(new Error(e.message)),f.delete(e.id));return}}function A(e,c,r,o){return new Promise((t,s)=>{f.set(e,{resolve:t,reject:s}),h.postMessage({type:"score",id:e,query:c,doc:r,instruction:o})})}function u(e,c,r=null){M.className=e,R.textContent=c,r!=null?(x.classList.add("visible"),F.style.width=`${r}%`):x.classList.remove("visible")}function C(e){e.style.height="auto",e.style.height=Math.min(e.scrollHeight,128)+"px"}y.addEventListener("input",()=>C(y));function B(e=""){const c=String(++b),r=document.createElement("div");r.className="doc-card",r.dataset.id=c,r.style.animationDelay=`${Math.min((b-1)*30,100)}ms`;const o=document.createElement("span");o.className="doc-index",o.textContent=c.padStart(2,"0");const t=document.createElement("textarea");t.className="doc-text",t.rows=2,t.placeholder="Paste a document or passage…",t.value=e,t.addEventListener("input",()=>C(t));const s=document.createElement("div");s.className="doc-score-wrap";const a=document.createElement("span");a.className="doc-score-num",a.textContent="—";const d=document.createElement("div");d.className="doc-score-bar-wrap";const n=document.createElement("div");n.className="doc-score-bar",d.appendChild(n),s.appendChild(a),s.appendChild(d),r.appendChild(o),r.appendChild(t),r.appendChild(s),v.appendChild(r)}let k=!1;function D(){k&&(i.textContent="↺ Re-rank")}N.forEach(e=>B(e));document.getElementById("add-doc-btn").addEventListener("click",()=>{B(),D()});document.getElementById("clear-btn").addEventListener("click",()=>{document.querySelectorAll(".doc-card").forEach(e=>{e.className="doc-card",e.querySelector(".doc-score-num").textContent="—",e.querySelector(".doc-score-bar").style.width="0%"}),S.classList.remove("visible")});function P(e,c,r){const o=performance.now(),t=a=>(a*100).toFixed(1)+"%";function s(a){const d=Math.min((a-o)/600,1),n=1-Math.pow(1-d,3);e.textContent=t(n*r),c.style.width=`${n*r*100}%`,d<1?requestAnimationFrame(s):e.textContent=t(r)}requestAnimationFrame(s)}function T(e,c){const r=new Map(e.map(o=>[o.dataset.id,o.getBoundingClientRect().top]));c.forEach(o=>{const t=v.querySelector(`[data-id="${CSS.escape(o)}"]`);t&&v.appendChild(t)}),e.forEach(o=>{const t=r.get(o.dataset.id)-o.getBoundingClientRect().top;Math.abs(t)>1&&(o.style.transform=`translateY(${t}px)`,o.style.transition="none",requestAnimationFrame(()=>{o.classList.add("flipping"),o.style.transform="translateY(0)",setTimeout(()=>{o.classList.remove("flipping"),o.style.transition=""},500)}))})}async function L(){const e=y.value.trim(),c=document.getElementById("instruction-input").value.trim()||$;if(!e){y.focus();return}document.querySelectorAll(".doc-card.needs-rank").forEach(n=>n.classList.remove("needs-rank"));const r=[...document.querySelectorAll(".doc-card")],o=r.map(n=>({id:n.dataset.id,text:n.querySelector(".doc-text").value.trim(),card:n})),t=o.filter(n=>n.text);if(!t.length)return;i.disabled=!0,i.classList.add("running"),i.textContent="⟳ Ranking…",t.forEach(({card:n})=>{n.classList.add("computing"),n.querySelector(".doc-score-num").textContent="⟳"});const s=[];for(let n=0;n<t.length;n++){const{id:l,text:E,card:m}=t[n];u("loading",`Scoring document ${n+1} / ${t.length}…`,n/t.length*100);try{const p=await A(l,e,E,c);m.classList.remove("computing"),P(m.querySelector(".doc-score-num"),m.querySelector(".doc-score-bar"),p),s.push({id:l,score:p,card:m})}catch(p){console.error("Scoring failed for doc",l,p),m.classList.remove("computing"),m.querySelector(".doc-score-num").textContent="err",u("error",`Error: ${p.message}`),s.push({id:l,score:-1,card:m})}}s.sort((n,l)=>l.score-n.score),s.forEach(({card:n},l)=>{n.className="doc-card",l<3&&n.classList.add(`ranked-${l+1}`)});const a=o.filter(n=>!n.text).map(n=>n.id);T(r,[...s.map(n=>n.id),...a]);const d=o.filter(n=>n.card.querySelector(".doc-text").value.trim()&&!t.some(E=>E.id===n.id));d.forEach(({card:n})=>n.classList.add("needs-rank")),d.length>0?u("ready",`Scored ${t.length} · ${d.length} unscored — hit Rank again ↺`):u("ready",`Scored ${t.length} document${t.length!==1?"s":""} · model ready`),S.classList.add("visible"),k=!0,i.disabled=!1,i.classList.remove("running"),i.textContent="↺ Re-rank"}i.addEventListener("click",L);function q(){const e=g.value;g.disabled=!0,i.disabled=!0,u("loading",`Downloading model (${e})…`,0),h.postMessage({type:"load",dtype:e})}g.addEventListener("change",()=>{i.removeEventListener("click",L),h.terminate(),h=w(),i.addEventListener("click",L),q()});q();