quickgrid commited on
Commit
08118b2
·
verified ·
1 Parent(s): bf09140

possible fix

Browse files
Files changed (1) hide show
  1. index.html +18 -12
index.html CHANGED
@@ -842,18 +842,24 @@ async function embedText(t){const o=await ST.embedder(t,{pooling:'mean',normaliz
842
  async function rerankRes(q,res){
843
  if(!ST.reranker||!ST.nodeEnabled.rerank)return[];
844
  try{
845
- const pairs=res.map(r=>[q,r.text]);
846
- const outputs=await ST.reranker(pairs);
847
- const scores=outputs.map((out,i)=>{
848
- let score=0;
849
- if(typeof out==='number'){score=out}
850
- else if(Array.isArray(out)&&out.length>0){score=out[0].score??0}
851
- else if(out&&typeof out.score==='number'){score=out.score}
852
- else{score=res[i].score}
853
- if(score<0||score>1){score=1/(1+Math.exp(-score))}
854
- return score;
855
  });
856
- return res.map((r,i)=>({...r,rerankScore:scores[i]})).sort((a,b)=>b.rerankScore-a.rerankScore).slice(0,CFG.topKRerank);
 
 
 
 
 
 
 
 
857
  }catch(e){console.warn('Rerank err:',e);return[]}
858
  }
859
  async function genAnswer(q,ctx){
@@ -912,7 +918,7 @@ function renderRet(items,lid,rr=false){
912
  items.forEach((item,i)=>{
913
  const d=document.createElement('div');d.className=`ret-item ${rr?'sel':''}`;
914
  const sc=rr?(item.rerankScore??item.score):item.score;
915
- d.innerHTML=`<div class="ret-rank">#${i+1}</div><div class="ret-text">${escH(item.text)}</div><div class="ret-foot"><span class="ret-meta">${item.source||'?'} · ${item.category||'?'}</span><div class="score-bar"><div class="score-fill" style="width:0"></div></div><span class="score-pct">${(sc*100).toFixed(1)}%</span></div>`;
916
  el.appendChild(d);
917
  setTimeout(()=>{d.classList.add(rr?'sel':'lit');d.querySelector('.score-fill').style.width=Math.min(100,Math.abs(sc)*100)+'%'},i*80);
918
  });
 
842
  async function rerankRes(q,res){
843
  if(!ST.reranker||!ST.nodeEnabled.rerank)return[];
844
  try{
845
+ const outputs=await ST.reranker(res.map(r=>q+' </s> '+r.text));
846
+ const scores=outputs.map(out=>{
847
+ let s=0;
848
+ if(typeof out==='number')s=out;
849
+ else if(Array.isArray(out)&&out.length>0)s=out[0]?.score??(typeof out[0]==='number'?out[0]:0);
850
+ else if(out&&typeof out.score==='number')s=out.score;
851
+ if(s<0||s>1)s=1/(1+Math.exp(-s));
852
+ return s;
 
 
853
  });
854
+ const mn=Math.min(...scores),mx=Math.max(...scores);
855
+ let norm;
856
+ if(mx>mn)norm=scores.map(s=>(s-mn)/(mx-mn));
857
+ else{
858
+ const orig=res.map(r=>r.score);
859
+ const om=Math.min(...orig),ox=Math.max(...orig);
860
+ norm=ox>om?orig.map(s=>(s-om)/(ox-om)):orig.map((_,i)=>(orig.length-i-1)/(orig.length-1));
861
+ }
862
+ return res.map((r,i)=>({...r,rerankScore:norm[i]})).sort((a,b)=>b.rerankScore-a.rerankScore).slice(0,CFG.topKRerank);
863
  }catch(e){console.warn('Rerank err:',e);return[]}
864
  }
865
  async function genAnswer(q,ctx){
 
918
  items.forEach((item,i)=>{
919
  const d=document.createElement('div');d.className=`ret-item ${rr?'sel':''}`;
920
  const sc=rr?(item.rerankScore??item.score):item.score;
921
+ d.innerHTML=`<div class="ret-rank">#${i+1}</div><div class="ret-text">${escH(item.text)}</div><div class="ret-foot"><span class="ret-meta">${item.source||'?'} · ${item.category||'?'}</span><div class="score-bar"><div class="score-fill" style="width:0"></div></div><span class="score-pct">${(Math.abs(sc)*100).toFixed(1)}%</span></div>`;
922
  el.appendChild(d);
923
  setTimeout(()=>{d.classList.add(rr?'sel':'lit');d.querySelector('.score-fill').style.width=Math.min(100,Math.abs(sc)*100)+'%'},i*80);
924
  });