I'm a bit confused by this (I've only read the summary that is linked to).
As I understand it, the "raw" neural bloom filter is basically a function which you can query "with what certainty can you say that item X is in the set". Unlike a classic bloom filter, it will never be able to say "item X is definitely not in the set". Once you add thresholds, this turns into a function which can say "might be a member" or "might not be a member".
So to avoid having false negatives, it sounds like they have a backup "classic bloom filter". e.g. from the summary, this is the full algorithm:
> 1. If the Neural Bloom Filter predicts membership with probability greater than the chosen threshold, return “(might be a) member” > 2. Otherwise check the secondary Bloom filter, if it indicates the element might be a member, return “(might be a) member” > 3. Otherwise return “not a member”
Assuming the secondary (classic) bloom filter is the same size as what they are comparing to, then there can't be any space savings - it is strictly an addition.
If the secondary bloom filter is smaller than it would have otherwise been, then it will introduce more false positives - and since a negative from the neural bloom filter means "listen to the secondary bloom filter", then this just means that the error can only ever be worse than using just the secondary bloom filter (since it is possible that the neural bloom filter might get something wrong that the secondary bloom filter would have got right).
I can imagine how the secondary (classic) bloom filter can be smaller: It only needs the bits that fail the neural bloom filter that are actually in the set. That means once you're done training the neural bloom filter, you can revisit your training set to find the set of filters that miss the primary so you know what goes in the secondary.