Personalized Steering of Large Language Models: Versatile Steering Vectors Through Bi-directional Preference Optimization