Εργασία
📝 **Ερώτηση:** **Γράψτε τη συνάρτηση** \`rrf(rankings, k=60)\` — Reciprocal Rank Fusion. Λαμβάνει μια λίστα με ταξινομήσεις (κάθε κατάταξη είναι μια ταξινομημένη λίστα αναγνωριστικών εγγράφων από το καλύτερο προς το χειρότερο, από ένα μόνο retriever) και επιστρέφει το συγχωνευμένο top-K ως λίστα αναγνωριστικών εγγράφων ταξινομημένα με βάση τη συνολική βαθμολογία RRF, την υψηλότερη πρώτη.
Τύπος για ένα έγγραφο σε μία κατάταξη στη θέση \`rank\` με μηδενικό δείκτη:
\`\`\`
βαθμολογία = 1 / (k + κατάταξη)
\`\`\`
Βαθμολογίες αθροίσματος σε όλες τις βαθμολογίες για κάθε έγγραφο. ταξινομήστε τα έγγραφα κατά συνολική βαθμολογία φθίνουσα.
Στη συνέχεια, συνδυάστε ένα διάνυσμα και ένα BM25 retriever για ένα ερώτημα "SKU-4471":
\`\`\`
vector = ["doc-A", "doc-B", "doc-C", "doc-D"] # διάνυσμα πιστεύει ότι το A είναι καλύτερο
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 βάζει το D πρώτο (ταίριαξε με το SKU)
\`\`\`
Εκτυπώστε το συγχωνευμένο top-4 ως λίστα Python:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
Το A εμφανίζεται και στις δύο λίστες σε υψηλές θέσεις → κερδίζει. Το D ήταν #1 στο BM25 → κτυπά το B και το C, παρόλο που το διάνυσμα δεν το ευνοούσε. Αυτό είναι το RRF: τα έγγραφα έχουν υψηλή κατάταξη από ΟΠΟΙΑΔΗΠΟΤΕ επιφάνεια retriever.
📋 Επιλέξτε τη σωστή απάντηση.
💡 **Υπόδειξη: ** Ξαναδιαβάστε την παραπάνω θεωρία εάν δεν είστε σίγουροι.