Reciprocal Rank Fusion over two retrievers
Vector search and PostgreSQL full-text search each fail in a different direction: embeddings miss exact identifiers and API symbol names, full-text misses paraphrase. RRF merges both ranked lists without needing a tuned weight between them, which matters because the right weight differs per query and there is no principled way to pick one globally.