The main reason that I suggest SIFT or SURF for large-scale loop closure detection is that I've only
benhmarked with SURF yet. I've seen recent papers using ORB as the vocabulary with good results. ORB is far more faster to compute. However, RTAB-Map lacks of a Binary search tree to speed-up nearest neighbor search for binary features like ORB (nearest neighbor is then done by BruteForce instead of using a KD-Tree like for SURF or SIFT). With ORB ("Kp/DetectorStrategy"=2, "Kp/NndrRatio"=0.9 and "Kp/NNStrategy"=3), I suggest to use less features / image (like "Kp/WordsPerImage"=200 with "LccBow/InlierDistance"=0.1) but activate re-extraction of features on loop closure detection ("LccReextract/Activated"=true).
If you do large-scale mapping, you may want to activate the memory management of RTAB-Map too. In the GUI it is called "T_time" and on ROS it is "Rtabmap/TimeThr" (in ms, default 0 or desactivated). For a loop closure detection update of 1 Hz, I set this time threshold to 700 ms so that mapping updates will always take around ~700 ms. I'll refer you to this
paper for the results of activating the memory management.
cheers