feat(knowledge): Executor 行动记忆 + 归一化质量等级解决 ISS-002 重复检索
- RetrievedDocTracker 升级为域级+文档级双层记录(Map<sessionId, Map<domain, Set<filePath>>>) - LookupKnowledgeTool 新增 Min-Max 归一化层(BGE-M3 L2 距离→[0,1] similarity) - 三等级 relevanceLevel:PRECISE / HIGHLY_RELEVANT / REFERENCE + completenessHint 兜底信号 - LookupResult 新增 relevanceLevel、completenessHint、retrievedDomainsThisSession - Executor prompt 重写:4 条检索约束 + 合法出口不查全不追责,重复检索才惩罚 - 入库可观测性:V010 迁移 + retrieval_details JSON 扩展 - 归档 executor-action-memory-relevance change
This commit is contained in:
@@ -86,8 +86,15 @@ class FullPipelineSmokeTest {
|
||||
boolean hasNonZero = vector.stream().anyMatch(v -> Math.abs(v) > 1e-6);
|
||||
assertTrue(hasNonZero, "向量不能全为零");
|
||||
|
||||
// L2 范数校验:BGE-M3 输出应为 L2 归一化的单位向量
|
||||
double norm = Math.sqrt(vector.stream().mapToDouble(v -> (double) v * v).sum());
|
||||
|
||||
System.out.println("维度: " + vector.size());
|
||||
System.out.println("前5维: " + vector.subList(0, Math.min(5, vector.size())));
|
||||
System.out.println("L2 范数: " + String.format("%.10f", norm));
|
||||
System.out.println("是否归一化 (|norm - 1.0| < 0.01): " + (Math.abs(norm - 1.0) < 0.01));
|
||||
|
||||
assertEquals(1.0, norm, 0.01, "BGE-M3 向量应为 L2 归一化单位向量,实际范数=" + norm);
|
||||
System.out.println("Embedding ✓");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user