Product quantization is a vector quantization procedure designed to address dimensionality-induced sparsity. It involves first partitioning the vector into smaller sub-vectors, and then clustering each sub-vector. Each sub-vector therefore gets its own codebook, and the representation of a given vector is an -dimensional vector of sub-vector level indices. The name refers to the fact that the encoding is a cartesian product of the sub-vector encodings.