You can use PCA (Principle Component Analysis) to try and go from 128 dimensions to 64 dimensions (or any dimensions you choose) after your descriptors have been extracted from your image. You're using C++, but I use Python for my OpenCV work and use sklearn.decomposition
for this (I'm sure you can look up a similar library for C++). Basically it's similar to compression. Of course, you will lose some accuracy.
See https://en.wikipedia.org/wiki/Principal_component_analysis
Of course, any image you test against your data set will also need to have PCA run against it's descriptor vectors with the same dimension settings.