feat(rabitq): upgrade RaBitQ-Library to v0.3.8 and enable Windows x86_64 - #780
Open
egolearner wants to merge 4 commits into
Open
egolearner wants to merge 4 commits into
egolearner wants to merge 4 commits into
Conversation
Upstream v0.3.8 adds MSVC support, so the RABITQ_SUPPORTED gate now also accepts Windows x86_64, driving the AVX2/AVX-512 kernels with /arch flags and the MASM FHT source. The out-of-tree patch deferring SIMD feature errors was upstreamed, leaving only the LUT-reuse patch, re-ported to the new query and lookup-table API. The unsupported-platform message becomes a single constant in rabitq_params.h rather than 12 duplicated literals.
egolearner
requested review from
Cuiyus,
chinaux,
feihongxu0824,
richyreachy and
zhourrr
as code owners
September 24, 2026 02:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
0e87c6c)。此前RaBitQ-Library-0.1目录里的 checkout 实际停在 v0.1.1 之前的快照。
RABITQ_SUPPORTED平台门槛,除 Linux x86_64外也接受 Windows x86_64:MSVC 分支用
/arch:AVX2、/arch:AVX512逐文件下发指令集,并编入上游新增的 MASM FHT 源文件(
enable_language(ASM_MASM)必须在顶层目录调用)。ARM/Android/iOS/32 位仍走 stub,Windows ARM64 CI 不受影响。
rabitq.defer_simd_errors.patch:已被上游 VectorDB-NTU/RaBitQ-Library@9b59bf0收录,且是 v0.3.8 的祖先提交。
rabitq_lut_reuse.patch重新移植到新的 query / lookup-table API(
Lut<T>::reset()+SplitBatchQuery<T>::reset()),ivf_rabitq_reformer.cc的LUT 复用路径依赖它。
rabitq_params.h中的单个常量kRabitqUnsupportedPlatform;LOG_ERROR是 printf 风格宏,故统一用"%s"形式传参以避开
-Wformat-security。Test plan
ninja -C build.release全量构建通过(Linux x86_64,GCC)RABITQ_SUPPORTED=0分支用compile_commands.json提取命令 +-fsyntax-only逐个 TU 校验(本机该分支是死代码)
C++ 单测:rabitq_dispatch / hnsw_rabitq_streamer / ivf_rabitq_streamer /
index_interface / collection / schema / segment_helper 全绿
Python:
test_collection_hnsw_rabitqtest_collection_ivf_rabitqtest_refine_query_params46 passedclang-format 无 diff;clang-tidy(新 pre-push 钩子同款参数
--warnings-as-errors=*)对 4 个改动的.ccexit 0、零诊断gist-100k(960 维,100 查询)端到端建索引 + 召回,GT 由 Flat 精确索引暴力算出
(Flat 自校验 100%):
Windows x86_64 (MSVC) 实际编译未验证 —— 本机无 Windows 工具链,依赖
.github/workflows/05-windows-build.ymliOS / Android CI(应走 stub 分支,未实际编译)