Zadatak
📝 **Pitanje:** **Napišite funkciju** \`rrf(rankings, k=60)\` — Recipročna fuzija rangova. Uzima popis rangiranja (svako rangiranje je poredani popis ID-ova dokumenata od najboljeg do najgoreg, od jednog retrivera) i vraća spojeni top-K kao popis ID-ova dokumenata poredanih prema ukupnom RRF rezultatu, najviši prvi.
Formula za jedan dokument u jednom rangiranju na nultoj poziciji \`rang\`:
\`\`\`
rezultat = 1 / (k + rang)
\`\`\`
Zbroj bodova za sva rangiranja za svaki dokument; poredaj dokumente prema ukupnom rezultatu silazno.
Zatim spojite vektor i BM25 retriver za upit "SKU-4471":
\`\`\`
vektor = ["doc-A", "doc-B", "doc-C", "doc-D"] # vektor misli da je A najbolji
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 stavlja D na prvo mjesto (odgovara SKU)
\`\`\`
Ispišite spojena top-4 kao Python popis:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A se pojavljuje na oba popisa na visokim položajima → pobjeđuje. D je bio broj 1 u BM25 → bolji od B i C iako ga vektor nije favorizirao. To je RRF: dokumenti visoko rangirani na BILO KOJOJ površini retrivera.
📋 Odaberite pravi odgovor.
💡 **Savjet:** Ponovno pročitajte gornju teoriju ako niste sigurni.