-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasic-rag.ts
More file actions
73 lines (69 loc) · 2.78 KB
/
Copy pathbasic-rag.ts
File metadata and controls
73 lines (69 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
* Example: Basic RAG — core dimensions only, zero config
*
* Scenario: A knowledge base chatbot answers a straightforward factual question.
* The LLM reports high confidence, three strong candidates retrieved via two
* methods each, consistent scores, explicit no-conflict signal.
*
* Expected label: Strong
* Expected total: 100
* Expected recommendedAction: answer
*
* Key: passing hasConflict: false explicitly removes the missing-conflict-signal
* warning, which would otherwise push recommendedAction to 'review'.
*/
import { computeConfidence } from '../src/index.js';
const scorecard = computeConfidence({
// LLM-assessed signals
supportLevel: 'high',
hasConflict: false, // explicit — prevents missing-conflict-signal warning
citationCount: 3,
// Retrieved candidates — three solid hits from two retrieval methods each
candidates: [
{
retrievalScores: { semantic: 0.88, keyword: 0.72 },
combinedScore: 0.88,
documentId: 'doc-001',
},
{
retrievalScores: { semantic: 0.85, keyword: 0.68 },
combinedScore: 0.85,
documentId: 'doc-002',
},
{
retrievalScores: { semantic: 0.82, keyword: 0.65 },
combinedScore: 0.82,
documentId: 'doc-003',
},
],
});
console.log('=== Basic RAG Scorecard ===');
console.log(`Total: ${scorecard.total} / 100`);
console.log(`Label: ${scorecard.label} (${scorecard.labelColor})`);
console.log(`Recommended: ${scorecard.recommendedAction} — ${scorecard.actionReason}`);
console.log(`Tier 1: ${scorecard.tier1?.score} — ${scorecard.tier1?.label}`);
console.log(
`Tier 2: ${scorecard.tier2 === null ? 'n/a (no extensions)' : scorecard.tier2.label}`,
);
console.log('');
console.log('Dimensions:');
console.log(
` Grounding: ${scorecard.dimensions.grounding.raw} / ${scorecard.dimensions.grounding.max} — ${scorecard.dimensions.grounding.explanation}`,
);
console.log(
` Retrieval: ${scorecard.dimensions.retrieval.raw} / ${scorecard.dimensions.retrieval.max} — ${scorecard.dimensions.retrieval.explanation}`,
);
console.log(
` Consistency: ${scorecard.dimensions.consistency.raw} / ${scorecard.dimensions.consistency.max} — ${scorecard.dimensions.consistency.explanation}`,
);
console.log('');
console.log('Meta:');
console.log(` algorithmVersion: ${scorecard.meta.algorithmVersion}`);
console.log(` rawTotal: ${scorecard.meta.rawTotal}`);
console.log(` maxPossible: ${scorecard.meta.maxPossible}`);
console.log(
` warnings: ${scorecard.meta.warnings.length === 0 ? 'none' : scorecard.meta.warnings.map((w) => w.code).join(', ')}`,
);
console.log(
` missingSignals: ${scorecard.meta.missingSignals.length === 0 ? 'none' : scorecard.meta.missingSignals.join(', ')}`,
);