A positive way to describe a know it all
Solution 1:
I haven't been able to find a single word that positively describes someone willing to correct others in conversation, but meticulous is a good adjective for someone who cares about details and correctness.
You could combine it with a noun describing what the person is particularly knowledgeable about, e.g. a meticulous grammarian or a meticulous fact-checker.
Solution 2:
A guru on everything, a modern oracle, a smart man's man?
Solution 3:
Erudite is close though it does not have all the connotations you ask for (you are asking for quite a few):
adjective
having or showing great knowledge or learning: Ken could turn any conversation into an erudite discussion.
She was very erudite.
Another possibility is the term Renaissance man:
Renaissance man n.
A man who has broad intellectual interests and is accomplished in areas of both the arts and the sciences.
Solution 4:
Perhaps sage
One venerated for experience, judgment, and wisdom
Solution 5:
What about brainiac? It lists it as being "sometimes derogatory", but I usually hear it as an affectionate term, especially for someone younger than the person speaking.
Noun:
brainiac (plural brainiacs): (slang, sometimes derogatory) a very intelligent and usually studious, erudite person.
Edit:
I can't actually think of a time I've heard it used in a derogatory manner. I'm not really sure how to use it in such a way without it sounding weird.