GIN est l'acronyme de Generalized Inverted Index (ou index générique inverse). C'est une structure d'index stockant des ensembles de paires (clé, liste de lignes) où le terme « liste de lignes » est un ensemble de lignes dans lesquelles la clé est valable. Chaque valeur indexée peut contenir plusieurs clés, le même identifiant de ligne peut ainsi apparaître dans plusieurs listes.
Il est généralisé dans le sens où un index GIN n'a pas à connaître l'opération qu'il accélère. À la place, il utilise des stratégies adaptées définies pour des types de données particuliers.
Un des avantages de GIN est la possibilité qu'il offre que des types de données personnalisés et les méthodes d'accès appropriées soient développés par un expert du domaine du type de données, plutôt que par un expert en bases de données. L'utilisation de GiST offre le même avantage.
L'implantation de GIN dans PostgreSQL™ est principalement l'oeuvre de Teodor Sigaev et Oleg Bartunov. Plus d'informations sur GIN sont disponibles sur leur site web.