First of all, You need to find a way to define what polygons are slivers, and what not.
Borrowing from here:
Sliver triangle
slivers are usually defined by having much smaller area/volume than its circumcircle.
Secondly, for each sliver polygon You could run such algorithm: detect, if there is any polygon that overlaps/touches with the sliver polygon. If there are many that overlap, prefer the one that has biggest common area with sliver polygon; If none of polygons overlap with the sliver polygon, find the one that's exterior has biggest common length with sliver polygon's exterior. Like this You will find the polygon that You should connect the sliver to.
Then just update the polygon with ST_Union(polygon, sliver). However, if polygon and sliver polygon only have one point in common, then union of these two geometries would not be valid. (or it will be MultiPolygon).
Alternatively, see here:
ArcGIS 10.1 - How Polygon Neighbouring Works
This is interesting article on same topic.