@absolutejs/absolute 0.19.0-beta.531 → 0.19.0-beta.532
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/client/index.js +143 -43
- package/dist/ai/client/index.js.map +3 -3
- package/dist/ai/index.js +143 -43
- package/dist/ai/index.js.map +3 -3
- package/dist/react/ai/index.js +143 -43
- package/dist/react/ai/index.js.map +3 -3
- package/dist/svelte/ai/index.js +143 -43
- package/dist/svelte/ai/index.js.map +3 -3
- package/dist/types/ai.d.ts +16 -0
- package/dist/vue/ai/index.js +143 -43
- package/dist/vue/ai/index.js.map +3 -3
- package/package.json +7 -7
package/dist/react/ai/index.js
CHANGED
|
@@ -1744,6 +1744,114 @@ var buildRAGAnswerGroundingEvaluationLeaderboard = (runs) => {
|
|
|
1744
1744
|
totalCases: run.response.totalCases
|
|
1745
1745
|
}));
|
|
1746
1746
|
};
|
|
1747
|
+
var buildTraceStageCounts = (traces) => {
|
|
1748
|
+
const counts = {};
|
|
1749
|
+
for (const trace of traces) {
|
|
1750
|
+
for (const step of trace.steps) {
|
|
1751
|
+
counts[step.stage] = (counts[step.stage] ?? 0) + 1;
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
return counts;
|
|
1755
|
+
};
|
|
1756
|
+
var roundTraceAverage = (value, total) => total > 0 ? Number((value / total).toFixed(2)) : 0;
|
|
1757
|
+
var summarizeRetrievalTraces = (traces) => {
|
|
1758
|
+
if (traces.length === 0) {
|
|
1759
|
+
return;
|
|
1760
|
+
}
|
|
1761
|
+
const totalCases = traces.length;
|
|
1762
|
+
const modeSet = new Set;
|
|
1763
|
+
let vectorCases = 0;
|
|
1764
|
+
let lexicalCases = 0;
|
|
1765
|
+
let transformedCases = 0;
|
|
1766
|
+
let variantCases = 0;
|
|
1767
|
+
let finalCountSum = 0;
|
|
1768
|
+
let vectorCountSum = 0;
|
|
1769
|
+
let lexicalCountSum = 0;
|
|
1770
|
+
let candidateTopKSum = 0;
|
|
1771
|
+
let lexicalTopKSum = 0;
|
|
1772
|
+
for (const trace of traces) {
|
|
1773
|
+
modeSet.add(trace.mode);
|
|
1774
|
+
if (trace.runVector) {
|
|
1775
|
+
vectorCases += 1;
|
|
1776
|
+
}
|
|
1777
|
+
if (trace.runLexical) {
|
|
1778
|
+
lexicalCases += 1;
|
|
1779
|
+
}
|
|
1780
|
+
if (trace.transformedQuery !== trace.query) {
|
|
1781
|
+
transformedCases += 1;
|
|
1782
|
+
}
|
|
1783
|
+
if (trace.variantQueries.length > 0) {
|
|
1784
|
+
variantCases += 1;
|
|
1785
|
+
}
|
|
1786
|
+
finalCountSum += trace.resultCounts.final;
|
|
1787
|
+
vectorCountSum += trace.resultCounts.vector;
|
|
1788
|
+
lexicalCountSum += trace.resultCounts.lexical;
|
|
1789
|
+
candidateTopKSum += trace.candidateTopK;
|
|
1790
|
+
lexicalTopKSum += trace.lexicalTopK;
|
|
1791
|
+
}
|
|
1792
|
+
return {
|
|
1793
|
+
averageCandidateTopK: roundTraceAverage(candidateTopKSum, totalCases),
|
|
1794
|
+
averageFinalCount: roundTraceAverage(finalCountSum, totalCases),
|
|
1795
|
+
averageLexicalCount: roundTraceAverage(lexicalCountSum, totalCases),
|
|
1796
|
+
averageLexicalTopK: roundTraceAverage(lexicalTopKSum, totalCases),
|
|
1797
|
+
averageVectorCount: roundTraceAverage(vectorCountSum, totalCases),
|
|
1798
|
+
lexicalCases,
|
|
1799
|
+
modes: Array.from(modeSet),
|
|
1800
|
+
stageCounts: buildTraceStageCounts(traces),
|
|
1801
|
+
totalCases,
|
|
1802
|
+
transformedCases,
|
|
1803
|
+
variantCases,
|
|
1804
|
+
vectorCases
|
|
1805
|
+
};
|
|
1806
|
+
};
|
|
1807
|
+
var evaluateRAGCollectionCases = async ({
|
|
1808
|
+
collection,
|
|
1809
|
+
input,
|
|
1810
|
+
defaultTopK = DEFAULT_TOP_K,
|
|
1811
|
+
rerank,
|
|
1812
|
+
includeTrace = false
|
|
1813
|
+
}) => {
|
|
1814
|
+
if (input.dryRun) {
|
|
1815
|
+
return executeDryRunRAGEvaluation(input, defaultTopK).map((caseResult) => ({
|
|
1816
|
+
caseResult,
|
|
1817
|
+
trace: undefined
|
|
1818
|
+
}));
|
|
1819
|
+
}
|
|
1820
|
+
return Promise.all(input.cases.map(async (caseInput, caseIndex) => {
|
|
1821
|
+
const startedAt = Date.now();
|
|
1822
|
+
const mode = resolveEvaluationMode(caseInput);
|
|
1823
|
+
const query = caseInput.query.trim();
|
|
1824
|
+
const expectedIds = normalizeExpectedIds(mode === "chunkId" ? caseInput.expectedChunkIds ?? [] : mode === "source" ? caseInput.expectedSources ?? [] : caseInput.expectedDocumentIds ?? []);
|
|
1825
|
+
const topK = typeof caseInput.topK === "number" ? caseInput.topK : typeof input.topK === "number" ? input.topK : defaultTopK;
|
|
1826
|
+
const searchInput = {
|
|
1827
|
+
filter: typeof caseInput.filter === "object" ? caseInput.filter : input.filter,
|
|
1828
|
+
model: caseInput.model ?? input.model,
|
|
1829
|
+
query,
|
|
1830
|
+
rerank,
|
|
1831
|
+
scoreThreshold: typeof caseInput.scoreThreshold === "number" ? caseInput.scoreThreshold : input.scoreThreshold,
|
|
1832
|
+
topK
|
|
1833
|
+
};
|
|
1834
|
+
const searchOutcome = includeTrace ? await collection.searchWithTrace(searchInput) : {
|
|
1835
|
+
results: await collection.search(searchInput),
|
|
1836
|
+
trace: undefined
|
|
1837
|
+
};
|
|
1838
|
+
const sources = buildSources(searchOutcome.results);
|
|
1839
|
+
const elapsedMs = Date.now() - startedAt;
|
|
1840
|
+
const retrievedIds = normalizeExpectedIds(sources.map((source) => extractExpectedId(source, mode)));
|
|
1841
|
+
return {
|
|
1842
|
+
caseResult: summarizeRAGEvaluationCase({
|
|
1843
|
+
caseIndex,
|
|
1844
|
+
caseInput: { ...caseInput, topK },
|
|
1845
|
+
elapsedMs,
|
|
1846
|
+
expectedIds,
|
|
1847
|
+
mode,
|
|
1848
|
+
query,
|
|
1849
|
+
retrievedIds
|
|
1850
|
+
}),
|
|
1851
|
+
trace: searchOutcome.trace
|
|
1852
|
+
};
|
|
1853
|
+
}));
|
|
1854
|
+
};
|
|
1747
1855
|
var buildRAGAnswerGroundingCaseDifficultyLeaderboard = (entries) => {
|
|
1748
1856
|
const grouped = new Map;
|
|
1749
1857
|
for (const entry of entries) {
|
|
@@ -2379,17 +2487,20 @@ var compareRAGRerankers = async ({
|
|
|
2379
2487
|
defaultTopK = DEFAULT_TOP_K
|
|
2380
2488
|
}) => {
|
|
2381
2489
|
const entries = await Promise.all(rerankers.map(async (candidate) => {
|
|
2382
|
-
const
|
|
2490
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2383
2491
|
collection,
|
|
2384
2492
|
defaultTopK,
|
|
2385
2493
|
input: suite.input,
|
|
2494
|
+
includeTrace: true,
|
|
2386
2495
|
rerank: candidate.rerank
|
|
2387
2496
|
});
|
|
2497
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2388
2498
|
return {
|
|
2389
2499
|
label: candidate.label ?? candidate.id,
|
|
2390
2500
|
providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
|
|
2391
2501
|
response,
|
|
2392
|
-
rerankerId: candidate.id
|
|
2502
|
+
rerankerId: candidate.id,
|
|
2503
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2393
2504
|
};
|
|
2394
2505
|
}));
|
|
2395
2506
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2444,25 +2555,37 @@ var compareRAGRetrievalStrategies = async ({
|
|
|
2444
2555
|
defaultTopK = DEFAULT_TOP_K
|
|
2445
2556
|
}) => {
|
|
2446
2557
|
const entries = await Promise.all(retrievals.map(async (candidate) => {
|
|
2447
|
-
const
|
|
2558
|
+
const tracedCollection = {
|
|
2559
|
+
...collection,
|
|
2560
|
+
search: (input) => collection.search({
|
|
2561
|
+
...input,
|
|
2562
|
+
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2563
|
+
rerank: candidate.rerank ?? input.rerank,
|
|
2564
|
+
retrieval: candidate.retrieval ?? input.retrieval
|
|
2565
|
+
}),
|
|
2566
|
+
searchWithTrace: (input) => collection.searchWithTrace({
|
|
2567
|
+
...input,
|
|
2568
|
+
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2569
|
+
rerank: candidate.rerank ?? input.rerank,
|
|
2570
|
+
retrieval: candidate.retrieval ?? input.retrieval
|
|
2571
|
+
})
|
|
2572
|
+
};
|
|
2573
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2448
2574
|
collection: {
|
|
2449
|
-
...
|
|
2450
|
-
search: (input) => collection.search({
|
|
2451
|
-
...input,
|
|
2452
|
-
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2453
|
-
rerank: candidate.rerank ?? input.rerank,
|
|
2454
|
-
retrieval: candidate.retrieval ?? input.retrieval
|
|
2455
|
-
})
|
|
2575
|
+
...tracedCollection
|
|
2456
2576
|
},
|
|
2457
2577
|
defaultTopK,
|
|
2458
2578
|
input: suite.input,
|
|
2579
|
+
includeTrace: true,
|
|
2459
2580
|
rerank: candidate.rerank
|
|
2460
2581
|
});
|
|
2582
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2461
2583
|
return {
|
|
2462
2584
|
label: candidate.label ?? candidate.id,
|
|
2463
2585
|
response,
|
|
2464
2586
|
retrievalId: candidate.id,
|
|
2465
|
-
retrievalMode: resolveRetrievalMode(candidate)
|
|
2587
|
+
retrievalMode: resolveRetrievalMode(candidate),
|
|
2588
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2466
2589
|
};
|
|
2467
2590
|
}));
|
|
2468
2591
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2489,37 +2612,14 @@ var evaluateRAGCollection = async ({
|
|
|
2489
2612
|
defaultTopK = DEFAULT_TOP_K,
|
|
2490
2613
|
rerank
|
|
2491
2614
|
}) => {
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
const topK = typeof caseInput.topK === "number" ? caseInput.topK : typeof input.topK === "number" ? input.topK : defaultTopK;
|
|
2501
|
-
const searchResults = await collection.search({
|
|
2502
|
-
filter: typeof caseInput.filter === "object" ? caseInput.filter : input.filter,
|
|
2503
|
-
model: caseInput.model ?? input.model,
|
|
2504
|
-
query,
|
|
2505
|
-
rerank,
|
|
2506
|
-
scoreThreshold: typeof caseInput.scoreThreshold === "number" ? caseInput.scoreThreshold : input.scoreThreshold,
|
|
2507
|
-
topK
|
|
2508
|
-
});
|
|
2509
|
-
const sources = buildSources(searchResults);
|
|
2510
|
-
const elapsedMs = Date.now() - startedAt;
|
|
2511
|
-
const retrievedIds = normalizeExpectedIds(sources.map((source) => extractExpectedId(source, mode)));
|
|
2512
|
-
return summarizeRAGEvaluationCase({
|
|
2513
|
-
caseIndex,
|
|
2514
|
-
caseInput: { ...caseInput, topK },
|
|
2515
|
-
elapsedMs,
|
|
2516
|
-
expectedIds,
|
|
2517
|
-
mode,
|
|
2518
|
-
query,
|
|
2519
|
-
retrievedIds
|
|
2520
|
-
});
|
|
2521
|
-
}));
|
|
2522
|
-
return buildRAGEvaluationResponse(evaluated);
|
|
2615
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2616
|
+
collection,
|
|
2617
|
+
defaultTopK,
|
|
2618
|
+
includeTrace: false,
|
|
2619
|
+
input,
|
|
2620
|
+
rerank
|
|
2621
|
+
});
|
|
2622
|
+
return buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2523
2623
|
};
|
|
2524
2624
|
var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K) => input.cases.map((caseInput, caseIndex) => {
|
|
2525
2625
|
const mode = resolveEvaluationMode(caseInput);
|
|
@@ -3526,5 +3626,5 @@ export {
|
|
|
3526
3626
|
AIStreamProvider
|
|
3527
3627
|
};
|
|
3528
3628
|
|
|
3529
|
-
//# debugId=
|
|
3629
|
+
//# debugId=A3847C62324D17B964756E2164756E21
|
|
3530
3630
|
//# sourceMappingURL=index.js.map
|