They took all user generated playlists and projected the songs into vectors where songs that appear together on playlists are closer and songs that appear less often are farther.
It’s likely changed a lot since then, but it seemed like a pretty straightforward clustering system at the time.