When a RabitqReformer trained with one total_bits is reused for an entity configured with a different total_bits, the quantized data layout (ex_code size) silently mismatches. This causes get_full_est() to interpret binary quantization codes as floating-point factors, producing garbage distances that sporadically drop search results. Add an ex_bits() accessor to RabitqReformer and validate it against the entity's ex_bits in HnswRabitqStreamer::open(), returning IndexError_Mismatch on inconsistency. Fix the HNSWRabitqGeneral test to re-create a converter and reformer with matching total_bits=2 for the third invocation. Add TestExBitsMismatch to verify the mismatch is correctly rejected. |
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| index_interface_test.cc | ||