Uma variação da solução de Neil que não precisa de extensão é:
create table friendz (
from_id int,
to_id int
);
create unique index ifriendz on friendz(greatest(from_id,to_id), least(from_id,to_id));
A solução de Neil permite que você use um número arbitrário de colunas.
Nós dois estamos contando com o uso de expressões para construir o índice que está documentado https://www.postgresql.org/docs/current/indexes-expressional.html