GIN stands for Generalized Inverted Index. It is
an index structure storing a set of (key, posting list) pairs, where
a "posting list" is a set of rows in which the key occurs. Each
indexed value may contain many keys, so the same row ID may appear in
multiple posting lists.
It is generalized in the sense that a GIN index
does not need to be aware of the operation that it accelerates.
Instead, it uses custom strategies defined for particular data types.
One advantage of GIN is that it allows the development
of custom data types with the appropriate access methods, by
an expert in the domain of the data type, rather than a database expert.
This is much the same advantage as using GiST.
The GIN
implementation in PostgreSQL is primarily
maintained by Teodor Sigaev and Oleg Bartunov. There is more
information about GIN on their
website.