15. A non-transitory computer program product having instructions encoded thereon that when executed by one or more processors cause a process to be carried out, the process comprising: receiving a plurality of inverted lists of quantized data points, each inverted list having a centroid data point associated therewith, the centroid data point representing an average of all of the quantized data points in the respective inverted list; sorting each inverted list according to a squared distance between each quantized data point in the respective inverted list and the respective centroid data point in the same inverted list as the quantized data point; receiving a query data point; and selecting a set of quantized data points from across each of the sorted inverted lists, each selected data point being within a distance of the respective centroid data point, the distance defined by a squared distance between the query data point and the respective centroid data point, wherein a first vector from the respective centroid data point in the same inverted list as the selected quantized data point to the query data point is orthogonal to a second vector from the respective centroid data point in the same inverted list as the selected quantized data point to the selected quantized data point.
15. A non-transitory computer program product having instructions encoded thereon that when executed by one or more processors cause a process to be carried out, the process comprising: receiving a plurality of inverted lists of quantized data points, each inverted list having a centroid data point associated therewith, the centroid data point representing an average of all of the quantized data points in the respective inverted list; sorting each inverted list according to a squared distance between each quantized data point in the respective inverted list and the respective centroid data point in the same inverted list as the quantized data point; receiving a query data point; and selecting a set of quantized data points from across each of the sorted inverted lists, each selected data point being within a distance of the respective centroid data point, the distance defined by a squared distance between the query data point and the respective centroid data point, wherein a first vector from the respective centroid data point in the same inverted list as the selected quantized data point to the query data point is orthogonal to a second vector from the respective centroid data point in the same inverted list as the selected quantized data point to the selected quantized data point. 20. The computer program product of claim 15 , wherein the quantized data points and the query data point represent high-dimension image descriptors.