Create a separate many-to-many table for each type of relationship.
If you try to represent multiple types of relationships in a single many-to-many table, that's a violation of Fourth Normal Form.
Re comments:
Actually the violation of 4NF would be something like this:
Person1 Person2 Is_Employer Is_Teacher Is_Father
Tom John No No Yes
If you have a three-column table that lists two people and a relationship type, it's better, but you still have a problem with reciprocal relationships.
Person1 Person2 Rel_type
John Ann married
Some people get confused about whether to store two rows, or else store the two people in some kind of consistent order (e.g. lower ID value first). But then there are relationships that are directed, like "employer" where the order means something. And there are relationships with multiple people, like "siblings."
So another way to organize these relationships would be to create a table listing groups, one group per row, and then another table listing people in that group.
Group Rel_type Group Person
123 siblings 123 Bobby
123 Peter
123 Greg
123 Cindy
123 Jan
123 Marsha
This works best for relationships that have variable numbers of members, and are reciprocal relationships. Members of a sports team is another example. It's essentially a many-to-many table between the group and the people.
You may need multiple ways to store relationships, to account for all the different types.