Zadanie
📝 **Pytanie:** **Napisz funkcję** \`rrf(rankingi, k=60)\` — Fuzja rang wzajemnych. Pobiera listę rankingów (każdy ranking jest uporządkowaną listą identyfikatorów dokumentów od najlepszego do najgorszego, od jednego retrievera) i zwraca połączone górne K jako listę identyfikatorów dokumentów posortowanych według całkowitego wyniku RRF, najpierw najwyższy.
Wzór na jeden dokument w jednym rankingu na pozycji zerowej indeksowanej \`ranking\`:
\`\`\`
wynik = 1 / (k + pozycja)
\`\`\`
Sumuj wyniki ze wszystkich rankingów każdego dokumentu; sortuj dokumenty malejąco według całkowitego wyniku.
Następnie połącz wektor i retriever BM25, aby uzyskać zapytanie „SKU-4471”:
\`\`\`
wektor = ["doc-A", "doc-B", "doc-C", "doc-D"] # wektor uważa, że A jest najlepsze
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 stawia D na pierwszym miejscu (dopasowuje SKU)
\`\`\`
Wydrukuj połączone top-4 jako listę Pythona:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A pojawia się na obu listach na wysokich pozycjach → wygrywa. D był numerem 1 w BM25 → pokonuje B i C, mimo że wektor mu nie sprzyjał. To jest RRF: dokumenty wysoko ocenione przez KAŻDĄ powierzchnię retrievera.
📋 Wybierz właściwą odpowiedź.
💡 **Wskazówka:** Jeśli nie jesteś pewien, przeczytaj ponownie powyższą teorię.