First, I want to say I saw your tiny text in the other post and it made me laugh pretty hard, so here I am.
If you look at the documentation for the base class of btOverlappingPairCache,
here, you'll see there is a remove function on there as well. You could get a reference to the overlapping pair array by calling "getOverlappingPairArray()", and iterate over it's members calling the remove function and passing in the two bodies in the pair you are iterating over. That would effectively let you clear the entire cache. From there you can use add to add whichever pairs you want. Or more directly you could only remove the ones you don't want to have collisions for.
Alternatively you could use Collision Groups and Collision Masks. This is a bit more generic of a solution and may not suit your needs. But essentially the Group is what the object belongs to and the Mask is what it will collide with. I think there are 5 or 6 predefined groups, and from there you can make your own groups as you see fit, provided the number is both a short int, and a power of two. So I think that means you can have around ~10 more groups defined yourself, not gonna do the math right now. Also note that the mask(what the object will collide with) can have any combination of groups in it as you want/need. In fact non-static rigid bodies by default have the "AllFilter" passed in as it's mask. Really this is only useful if you know an objects collision behavior won't need to change while it's in the world.
I don't have any experience with ragdolls personally, but how are you constructing them? And what are you using for their shapes? I've tinkered a bit with shapes and numerous collisions myself and found that anything beyond a basic primitive or convex hull can degrade your performance really fast. But this is assuming you are having the objects overlap and collide each frame. Which may not be the case.