Intelligent would be your answer. Calling someone a "know-it-all" is putting it in a negative light that they are smart and have a quick-witted intelligence to them, but if you call someone intelligent it's more of a compliment and put in a positive light.