Úkol
📝 **Otázka:** **Napište funkci** \`rrf(rankings, k=60)\` — Reciprocal Rank Fusion. Vezme seznam hodnocení (každé hodnocení je seřazený seznam ID dokumentů od nejlepšího k nejhoršímu, od jednoho retrívra) a vrátí sloučený top-K jako seznam ID dokumentů seřazených podle celkového skóre RRF, nejvyšší jako první.
Vzorec pro jeden dokument v jednom žebříčku na pozici s nulovým indexem \`rank\`:
\`\`\`
skóre = 1 / (k + pořadí)
\`\`\`
Součet skóre ve všech hodnoceních pro každý dokument; seřadit dokumenty podle celkového skóre sestupně.
Poté spojte vektor a retriever BM25 pro dotaz „SKU-4471“:
\`\`\`
vector = ["doc-A", "doc-B", "doc-C", "doc-D"] # vector si myslí, že A je nejlepší
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 dává D na první místo (odpovídá SKU)
\`\`\`
Vytiskněte sloučené top-4 jako seznam Pythonu:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A se objeví v obou seznamech na vysokých pozicích → vyhrává. D byl #1 v BM25 → bije B a C, i když to vektor neupřednostňuje. To je RRF: dokumenty vysoce hodnocené podle JAKÉHOKOLI povrchu retrívra.
📋 Vyberte správnou odpověď.
💡 **Tip:** Pokud si nejste jisti, přečtěte si znovu teorii výše.