Mark top recall events
This commit is contained in:
@@ -36,6 +36,7 @@ const RECENT_ORPHAN_MAX = 5000; // [待整理] 独立预算
|
|||||||
const TOTAL_BUDGET_MAX = 15000; // 总预算(用于日志显示)
|
const TOTAL_BUDGET_MAX = 15000; // 总预算(用于日志显示)
|
||||||
const L3_MAX = 2000;
|
const L3_MAX = 2000;
|
||||||
const ARCS_MAX = 1500;
|
const ARCS_MAX = 1500;
|
||||||
|
const TOP_N_STAR = 5; // 相似度前N条加⭐
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
// 工具函数
|
// 工具函数
|
||||||
@@ -466,7 +467,9 @@ async function buildVectorPrompt(store, recallResult, causalById, queryEntities
|
|||||||
const selectedDirect = []; // { event, text, tokens, chunk, hasEvidence }
|
const selectedDirect = []; // { event, text, tokens, chunk, hasEvidence }
|
||||||
const selectedSimilar = []; // { event, text, tokens, chunk, hasEvidence }
|
const selectedSimilar = []; // { event, text, tokens, chunk, hasEvidence }
|
||||||
|
|
||||||
for (const e of candidates) {
|
for (let candidateRank = 0; candidateRank < candidates.length; candidateRank++) {
|
||||||
|
const e = candidates[candidateRank];
|
||||||
|
|
||||||
if (total.used >= total.max) break;
|
if (total.used >= total.max) break;
|
||||||
|
|
||||||
const isDirect = e._recallType === "DIRECT";
|
const isDirect = e._recallType === "DIRECT";
|
||||||
@@ -494,9 +497,9 @@ async function buildVectorPrompt(store, recallResult, causalById, queryEntities
|
|||||||
|
|
||||||
// 写入
|
// 写入
|
||||||
if (isDirect) {
|
if (isDirect) {
|
||||||
selectedDirect.push({ event: e.event, text, tokens: cost, chunk: chosenChunk, hasEvidence });
|
selectedDirect.push({ event: e.event, text, tokens: cost, chunk: chosenChunk, hasEvidence, candidateRank });
|
||||||
} else {
|
} else {
|
||||||
selectedSimilar.push({ event: e.event, text, tokens: cost, chunk: chosenChunk, hasEvidence });
|
selectedSimilar.push({ event: e.event, text, tokens: cost, chunk: chosenChunk, hasEvidence, candidateRank });
|
||||||
}
|
}
|
||||||
|
|
||||||
injectionStats.events.selected++;
|
injectionStats.events.selected++;
|
||||||
@@ -533,8 +536,15 @@ async function buildVectorPrompt(store, recallResult, causalById, queryEntities
|
|||||||
selectedDirect.sort((a, b) => getEventSortKey(a.event) - getEventSortKey(b.event));
|
selectedDirect.sort((a, b) => getEventSortKey(a.event) - getEventSortKey(b.event));
|
||||||
selectedSimilar.sort((a, b) => getEventSortKey(a.event) - getEventSortKey(b.event));
|
selectedSimilar.sort((a, b) => getEventSortKey(a.event) - getEventSortKey(b.event));
|
||||||
|
|
||||||
const selectedDirectTexts = selectedDirect.map((it, i) => renumberEventText(it.text, i + 1));
|
const selectedDirectTexts = selectedDirect.map((it, i) => {
|
||||||
const selectedSimilarTexts = selectedSimilar.map((it, i) => renumberEventText(it.text, i + 1));
|
const numbered = renumberEventText(it.text, i + 1);
|
||||||
|
return it.candidateRank < TOP_N_STAR ? `⭐${numbered}` : numbered;
|
||||||
|
});
|
||||||
|
|
||||||
|
const selectedSimilarTexts = selectedSimilar.map((it, i) => {
|
||||||
|
const numbered = renumberEventText(it.text, i + 1);
|
||||||
|
return it.candidateRank < TOP_N_STAR ? `⭐${numbered}` : numbered;
|
||||||
|
});
|
||||||
|
|
||||||
details.directCount = selectedDirect.length;
|
details.directCount = selectedDirect.length;
|
||||||
details.similarCount = selectedSimilar.length;
|
details.similarCount = selectedSimilar.length;
|
||||||
|
|||||||
Reference in New Issue
Block a user