@absolutejs/absolute 0.19.0-beta.515 → 0.19.0-beta.516
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 +112 -1
- package/dist/ai/client/index.js.map +3 -3
- package/dist/ai/index.js +3222 -3105
- package/dist/ai/index.js.map +6 -6
- package/dist/react/ai/index.js +112 -1
- package/dist/react/ai/index.js.map +3 -3
- package/dist/src/ai/index.d.ts +2 -2
- package/dist/src/ai/rag/index.d.ts +2 -2
- package/dist/src/ai/rag/quality.d.ts +7 -1
- package/dist/src/ai/rag/types.d.ts +1 -1
- package/dist/svelte/ai/index.js +112 -1
- package/dist/svelte/ai/index.js.map +3 -3
- package/dist/types/ai.d.ts +61 -0
- package/dist/vue/ai/index.js +112 -1
- package/dist/vue/ai/index.js.map +3 -3
- package/package.json +1 -1
package/dist/vue/ai/index.js
CHANGED
|
@@ -1671,6 +1671,30 @@ var buildSources = (results) => results.map((result) => ({
|
|
|
1671
1671
|
text: result.chunkText,
|
|
1672
1672
|
title: result.title
|
|
1673
1673
|
}));
|
|
1674
|
+
var buildAnswerGroundingStatus = ({
|
|
1675
|
+
coverage,
|
|
1676
|
+
expectedCount,
|
|
1677
|
+
matchedCount,
|
|
1678
|
+
unresolvedCitationCount,
|
|
1679
|
+
resolvedCitationCount
|
|
1680
|
+
}) => {
|
|
1681
|
+
if (expectedCount > 0) {
|
|
1682
|
+
if (matchedCount === expectedCount && unresolvedCitationCount === 0 && coverage !== "ungrounded") {
|
|
1683
|
+
return "pass";
|
|
1684
|
+
}
|
|
1685
|
+
if (matchedCount > 0 || resolvedCitationCount > 0) {
|
|
1686
|
+
return "partial";
|
|
1687
|
+
}
|
|
1688
|
+
return "fail";
|
|
1689
|
+
}
|
|
1690
|
+
if (coverage === "grounded" && unresolvedCitationCount === 0) {
|
|
1691
|
+
return "pass";
|
|
1692
|
+
}
|
|
1693
|
+
if (resolvedCitationCount > 0 || coverage === "partial") {
|
|
1694
|
+
return "partial";
|
|
1695
|
+
}
|
|
1696
|
+
return "fail";
|
|
1697
|
+
};
|
|
1674
1698
|
var buildRAGEvaluationLeaderboard = (runs) => {
|
|
1675
1699
|
const sorted = [...runs].sort((left, right) => {
|
|
1676
1700
|
if (right.response.passingRate !== left.response.passingRate) {
|
|
@@ -1823,6 +1847,93 @@ var buildRAGEvaluationResponse = (cases) => {
|
|
|
1823
1847
|
totalCases
|
|
1824
1848
|
};
|
|
1825
1849
|
};
|
|
1850
|
+
var evaluateRAGAnswerGroundingCase = ({
|
|
1851
|
+
caseIndex,
|
|
1852
|
+
caseInput
|
|
1853
|
+
}) => {
|
|
1854
|
+
const mode = resolveEvaluationMode(caseInput);
|
|
1855
|
+
const expectedIds = normalizeExpectedIds(mode === "chunkId" ? caseInput.expectedChunkIds ?? [] : mode === "source" ? caseInput.expectedSources ?? [] : caseInput.expectedDocumentIds ?? []);
|
|
1856
|
+
const groundedAnswer = buildRAGGroundedAnswer(caseInput.answer, caseInput.sources);
|
|
1857
|
+
const citedReferences = groundedAnswer.parts.flatMap((part) => part.type === "citation" ? part.references : []);
|
|
1858
|
+
const citedIds = normalizeExpectedIds(citedReferences.map((reference) => extractExpectedId(reference, mode)));
|
|
1859
|
+
const expectedSet = new Set(expectedIds);
|
|
1860
|
+
const citedSet = new Set(citedIds);
|
|
1861
|
+
const matchedIds = normalizeExpectedIds([...expectedSet].filter((id) => citedSet.has(id)));
|
|
1862
|
+
const missingIds = normalizeExpectedIds([...expectedSet].filter((id) => !citedSet.has(id)));
|
|
1863
|
+
const extraIds = normalizeExpectedIds([...citedSet].filter((id) => !expectedSet.has(id)));
|
|
1864
|
+
const matchedCount = matchedIds.length;
|
|
1865
|
+
const expectedCount = expectedIds.length;
|
|
1866
|
+
const citedCount = citedIds.length;
|
|
1867
|
+
const precision = citedCount > 0 ? matchedCount / citedCount : 0;
|
|
1868
|
+
const recall = expectedCount > 0 ? matchedCount / expectedCount : 0;
|
|
1869
|
+
const citationF1 = precision + recall > 0 ? 2 * precision * recall / (precision + recall) : 0;
|
|
1870
|
+
const citationCount = groundedAnswer.parts.filter((part) => part.type === "citation").length;
|
|
1871
|
+
const unresolvedCitationCount = new Set(groundedAnswer.ungroundedReferenceNumbers).size;
|
|
1872
|
+
const resolvedCitationCount = citedReferences.length;
|
|
1873
|
+
const resolvedCitationRate = citationCount > 0 ? Math.min(1, resolvedCitationCount / citationCount) : 0;
|
|
1874
|
+
return {
|
|
1875
|
+
answer: caseInput.answer,
|
|
1876
|
+
caseId: caseInput.id ?? `case-${caseIndex + 1}`,
|
|
1877
|
+
citationCount,
|
|
1878
|
+
citationF1,
|
|
1879
|
+
citationPrecision: precision,
|
|
1880
|
+
citationRecall: recall,
|
|
1881
|
+
citedIds,
|
|
1882
|
+
coverage: groundedAnswer.coverage,
|
|
1883
|
+
expectedCount,
|
|
1884
|
+
expectedIds,
|
|
1885
|
+
extraIds,
|
|
1886
|
+
groundedAnswer,
|
|
1887
|
+
hasCitations: groundedAnswer.hasCitations,
|
|
1888
|
+
label: caseInput.label,
|
|
1889
|
+
matchedCount,
|
|
1890
|
+
matchedIds,
|
|
1891
|
+
metadata: caseInput.metadata,
|
|
1892
|
+
missingIds,
|
|
1893
|
+
mode,
|
|
1894
|
+
query: caseInput.query,
|
|
1895
|
+
referenceCount: groundedAnswer.references.length,
|
|
1896
|
+
resolvedCitationCount,
|
|
1897
|
+
resolvedCitationRate,
|
|
1898
|
+
status: buildAnswerGroundingStatus({
|
|
1899
|
+
coverage: groundedAnswer.coverage,
|
|
1900
|
+
expectedCount,
|
|
1901
|
+
matchedCount,
|
|
1902
|
+
resolvedCitationCount,
|
|
1903
|
+
unresolvedCitationCount
|
|
1904
|
+
}),
|
|
1905
|
+
unresolvedCitationCount
|
|
1906
|
+
};
|
|
1907
|
+
};
|
|
1908
|
+
var buildRAGAnswerGroundingEvaluationResponse = (cases) => {
|
|
1909
|
+
const totalCases = cases.length;
|
|
1910
|
+
const passedCases = cases.filter((entry) => entry.status === "pass").length;
|
|
1911
|
+
const partialCases = cases.filter((entry) => entry.status === "partial").length;
|
|
1912
|
+
const failedCases = cases.filter((entry) => entry.status === "fail").length;
|
|
1913
|
+
const groundedCases = cases.filter((entry) => entry.coverage === "grounded").length;
|
|
1914
|
+
const partiallyGroundedCases = cases.filter((entry) => entry.coverage === "partial").length;
|
|
1915
|
+
const ungroundedCases = cases.filter((entry) => entry.coverage === "ungrounded").length;
|
|
1916
|
+
return {
|
|
1917
|
+
cases,
|
|
1918
|
+
ok: true,
|
|
1919
|
+
passingRate: totalCases > 0 ? passedCases / totalCases * 100 : 0,
|
|
1920
|
+
summary: {
|
|
1921
|
+
averageCitationF1: cases.reduce((sum, result) => sum + result.citationF1, 0) / (totalCases || 1),
|
|
1922
|
+
averageCitationPrecision: cases.reduce((sum, result) => sum + result.citationPrecision, 0) / (totalCases || 1),
|
|
1923
|
+
averageCitationRecall: cases.reduce((sum, result) => sum + result.citationRecall, 0) / (totalCases || 1),
|
|
1924
|
+
averageResolvedCitationRate: cases.reduce((sum, result) => sum + result.resolvedCitationRate, 0) / (totalCases || 1),
|
|
1925
|
+
failedCases,
|
|
1926
|
+
groundedCases,
|
|
1927
|
+
partiallyGroundedCases,
|
|
1928
|
+
passedCases,
|
|
1929
|
+
partialCases,
|
|
1930
|
+
totalCases,
|
|
1931
|
+
ungroundedCases
|
|
1932
|
+
},
|
|
1933
|
+
totalCases
|
|
1934
|
+
};
|
|
1935
|
+
};
|
|
1936
|
+
var evaluateRAGAnswerGrounding = (input) => buildRAGAnswerGroundingEvaluationResponse(input.cases.map((caseInput, caseIndex) => evaluateRAGAnswerGroundingCase({ caseIndex, caseInput })));
|
|
1826
1937
|
var compareRAGRerankers = async ({
|
|
1827
1938
|
collection,
|
|
1828
1939
|
suite,
|
|
@@ -2729,5 +2840,5 @@ export {
|
|
|
2729
2840
|
AIStreamKey
|
|
2730
2841
|
};
|
|
2731
2842
|
|
|
2732
|
-
//# debugId=
|
|
2843
|
+
//# debugId=EEFE8418E86C288B64756E2164756E21
|
|
2733
2844
|
//# sourceMappingURL=index.js.map
|