重排对比
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 pnpm add @icen.ai/ui npm install @icen.ai/ui yarn 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 列压淡)});