Intelligent would be a positive connotation since it's giving a positive vibe. Know-it-all sounds more harsh and meaner and not positive, something that you would say as an insult. So intelligent would be your answer.
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.