重排对比

renderKbRerankCompare 三列 grid(重排前 | Δ | 重排后):按 documentId+chunkId 稳定 join,after 名次优先、before-only 条目(落选)殿后;Δ 用 after.rank − before.rank(↑N 绿 / ↓N 红 / —),单侧缺失标「新进 / 落选」;双分数列各按列内 max 归一,after 列 scoreKind 一律 rerank。顶部模型徽标 + 开关(icen:kb-rerank-toggle,关闭后重排后列压淡不隐藏)。

↑3 / ↓2 / — 与「新进 / 落选」一次看全 · 点右上开关对比开/关(关闭 = 重排后列压淡,显式禁用不隐藏)

<div id="demo-kb-rerank"></div><p class="demo-label" id="kb-rerank-log" style="margin-top:8px">↑3 / ↓2 / — 与「新进 / 落选」一次看全 · 点右上开关对比开/关(关闭 = 重排后列压淡,显式禁用不隐藏)</p>

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

import '@icen.ai/ui/kit/kb-rerank';

也可以用脚手架直接打印引入行:

bunx --bun @icen.ai/ui add kb-rerank

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/kb-search.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

import { renderKbRerankCompare } from '@icen.ai/ui/kit/kb-rerank'; const box = renderKbRerankCompare(el, {  model: 'bge-reranker-v2-m3',                 // 顶部徽标;缺省 'rerank'  before: [                                     // 顺序即 rank;score null → 值「—」不渲条    { chunkId: 'c-301', documentId: 'doc-supplier', title: '供应商准入与考核标准', snippet: '…', score: 0.61, scoreKind: 'cosine' },    /* … */  ],  after: [                                      // 按 documentId+chunkId join;多出的标「新进」    { chunkId: 'c-118', documentId: 'doc-supplier', title: '原材料价格月度跟踪', snippet: '…', score: 0.97, scoreKind: 'rerank' },    /* … */  ],});box.addEventListener('icen:kb-rerank-toggle', (e) => {  // e.detail { enabled, model };关闭时容器挂 .is-off(after 列压淡)});