GROUP BY should be ok. GROUP BY - Nebula Graph Database Manual
case 1, group by $-.following and then collect post. After that, you can limit to 3 results in your client.
case 2, just yield collect(postid) as first, yield collect(postid) as second.
(GO FROM userid OVER follow YIELD follow._dst AS following | LIMIT 100) | \
GO FROM $-.following OVER post YIELD post._dst as postid, $-.following as following_id | \
GROUP BY $-.following_id yield $-.following_id as following_id, collect($-.postid) as first, collect($-.postid) as second, collect($-.postid) as third