Abstract: A method for data compression. An encoder receives data vectors from an original data set. The encoder uses a vector quantization codebook to encode the data vectors into encoded vectors. The codebook is constructed from a compound data set, where the compound data set includes real data vectors and artificial data vectors. The encoded vectors are indexed in the codebook and the indexes are transmitted across communication channels or transmitted to storage.