신경망 재순위화

Neural reranking

1차 검색 후보를 질의와 함께 다시 평가해 순서를 바꿉니다.

···
html
<div class="v"><header><b>RERANK</b><span id="state"></span></header><main><div class="rows" id="rows"></div></main><footer>candidate order → model order</footer></div>
css
.v{width:min(92vw,660px);height:min(86vh,310px);box-sizing:border-box;padding:clamp(9px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:7px;color:var(--fg);font:500 clamp(15px,4.5vmin,19px)/1.25 var(--font-sans, sans-serif)}.v header,.v footer{display:flex;justify-content:space-between;align-items:center;gap:8px;white-space:nowrap}.v header b{color:var(--accent);font-size:.9em}.v header span,.v footer{color:var(--muted);font-size:.82em}.v main{flex:1;min-height:0;position:relative;overflow:hidden}.v .mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.v .active{background:var(--accent)!important;color:var(--bg)!important;border-color:var(--accent)!important}.v .muted{opacity:.45} .rows{height:100%;display:flex;flex-direction:column;justify-content:center;gap:5px}.row{height:25%;border:1px solid var(--line);border-radius:5px;padding:4px 8px;display:flex;align-items:center;justify-content:space-between;transition:transform .35s}.row b{font:600 1em ui-monospace,monospace}.row span{color:var(--accent);font:600 .85em ui-monospace,monospace}
js
const orders=[["A","B","C"],["B","C","A"]],scores={A:"0.42",B:"0.91",C:"0.73"};let n=0;function draw(){document.getElementById("rows").innerHTML=orders[n].map((x,i)=>"<div class=\"row "+(i===0?"active":"")+"\"><b>"+(i+1)+"  DOC "+x+"</b><span>"+(n?scores[x]:"candidate")+"</span></div>").join("");document.getElementById("state").textContent=n?"model score":"first pass";n=1-n}draw();setInterval(draw,1400)

검색은 먼저 빠른 방법으로 후보를 넉넉히 모읍니다. 재순위화 모델은 질의와 각 후보 문서를 함께 읽고 더 정밀한 관련성 점수를 매깁니다.

모든 문서를 모델에 넣으면 비용과 지연이 커지므로 후보 집합에만 적용합니다. 좋은 문서가 1차 검색에서 빠지면 재순위화만으로 복구할 수 없습니다.

언제 쓰나

검색 결과 상위 순서의 품질이 답변 정확도에 큰 영향을 줄 때 씁니다.

페이지로 열기 ↗