Tarefa
📝 **Pergunta:** **Escreva a função** \`rrf(rankings, k=60)\` — Fusão de classificação recíproca. Pega uma lista de classificações (cada classificação é uma lista ordenada de IDs de documentos do melhor para o pior, de um único recuperador) e retorna o top-K fundido como uma lista de IDs de documentos classificados pela pontuação RRF total, o mais alto primeiro.
Fórmula para um documento em uma classificação na posição indexada zero \`rank\`:
\`\`\`
pontuação = 1 / (k + classificação)
\`\`\`
Somar as pontuações de todas as classificações de cada documento; classifique os documentos por pontuação total decrescente.
Em seguida, combine um vetor e um recuperador BM25 para uma consulta "SKU-4471":
\`\`\`
vector = ["doc-A", "doc-B", "doc-C", "doc-D"] # vector acha que A é melhor
bm25 = ["doc-D", "doc-A", "doc-E", "doc-F"] # bm25 coloca D em primeiro lugar (corresponde ao SKU)
\`\`\`
Imprima os 4 primeiros fundidos como uma lista Python:
\`\`\`
['doc-A', 'doc-D', 'doc-B', 'doc-C']
\`\`\`
A aparece em ambas as listas em classificações altas → vitórias. D foi o número 1 no BM25 → vence B e C, embora o vetor não o favorecesse. Isso é RRF: documentos altamente classificados por QUALQUER superfície de retriever.
📋 Escolha a resposta certa.
💡 **Dica:** Releia a teoria acima se não tiver certeza.