Úloha
📝 **Otázka:** **Napíšte funkciu** \`rrf(rankings, k=60)\` — Reciprocal Rank Fusion. Vezme zoznam hodnotení (každé hodnotenie je zoradený zoznam ID dokumentov od najlepšieho po najhoršie, od jedného retrievera) a vráti zlúčené top-K ako zoznam ID dokumentov zoradených podľa celkového skóre RRF, najvyššie ako prvé.
Vzorec pre jeden dokument v jednom hodnotení na nulovej pozícii \`rank\`:
\`\`\`
skóre = 1 / (k + poradie)
\`\`\`
Súčet skóre vo všetkých hodnoteniach pre každý dokument; zoradiť dokumenty podľa celkového skóre zostupne.
Potom spojte vektor a retriever BM25 na dotaz „SKU-4471“:
\`\`\`
vector = ["doc-A", "doc-B", "doc-C", "doc-D"] # vector si myslí, že A je najlepšie
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 dáva D na prvé miesto (zodpovedá SKU)
\`\`\`
Vytlačte spojené top-4 ako zoznam Python:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A sa objaví v oboch zoznamoch na vysokých pozíciách → vyhráva. D bolo #1 v BM25 → porazilo B a C, aj keď to vektor neuprednostňoval. To je RRF: dokumenty vysoko hodnotené podľa AKÉHOKOĽVEK povrchu retrievera.
📋 Vyberte správnu odpoveď.
💡 **Tip:** Ak si nie ste istí, prečítajte si znova teóriu vyššie.