code: def decode(self, codes):
          
          # Because R is a rotation matrix (R^t * R = I), R^-1 should be R^t
          return self.pq.decode(codes) @ self.R.T
docs: Given PQ-codes, reconstruct original D-dimensional vectors via :func:`PQ.decode`,
          and applying an inverse-rotation.
  
          Args:
              codes (np.ndarray): PQ-cdoes with shape=(N, M) and dtype=self.code_dtype.
                  Each row is a PQ-code
  
          Returns:
              np.ndarray: Reconstructed vectors with shape=(N, D) and dtype=np.float32