The best data structure to use depends a lot on what you're actually doing with your neighbours.
If what you actually want to do is to have each boid be affected by each boid in a fixed-size neighbourhood, the best acceleration structure is actually just fixed-size bins.