{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/to-index-or-not-to-index-optimizing-exact","title":"To Index or Not to Index: Optimizing Exact Maximum Inner Product Search","arxiv_id":"1706.01449","date":"2017-06-05","proceeding":null,"authors":["Firas Abuzaid","Geet Sethi","Peter Bailis","Matei Zaharia"],"abstract":"Exact Maximum Inner Product Search (MIPS) is an important task that is widely\npertinent to recommender systems and high-dimensional similarity search. The\nbrute-force approach to solving exact MIPS is computationally expensive, thus\nspurring recent development of novel indexes and pruning techniques for this\ntask. In this paper, we show that a hardware-efficient brute-force approach,\nblocked matrix multiply (BMM), can outperform the state-of-the-art MIPS solvers\nby over an order of magnitude, for some -- but not all -- inputs.\n  In this paper, we also present a novel MIPS solution, MAXIMUS, that takes\nadvantage of hardware efficiency and pruning of the search space. Like BMM,\nMAXIMUS is faster than other solvers by up to an order of magnitude, but again\nonly for some inputs. Since no single solution offers the best runtime\nperformance for all inputs, we introduce a new data-dependent optimizer,\nOPTIMUS, that selects online with minimal overhead the best MIPS solver for a\ngiven input. Together, OPTIMUS and MAXIMUS outperform state-of-the-art MIPS\nsolvers by 3.2$\\times$ on average, and up to 10.9$\\times$, on widely studied\nMIPS datasets.","url_abs":"http://arxiv.org/abs/1706.01449v3","url_pdf":"http://arxiv.org/pdf/1706.01449v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"to-index-or-not-to-index-optimizing-exact","repo_url":"https://github.com/stanford-futuredata/optimus-maximus","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":null}],"tasks":[{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"}],"methods":[{"method_slug":"pruning","method_name":"Pruning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}