as diferentes combinações de valores de um vetor

Suponha que eu tenha um vetor de n valores, quero obter as diferentes combinações de seus valores, por exemplo: se eu tenho vect = [a, b, c] as diferentes combinações que eu quero são: [a, b, c] [a, b], [a, c], [b, c], [a], [b], [c]

Note que por exemplo [a, b] é o mesmo que [b, a], então eu não preciso manter os dois.