Maximum inner-product search

Maximum inner-product search (MIPS) is a search problem, with a corresponding class of search algorithms which attempt to maximise the inner product between a query and the data items to be retrieved. MIPS algorithms are used in a wide variety of big data applications, including recommendation algorithms and machine learning.

Formally, for a database of vectors $$x_i$$ defined over a set of labels $$S$$ in an inner product space with an inner product $$ \langle \cdot, \cdot \rangle$$ defined on it, MIPS search can be defined as the problem of determining


 * $$\underset{i \in S}{\operatorname{arg\,max}}\ \langle x_i, q \rangle$$

for a given query $$q$$.

Although there is an obvious linear-time implementation, it is generally too slow to be used on practical problems. However, efficient algorithms exist to speed up MIPS search.

Under the assumption of all vectors in the set having constant norm, MIPS can be viewed as equivalent to a nearest neighbor search (NNS) problem in which maximizing the inner product is equivalent to minimizing the corresponding distance metric in the NNS problem. Like other forms of NNS, MIPS algorithms may be approximate or exact.

MIPS search is used as part of DeepMind's RETRO algorithm.