1. move thread pool to PSO steps; 2. support enable/disable sampling on KNN; 3. use cosine-similarity as data distance.