@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/svelte/ai/index.js
CHANGED
|
@@ -1771,6 +1771,114 @@ var buildRAGAnswerGroundingEvaluationLeaderboard = (runs) => {
|
|
|
1771
1771
|
totalCases: run.response.totalCases
|
|
1772
1772
|
}));
|
|
1773
1773
|
};
|
|
1774
|
+
var buildTraceStageCounts = (traces) => {
|
|
1775
|
+
const counts = {};
|
|
1776
|
+
for (const trace of traces) {
|
|
1777
|
+
for (const step of trace.steps) {
|
|
1778
|
+
counts[step.stage] = (counts[step.stage] ?? 0) + 1;
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
return counts;
|
|
1782
|
+
};
|
|
1783
|
+
var roundTraceAverage = (value, total) => total > 0 ? Number((value / total).toFixed(2)) : 0;
|
|
1784
|
+
var summarizeRetrievalTraces = (traces) => {
|
|
1785
|
+
if (traces.length === 0) {
|
|
1786
|
+
return;
|
|
1787
|
+
}
|
|
1788
|
+
const totalCases = traces.length;
|
|
1789
|
+
const modeSet = new Set;
|
|
1790
|
+
let vectorCases = 0;
|
|
1791
|
+
let lexicalCases = 0;
|
|
1792
|
+
let transformedCases = 0;
|
|
1793
|
+
let variantCases = 0;
|
|
1794
|
+
let finalCountSum = 0;
|
|
1795
|
+
let vectorCountSum = 0;
|
|
1796
|
+
let lexicalCountSum = 0;
|
|
1797
|
+
let candidateTopKSum = 0;
|
|
1798
|
+
let lexicalTopKSum = 0;
|
|
1799
|
+
for (const trace of traces) {
|
|
1800
|
+
modeSet.add(trace.mode);
|
|
1801
|
+
if (trace.runVector) {
|
|
1802
|
+
vectorCases += 1;
|
|
1803
|
+
}
|
|
1804
|
+
if (trace.runLexical) {
|
|
1805
|
+
lexicalCases += 1;
|
|
1806
|
+
}
|
|
1807
|
+
if (trace.transformedQuery !== trace.query) {
|
|
1808
|
+
transformedCases += 1;
|
|
1809
|
+
}
|
|
1810
|
+
if (trace.variantQueries.length > 0) {
|
|
1811
|
+
variantCases += 1;
|
|
1812
|
+
}
|
|
1813
|
+
finalCountSum += trace.resultCounts.final;
|
|
1814
|
+
vectorCountSum += trace.resultCounts.vector;
|
|
1815
|
+
lexicalCountSum += trace.resultCounts.lexical;
|
|
1816
|
+
candidateTopKSum += trace.candidateTopK;
|
|
1817
|
+
lexicalTopKSum += trace.lexicalTopK;
|
|
1818
|
+
}
|
|
1819
|
+
return {
|
|
1820
|
+
averageCandidateTopK: roundTraceAverage(candidateTopKSum, totalCases),
|
|
1821
|
+
averageFinalCount: roundTraceAverage(finalCountSum, totalCases),
|
|
1822
|
+
averageLexicalCount: roundTraceAverage(lexicalCountSum, totalCases),
|
|
1823
|
+
averageLexicalTopK: roundTraceAverage(lexicalTopKSum, totalCases),
|
|
1824
|
+
averageVectorCount: roundTraceAverage(vectorCountSum, totalCases),
|
|
1825
|
+
lexicalCases,
|
|
1826
|
+
modes: Array.from(modeSet),
|
|
1827
|
+
stageCounts: buildTraceStageCounts(traces),
|
|
1828
|
+
totalCases,
|
|
1829
|
+
transformedCases,
|
|
1830
|
+
variantCases,
|
|
1831
|
+
vectorCases
|
|
1832
|
+
};
|
|
1833
|
+
};
|
|
1834
|
+
var evaluateRAGCollectionCases = async ({
|
|
1835
|
+
collection,
|
|
1836
|
+
input,
|
|
1837
|
+
defaultTopK = DEFAULT_TOP_K,
|
|
1838
|
+
rerank,
|
|
1839
|
+
includeTrace = false
|
|
1840
|
+
}) => {
|
|
1841
|
+
if (input.dryRun) {
|
|
1842
|
+
return executeDryRunRAGEvaluation(input, defaultTopK).map((caseResult) => ({
|
|
1843
|
+
caseResult,
|
|
1844
|
+
trace: undefined
|
|
1845
|
+
}));
|
|
1846
|
+
}
|
|
1847
|
+
return Promise.all(input.cases.map(async (caseInput, caseIndex) => {
|
|
1848
|
+
const startedAt = Date.now();
|
|
1849
|
+
const mode = resolveEvaluationMode(caseInput);
|
|
1850
|
+
const query = caseInput.query.trim();
|
|
1851
|
+
const expectedIds = normalizeExpectedIds(mode === "chunkId" ? caseInput.expectedChunkIds ?? [] : mode === "source" ? caseInput.expectedSources ?? [] : caseInput.expectedDocumentIds ?? []);
|
|
1852
|
+
const topK = typeof caseInput.topK === "number" ? caseInput.topK : typeof input.topK === "number" ? input.topK : defaultTopK;
|
|
1853
|
+
const searchInput = {
|
|
1854
|
+
filter: typeof caseInput.filter === "object" ? caseInput.filter : input.filter,
|
|
1855
|
+
model: caseInput.model ?? input.model,
|
|
1856
|
+
query,
|
|
1857
|
+
rerank,
|
|
1858
|
+
scoreThreshold: typeof caseInput.scoreThreshold === "number" ? caseInput.scoreThreshold : input.scoreThreshold,
|
|
1859
|
+
topK
|
|
1860
|
+
};
|
|
1861
|
+
const searchOutcome = includeTrace ? await collection.searchWithTrace(searchInput) : {
|
|
1862
|
+
results: await collection.search(searchInput),
|
|
1863
|
+
trace: undefined
|
|
1864
|
+
};
|
|
1865
|
+
const sources = buildSources(searchOutcome.results);
|
|
1866
|
+
const elapsedMs = Date.now() - startedAt;
|
|
1867
|
+
const retrievedIds = normalizeExpectedIds(sources.map((source) => extractExpectedId(source, mode)));
|
|
1868
|
+
return {
|
|
1869
|
+
caseResult: summarizeRAGEvaluationCase({
|
|
1870
|
+
caseIndex,
|
|
1871
|
+
caseInput: { ...caseInput, topK },
|
|
1872
|
+
elapsedMs,
|
|
1873
|
+
expectedIds,
|
|
1874
|
+
mode,
|
|
1875
|
+
query,
|
|
1876
|
+
retrievedIds
|
|
1877
|
+
}),
|
|
1878
|
+
trace: searchOutcome.trace
|
|
1879
|
+
};
|
|
1880
|
+
}));
|
|
1881
|
+
};
|
|
1774
1882
|
var buildRAGAnswerGroundingCaseDifficultyLeaderboard = (entries) => {
|
|
1775
1883
|
const grouped = new Map;
|
|
1776
1884
|
for (const entry of entries) {
|
|
@@ -2406,17 +2514,20 @@ var compareRAGRerankers = async ({
|
|
|
2406
2514
|
defaultTopK = DEFAULT_TOP_K
|
|
2407
2515
|
}) => {
|
|
2408
2516
|
const entries = await Promise.all(rerankers.map(async (candidate) => {
|
|
2409
|
-
const
|
|
2517
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2410
2518
|
collection,
|
|
2411
2519
|
defaultTopK,
|
|
2412
2520
|
input: suite.input,
|
|
2521
|
+
includeTrace: true,
|
|
2413
2522
|
rerank: candidate.rerank
|
|
2414
2523
|
});
|
|
2524
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2415
2525
|
return {
|
|
2416
2526
|
label: candidate.label ?? candidate.id,
|
|
2417
2527
|
providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
|
|
2418
2528
|
response,
|
|
2419
|
-
rerankerId: candidate.id
|
|
2529
|
+
rerankerId: candidate.id,
|
|
2530
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2420
2531
|
};
|
|
2421
2532
|
}));
|
|
2422
2533
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2471,25 +2582,37 @@ var compareRAGRetrievalStrategies = async ({
|
|
|
2471
2582
|
defaultTopK = DEFAULT_TOP_K
|
|
2472
2583
|
}) => {
|
|
2473
2584
|
const entries = await Promise.all(retrievals.map(async (candidate) => {
|
|
2474
|
-
const
|
|
2585
|
+
const tracedCollection = {
|
|
2586
|
+
...collection,
|
|
2587
|
+
search: (input) => collection.search({
|
|
2588
|
+
...input,
|
|
2589
|
+
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2590
|
+
rerank: candidate.rerank ?? input.rerank,
|
|
2591
|
+
retrieval: candidate.retrieval ?? input.retrieval
|
|
2592
|
+
}),
|
|
2593
|
+
searchWithTrace: (input) => collection.searchWithTrace({
|
|
2594
|
+
...input,
|
|
2595
|
+
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2596
|
+
rerank: candidate.rerank ?? input.rerank,
|
|
2597
|
+
retrieval: candidate.retrieval ?? input.retrieval
|
|
2598
|
+
})
|
|
2599
|
+
};
|
|
2600
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2475
2601
|
collection: {
|
|
2476
|
-
...
|
|
2477
|
-
search: (input) => collection.search({
|
|
2478
|
-
...input,
|
|
2479
|
-
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2480
|
-
rerank: candidate.rerank ?? input.rerank,
|
|
2481
|
-
retrieval: candidate.retrieval ?? input.retrieval
|
|
2482
|
-
})
|
|
2602
|
+
...tracedCollection
|
|
2483
2603
|
},
|
|
2484
2604
|
defaultTopK,
|
|
2485
2605
|
input: suite.input,
|
|
2606
|
+
includeTrace: true,
|
|
2486
2607
|
rerank: candidate.rerank
|
|
2487
2608
|
});
|
|
2609
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2488
2610
|
return {
|
|
2489
2611
|
label: candidate.label ?? candidate.id,
|
|
2490
2612
|
response,
|
|
2491
2613
|
retrievalId: candidate.id,
|
|
2492
|
-
retrievalMode: resolveRetrievalMode(candidate)
|
|
2614
|
+
retrievalMode: resolveRetrievalMode(candidate),
|
|
2615
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2493
2616
|
};
|
|
2494
2617
|
}));
|
|
2495
2618
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2516,37 +2639,14 @@ var evaluateRAGCollection = async ({
|
|
|
2516
2639
|
defaultTopK = DEFAULT_TOP_K,
|
|
2517
2640
|
rerank
|
|
2518
2641
|
}) => {
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
const topK = typeof caseInput.topK === "number" ? caseInput.topK : typeof input.topK === "number" ? input.topK : defaultTopK;
|
|
2528
|
-
const searchResults = await collection.search({
|
|
2529
|
-
filter: typeof caseInput.filter === "object" ? caseInput.filter : input.filter,
|
|
2530
|
-
model: caseInput.model ?? input.model,
|
|
2531
|
-
query,
|
|
2532
|
-
rerank,
|
|
2533
|
-
scoreThreshold: typeof caseInput.scoreThreshold === "number" ? caseInput.scoreThreshold : input.scoreThreshold,
|
|
2534
|
-
topK
|
|
2535
|
-
});
|
|
2536
|
-
const sources = buildSources(searchResults);
|
|
2537
|
-
const elapsedMs = Date.now() - startedAt;
|
|
2538
|
-
const retrievedIds = normalizeExpectedIds(sources.map((source) => extractExpectedId(source, mode)));
|
|
2539
|
-
return summarizeRAGEvaluationCase({
|
|
2540
|
-
caseIndex,
|
|
2541
|
-
caseInput: { ...caseInput, topK },
|
|
2542
|
-
elapsedMs,
|
|
2543
|
-
expectedIds,
|
|
2544
|
-
mode,
|
|
2545
|
-
query,
|
|
2546
|
-
retrievedIds
|
|
2547
|
-
});
|
|
2548
|
-
}));
|
|
2549
|
-
return buildRAGEvaluationResponse(evaluated);
|
|
2642
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2643
|
+
collection,
|
|
2644
|
+
defaultTopK,
|
|
2645
|
+
includeTrace: false,
|
|
2646
|
+
input,
|
|
2647
|
+
rerank
|
|
2648
|
+
});
|
|
2649
|
+
return buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2550
2650
|
};
|
|
2551
2651
|
var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K) => input.cases.map((caseInput, caseIndex) => {
|
|
2552
2652
|
const mode = resolveEvaluationMode(caseInput);
|
|
@@ -3319,5 +3419,5 @@ export {
|
|
|
3319
3419
|
createAIStream
|
|
3320
3420
|
};
|
|
3321
3421
|
|
|
3322
|
-
//# debugId=
|
|
3422
|
+
//# debugId=1515E9DBD027AFA064756E2164756E21
|
|
3323
3423
|
//# sourceMappingURL=index.js.map
|