rank_llm
rank_llm copied to clipboard
Thoughts about design philosophy of RankLLM
What is RankLLM? I can think of two obvious answers:
Approach 1. RankLLM is a fully-integrated layer on top of Anserini and Pyserini.
If this is the case, then we need "deep" integration with Pyserini, pulling it in as a dependency (perhaps parts of it optional, etc.). Iteration would need to be coupled with Pyserini, and likely slower.
Approach 2. RankLLM is a lightweight general-purpose reranking library.
Basically, we can rerank anything... just give us something in this JSON format, and we'll rerank it for you. By the way, you can get the candidates from Pyserini, here's the command you run.
In this case, RankLLM does not need to have Pyserini as a dependency. We just need shim code in Pyserini to get its output into the right format. And for that, Anserini directly also.
Integration is not as tight - but this simplifies dependencies quite a bit...
Thoughts about these two approaches @ronakice @sahel-sh ?