UNPKG

mongodb-rag-core

Version:

Common elements used by MongoDB Chatbot Framework components.

35 lines 1.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.averagePrecisionAtK = void 0; const assertKIsValid_1 = require("./assertKIsValid"); /** Calculate Average Precision (AP) for a single query. Average Precision is the average of the precision scores at each rank where a relevant item appears. @param relevantItems - List of relevant items @param retrievedItems - List of retrieved items @param matchFunc - Function to compare items for equality @param k - Value of k (top-k results to consider) @returns Average Precision (AP) */ function averagePrecisionAtK(relevantItems, retrievedItems, matchFunc, k) { (0, assertKIsValid_1.assertKIsValid)(k); let numRelevantRetrieved = 0; let precisionSum = 0; const retrievedRelevantItems = new Set(); const limit = Math.min(k, retrievedItems.length); for (let i = 0; i < limit; i++) { const item = retrievedItems[i]; // Find the matching relevant item const relevantItem = relevantItems.find((relevantItem) => matchFunc(relevantItem, item)); if (relevantItem) { if (!retrievedRelevantItems.has(relevantItem)) { retrievedRelevantItems.add(relevantItem); numRelevantRetrieved++; precisionSum += numRelevantRetrieved / (i + 1); } } } return relevantItems.length === 0 ? 0 : precisionSum / relevantItems.length; } exports.averagePrecisionAtK = averagePrecisionAtK; //# sourceMappingURL=averagePrecisionAtK.js.map