Approximate maximum dot product between a vector and set of vectors using only a single vector representation for the latter

If we have a vector $q$ and a set of vectors $D = \{d_1, d_2, ..., d_l\}$ is there a way to create functions $QF$ and $DF$ such that $QF(q)^TDF(D) \approx \max_i(q^Td_i)$ ?

Use case:

I want to build an information retrieval system in which documents are represented by an arbitrary but small ($100$) number of vectors and the query is represented by a single vector. Ideally, I would like to sort the documents based on $\max_i(q^Td_i)$ but storing all vectors and computing on query time each $q^Td_i$ term for each document does not scale. I was wondering if there is a way to combine the $d_i$ into a single vector and use this vector somehow to approximate the aforementioned score.

Topic vector-space-models information-retrieval

Category Data Science

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.