GRADES: Gradient descent for similarity caching