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 .