As this wonderful bloomfilter tutorial by llimllib will show you, when you test an element you have to recalculate its hash. This will tell you what bits it sets in the bloom filter.
If your bloomfilter is outside of system ram but is on a storage device that still has random access you could pull only the pertinent bytes from storage and test them against the calculated bits. If they're all non zero after anding them then you have a possible match. This works best if the bits an element lights up are sparse.
This would not allow physical Hard Drives to perform well since they have a seek time to get the heads to the correct sector. Solid State Drives would likely perform better but confirm this with testing.
But, as Berin Lorittsch points out, you may be in a case where the bloomfilter is doing more harm than good. This is randomized IO access. IO is slow enough on it's own. It's hard to tell how bad this compares without data from solutions that have no bloomfilter, but seriously, ouch.
Before giving up on the bloomfilter keep in mind that bloomfilters are very customizeable. Give this a close read:
How big should I make my Bloom filter?
It's a nice property of Bloom filters that you can modify the false positive rate of your filter. A larger filter will have less false positives, and a smaller one more.
Your false positive rate will be approximately (1-e-kn/m)k, so you can just plug the number n of elements you expect to insert, and try various values of k and m to configure your filter for your application.2
This leads to an obvious question:
How many hash functions should I use?
The more hash functions you have, the slower your bloom filter, and the quicker it fills up. If you have too few, however, you may suffer too many false positives.
Since you have to pick k when you create the filter, you'll have to ballpark what range you expect n to be in. Once you have that, you still have to choose a potential m (the number of bits) and k (the number of hash functions).
It seems a difficult optimization problem, but fortunately, given an m and an n, we have a function to choose the optimal value of k: (m/n)ln(2)
So, to choose the size of a bloom filter, we:
Choose a ballpark value for n
Choose a value for m
Calculate the optimal value of k
Calculate the error rate for our chosen values of n, m, and k. If it's unacceptable, return to step 2 and change m; otherwise we're done.
bloomfilter-tutorial - llimllib
This should make it clear that if your bloom filter is too big for system ram it's because you chose to make it too big. Seriously, weigh the time cost of hitting IO first against the time cost of more frequent false positives on your first check. This is very much a tuning variable.