@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.
@@ -1647,6 +1647,30 @@ var buildSources = (results) => results.map((result) => ({
1647
1647
  text: result.chunkText,
1648
1648
  title: result.title
1649
1649
  }));
1650
+ var buildAnswerGroundingStatus = ({
1651
+ coverage,
1652
+ expectedCount,
1653
+ matchedCount,
1654
+ unresolvedCitationCount,
1655
+ resolvedCitationCount
1656
+ }) => {
1657
+ if (expectedCount > 0) {
1658
+ if (matchedCount === expectedCount && unresolvedCitationCount === 0 && coverage !== "ungrounded") {
1659
+ return "pass";
1660
+ }
1661
+ if (matchedCount > 0 || resolvedCitationCount > 0) {
1662
+ return "partial";
1663
+ }
1664
+ return "fail";
1665
+ }
1666
+ if (coverage === "grounded" && unresolvedCitationCount === 0) {
1667
+ return "pass";
1668
+ }
1669
+ if (resolvedCitationCount > 0 || coverage === "partial") {
1670
+ return "partial";
1671
+ }
1672
+ return "fail";
1673
+ };
1650
1674
  var buildRAGEvaluationLeaderboard = (runs) => {
1651
1675
  const sorted = [...runs].sort((left, right) => {
1652
1676
  if (right.response.passingRate !== left.response.passingRate) {
@@ -1799,6 +1823,93 @@ var buildRAGEvaluationResponse = (cases) => {
1799
1823
  totalCases
1800
1824
  };
1801
1825
  };
1826
+ var evaluateRAGAnswerGroundingCase = ({
1827
+ caseIndex,
1828
+ caseInput
1829
+ }) => {
1830
+ const mode = resolveEvaluationMode(caseInput);
1831
+ const expectedIds = normalizeExpectedIds(mode === "chunkId" ? caseInput.expectedChunkIds ?? [] : mode === "source" ? caseInput.expectedSources ?? [] : caseInput.expectedDocumentIds ?? []);
1832
+ const groundedAnswer = buildRAGGroundedAnswer(caseInput.answer, caseInput.sources);
1833
+ const citedReferences = groundedAnswer.parts.flatMap((part) => part.type === "citation" ? part.references : []);
1834
+ const citedIds = normalizeExpectedIds(citedReferences.map((reference) => extractExpectedId(reference, mode)));
1835
+ const expectedSet = new Set(expectedIds);
1836
+ const citedSet = new Set(citedIds);
1837
+ const matchedIds = normalizeExpectedIds([...expectedSet].filter((id) => citedSet.has(id)));
1838
+ const missingIds = normalizeExpectedIds([...expectedSet].filter((id) => !citedSet.has(id)));
1839
+ const extraIds = normalizeExpectedIds([...citedSet].filter((id) => !expectedSet.has(id)));
1840
+ const matchedCount = matchedIds.length;
1841
+ const expectedCount = expectedIds.length;
1842
+ const citedCount = citedIds.length;
1843
+ const precision = citedCount > 0 ? matchedCount / citedCount : 0;
1844
+ const recall = expectedCount > 0 ? matchedCount / expectedCount : 0;
1845
+ const citationF1 = precision + recall > 0 ? 2 * precision * recall / (precision + recall) : 0;
1846
+ const citationCount = groundedAnswer.parts.filter((part) => part.type === "citation").length;
1847
+ const unresolvedCitationCount = new Set(groundedAnswer.ungroundedReferenceNumbers).size;
1848
+ const resolvedCitationCount = citedReferences.length;
1849
+ const resolvedCitationRate = citationCount > 0 ? Math.min(1, resolvedCitationCount / citationCount) : 0;
1850
+ return {
1851
+ answer: caseInput.answer,
1852
+ caseId: caseInput.id ?? `case-${caseIndex + 1}`,
1853
+ citationCount,
1854
+ citationF1,
1855
+ citationPrecision: precision,
1856
+ citationRecall: recall,
1857
+ citedIds,
1858
+ coverage: groundedAnswer.coverage,
1859
+ expectedCount,
1860
+ expectedIds,
1861
+ extraIds,
1862
+ groundedAnswer,
1863
+ hasCitations: groundedAnswer.hasCitations,
1864
+ label: caseInput.label,
1865
+ matchedCount,
1866
+ matchedIds,
1867
+ metadata: caseInput.metadata,
1868
+ missingIds,
1869
+ mode,
1870
+ query: caseInput.query,
1871
+ referenceCount: groundedAnswer.references.length,
1872
+ resolvedCitationCount,
1873
+ resolvedCitationRate,
1874
+ status: buildAnswerGroundingStatus({
1875
+ coverage: groundedAnswer.coverage,
1876
+ expectedCount,
1877
+ matchedCount,
1878
+ resolvedCitationCount,
1879
+ unresolvedCitationCount
1880
+ }),
1881
+ unresolvedCitationCount
1882
+ };
1883
+ };
1884
+ var buildRAGAnswerGroundingEvaluationResponse = (cases) => {
1885
+ const totalCases = cases.length;
1886
+ const passedCases = cases.filter((entry) => entry.status === "pass").length;
1887
+ const partialCases = cases.filter((entry) => entry.status === "partial").length;
1888
+ const failedCases = cases.filter((entry) => entry.status === "fail").length;
1889
+ const groundedCases = cases.filter((entry) => entry.coverage === "grounded").length;
1890
+ const partiallyGroundedCases = cases.filter((entry) => entry.coverage === "partial").length;
1891
+ const ungroundedCases = cases.filter((entry) => entry.coverage === "ungrounded").length;
1892
+ return {
1893
+ cases,
1894
+ ok: true,
1895
+ passingRate: totalCases > 0 ? passedCases / totalCases * 100 : 0,
1896
+ summary: {
1897
+ averageCitationF1: cases.reduce((sum, result) => sum + result.citationF1, 0) / (totalCases || 1),
1898
+ averageCitationPrecision: cases.reduce((sum, result) => sum + result.citationPrecision, 0) / (totalCases || 1),
1899
+ averageCitationRecall: cases.reduce((sum, result) => sum + result.citationRecall, 0) / (totalCases || 1),
1900
+ averageResolvedCitationRate: cases.reduce((sum, result) => sum + result.resolvedCitationRate, 0) / (totalCases || 1),
1901
+ failedCases,
1902
+ groundedCases,
1903
+ partiallyGroundedCases,
1904
+ passedCases,
1905
+ partialCases,
1906
+ totalCases,
1907
+ ungroundedCases
1908
+ },
1909
+ totalCases
1910
+ };
1911
+ };
1912
+ var evaluateRAGAnswerGrounding = (input) => buildRAGAnswerGroundingEvaluationResponse(input.cases.map((caseInput, caseIndex) => evaluateRAGAnswerGroundingCase({ caseIndex, caseInput })));
1802
1913
  var compareRAGRerankers = async ({
1803
1914
  collection,
1804
1915
  suite,
@@ -2953,5 +3064,5 @@ export {
2953
3064
  AIStreamProvider
2954
3065
  };
2955
3066
 
2956
- //# debugId=4B5F55063D897A0D64756E2164756E21
3067
+ //# debugId=586E6D6CBA45E2DA64756E2164756E21
2957
3068
  //# sourceMappingURL=index.js.map