@absolutejs/absolute 0.19.0-beta.530 → 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 +158 -45
- package/dist/ai/client/index.js.map +6 -6
- package/dist/ai/index.js +168 -48
- package/dist/ai/index.js.map +8 -8
- package/dist/ai-client/angular/ai/index.js +15 -2
- package/dist/ai-client/react/ai/index.js +15 -2
- package/dist/ai-client/vue/ai/index.js +15 -2
- package/dist/angular/ai/index.js +16 -3
- package/dist/angular/ai/index.js.map +5 -5
- package/dist/angular/index.js +2 -2
- package/dist/angular/index.js.map +1 -1
- package/dist/angular/server.js +2 -2
- package/dist/angular/server.js.map +1 -1
- package/dist/build.js +2 -2
- package/dist/build.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/react/ai/index.js +158 -45
- package/dist/react/ai/index.js.map +6 -6
- package/dist/src/ai/client/actions.d.ts +8 -0
- package/dist/svelte/ai/index.js +158 -45
- package/dist/svelte/ai/index.js.map +6 -6
- package/dist/types/ai.d.ts +19 -0
- package/dist/vue/ai/index.js +158 -45
- package/dist/vue/ai/index.js.map +6 -6
- package/package.json +7 -7
package/dist/react/ai/index.js
CHANGED
|
@@ -215,6 +215,7 @@ var serverMessageToAction = (msg) => {
|
|
|
215
215
|
retrievalStartedAt: msg.retrievalStartedAt,
|
|
216
216
|
retrievedAt: msg.retrievedAt,
|
|
217
217
|
sources: msg.sources,
|
|
218
|
+
trace: msg.trace,
|
|
218
219
|
type: "rag_retrieved"
|
|
219
220
|
};
|
|
220
221
|
case "error":
|
|
@@ -482,6 +483,7 @@ var handleRAGRetrieved = (state, action) => {
|
|
|
482
483
|
message.retrievalStartedAt = action.retrievalStartedAt ?? message.retrievalStartedAt;
|
|
483
484
|
message.retrievedAt = action.retrievedAt;
|
|
484
485
|
message.retrievalDurationMs = action.retrievalDurationMs;
|
|
486
|
+
message.retrievalTrace = action.trace;
|
|
485
487
|
conversation.messages = [...conversation.messages];
|
|
486
488
|
};
|
|
487
489
|
var handleRAGRetrieving = (state, action) => {
|
|
@@ -1591,8 +1593,19 @@ var createRAGClient = (options) => {
|
|
|
1591
1593
|
return parseJson(response);
|
|
1592
1594
|
},
|
|
1593
1595
|
async search(input) {
|
|
1594
|
-
const
|
|
1595
|
-
|
|
1596
|
+
const response = await fetchImpl(`${basePath}/search`, {
|
|
1597
|
+
body: JSON.stringify(input),
|
|
1598
|
+
headers: jsonHeaders,
|
|
1599
|
+
method: "POST"
|
|
1600
|
+
});
|
|
1601
|
+
if (!response.ok) {
|
|
1602
|
+
throw new Error(await toErrorMessage(response));
|
|
1603
|
+
}
|
|
1604
|
+
const payload = await parseJson(response);
|
|
1605
|
+
if (!payload.ok) {
|
|
1606
|
+
throw new Error(payload.error ?? "RAG search failed");
|
|
1607
|
+
}
|
|
1608
|
+
return payload.results ?? [];
|
|
1596
1609
|
},
|
|
1597
1610
|
async searchDetailed(input) {
|
|
1598
1611
|
const response = await fetchImpl(`${basePath}/search`, {
|
|
@@ -1731,6 +1744,114 @@ var buildRAGAnswerGroundingEvaluationLeaderboard = (runs) => {
|
|
|
1731
1744
|
totalCases: run.response.totalCases
|
|
1732
1745
|
}));
|
|
1733
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
|
+
};
|
|
1734
1855
|
var buildRAGAnswerGroundingCaseDifficultyLeaderboard = (entries) => {
|
|
1735
1856
|
const grouped = new Map;
|
|
1736
1857
|
for (const entry of entries) {
|
|
@@ -2366,17 +2487,20 @@ var compareRAGRerankers = async ({
|
|
|
2366
2487
|
defaultTopK = DEFAULT_TOP_K
|
|
2367
2488
|
}) => {
|
|
2368
2489
|
const entries = await Promise.all(rerankers.map(async (candidate) => {
|
|
2369
|
-
const
|
|
2490
|
+
const evaluated = await evaluateRAGCollectionCases({
|
|
2370
2491
|
collection,
|
|
2371
2492
|
defaultTopK,
|
|
2372
2493
|
input: suite.input,
|
|
2494
|
+
includeTrace: true,
|
|
2373
2495
|
rerank: candidate.rerank
|
|
2374
2496
|
});
|
|
2497
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2375
2498
|
return {
|
|
2376
2499
|
label: candidate.label ?? candidate.id,
|
|
2377
2500
|
providerName: typeof candidate.rerank === "function" ? undefined : candidate.rerank?.providerName,
|
|
2378
2501
|
response,
|
|
2379
|
-
rerankerId: candidate.id
|
|
2502
|
+
rerankerId: candidate.id,
|
|
2503
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2380
2504
|
};
|
|
2381
2505
|
}));
|
|
2382
2506
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2431,25 +2555,37 @@ var compareRAGRetrievalStrategies = async ({
|
|
|
2431
2555
|
defaultTopK = DEFAULT_TOP_K
|
|
2432
2556
|
}) => {
|
|
2433
2557
|
const entries = await Promise.all(retrievals.map(async (candidate) => {
|
|
2434
|
-
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({
|
|
2435
2574
|
collection: {
|
|
2436
|
-
...
|
|
2437
|
-
search: (input) => collection.search({
|
|
2438
|
-
...input,
|
|
2439
|
-
queryTransform: candidate.queryTransform ?? input.queryTransform,
|
|
2440
|
-
rerank: candidate.rerank ?? input.rerank,
|
|
2441
|
-
retrieval: candidate.retrieval ?? input.retrieval
|
|
2442
|
-
})
|
|
2575
|
+
...tracedCollection
|
|
2443
2576
|
},
|
|
2444
2577
|
defaultTopK,
|
|
2445
2578
|
input: suite.input,
|
|
2579
|
+
includeTrace: true,
|
|
2446
2580
|
rerank: candidate.rerank
|
|
2447
2581
|
});
|
|
2582
|
+
const response = buildRAGEvaluationResponse(evaluated.map((entry) => entry.caseResult));
|
|
2448
2583
|
return {
|
|
2449
2584
|
label: candidate.label ?? candidate.id,
|
|
2450
2585
|
response,
|
|
2451
2586
|
retrievalId: candidate.id,
|
|
2452
|
-
retrievalMode: resolveRetrievalMode(candidate)
|
|
2587
|
+
retrievalMode: resolveRetrievalMode(candidate),
|
|
2588
|
+
traceSummary: summarizeRetrievalTraces(evaluated.map((entry) => entry.trace).filter((trace) => Boolean(trace)))
|
|
2453
2589
|
};
|
|
2454
2590
|
}));
|
|
2455
2591
|
const leaderboard = buildRAGEvaluationLeaderboard(entries.map((entry) => ({
|
|
@@ -2476,37 +2612,14 @@ var evaluateRAGCollection = async ({
|
|
|
2476
2612
|
defaultTopK = DEFAULT_TOP_K,
|
|
2477
2613
|
rerank
|
|
2478
2614
|
}) => {
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
const topK = typeof caseInput.topK === "number" ? caseInput.topK : typeof input.topK === "number" ? input.topK : defaultTopK;
|
|
2488
|
-
const searchResults = await collection.search({
|
|
2489
|
-
filter: typeof caseInput.filter === "object" ? caseInput.filter : input.filter,
|
|
2490
|
-
model: caseInput.model ?? input.model,
|
|
2491
|
-
query,
|
|
2492
|
-
rerank,
|
|
2493
|
-
scoreThreshold: typeof caseInput.scoreThreshold === "number" ? caseInput.scoreThreshold : input.scoreThreshold,
|
|
2494
|
-
topK
|
|
2495
|
-
});
|
|
2496
|
-
const sources = buildSources(searchResults);
|
|
2497
|
-
const elapsedMs = Date.now() - startedAt;
|
|
2498
|
-
const retrievedIds = normalizeExpectedIds(sources.map((source) => extractExpectedId(source, mode)));
|
|
2499
|
-
return summarizeRAGEvaluationCase({
|
|
2500
|
-
caseIndex,
|
|
2501
|
-
caseInput: { ...caseInput, topK },
|
|
2502
|
-
elapsedMs,
|
|
2503
|
-
expectedIds,
|
|
2504
|
-
mode,
|
|
2505
|
-
query,
|
|
2506
|
-
retrievedIds
|
|
2507
|
-
});
|
|
2508
|
-
}));
|
|
2509
|
-
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));
|
|
2510
2623
|
};
|
|
2511
2624
|
var executeDryRunRAGEvaluation = (input, defaultTopK = DEFAULT_TOP_K) => input.cases.map((caseInput, caseIndex) => {
|
|
2512
2625
|
const mode = resolveEvaluationMode(caseInput);
|
|
@@ -3513,5 +3626,5 @@ export {
|
|
|
3513
3626
|
AIStreamProvider
|
|
3514
3627
|
};
|
|
3515
3628
|
|
|
3516
|
-
//# debugId=
|
|
3629
|
+
//# debugId=A3847C62324D17B964756E2164756E21
|
|
3517
3630
|
//# sourceMappingURL=index.js.map
|