内核 过滤优先的混合检索架构——AllowList + ACORN + 原生 BM25
- 一句话
- 把元数据过滤做进检索执行路径(而非事后裁剪),向量 + BM25 + 过滤三路同查同约束——"过滤定义结果正确性"场景下机制最完整的向量库。Qdrant 是"过滤很强的向量库",Weaviate 是"为过滤设计的检索引擎"。Metadata filtering is built into the retrieval execution path (not post-trimmed): vector + BM25 + filtering queried together under the same constraints — the most complete mechanism among vector databases for scenarios where "filtering defines result correctness". Qdrant is "a vector database that's great at filtering"; Weaviate is "a retrieval engine designed for filtering".
- 窄场景
- 企业 RAG / 电商搜索 / 工单系统,查询同时需要"语义相关 + 关键词精确命中(如产品型号、错误码、人名)+ 结构化过滤(租户、权限标签、价格区间、日期窗口)";1M–50M 向量;检索质量=产品正确性的团队,不愿自建"ES 管关键词 + 向量库管语义 + 手写融合层"的三件套。典型画像:SaaS 客服知识库、金融研报检索。Enterprise RAG / e-commerce search / ticketing systems where queries need "semantic relevance + exact keyword hits (product SKUs, error codes, names) + structured filtering (tenants, permission tags, price ranges, date windows)" at once; 1M–50M vectors; teams where retrieval quality equals product correctness, unwilling to self-build the "ES for keywords + vector DB for semantics + hand-written fusion layer" trio. Typical profiles: SaaS support knowledge bases, financial research retrieval.
- 机制
- **AllowList 机制**:属性过滤先走倒排索引(roaring bitmap)解算为"允许出现的对象 ID 集合",这个 AllowList 同时约束向量检索、BM25 检索、hybrid 检索——过滤发生在排序完成之前,对比 post-filter(先 ANN 取 Top-K 再删,后者在高选择性过滤下会返回不足或错过全局最优)。**ACORN 自适应过滤遍历**(v1.27 引入,v1.34 起为新 collection 默认):解决 HNSW 在"过滤与查询向量低相关"时的硬骨头——语义最近的图区域可能全是被过滤掉的对象;ACORN 对不满足过滤的对象跳过距离计算,用 two-hop expansion 穿过"无效区域"快速到达符合过滤的图区域,并在 layer 0 播种额外的符合过滤的入口点,无需重建索引(不改变 HNSW 图结构)。**flat-search cutoff**:AllowList 小到一定程度时直接跳过 HNSW、对候选集暴力搜索——图遍历的 overhead 在小候选集上是纯浪费,这个自适应切换是工程成熟度的标志。**原生 BM25 + hybrid**:alpha 参数可调的向量/BM25 融合,modules 内置 reranker 与 vectorizer(一行配置接 embedding 模型)。**AllowList**: attribute filters first resolve through an inverted index (roaring bitmap) into a "set of allowed object IDs", and this AllowList constrains vector retrieval, BM25 retrieval, and hybrid retrieval simultaneously — filtering happens before ranking completes. Compare post-filter (ANN fetches Top-K then deletes; under highly selective filters it under-returns or misses the global optimum). **ACORN adaptive filtered traversal** (introduced v1.27, default for new collections since v1.34): solves the hard case of HNSW under "filter-query-vector low correlation" — the semantically nearest graph regions may be entirely filtered out; ACORN skips distance computation for non-matching objects, uses two-hop expansion to cross "dead zones" and reach matching graph regions fast, and seeds extra filter-matching entry points at layer 0 — no index rebuild needed (the HNSW graph structure is unchanged). **Flat-search cutoff**: when the AllowList is small enough, HNSW is skipped entirely and candidates are brute-forced — graph-traversal overhead on small candidate sets is pure waste, and this adaptive switch is a mark of engineering maturity. **Native BM25 + hybrid**: vector/BM25 fusion with a tunable alpha parameter; modules ship built-in rerankers and vectorizers (one line of config to attach an embedding model).
- 生产验证
- Finster AI(金融文档 AI):生产运行 **4200 万向量**,单租户/多租户混合部署满足银行客户数据隔离;与 Weaviate 团队合作做 hot/warm/cold 存储与量化成本优化——连标杆客户都需要厂商手把手做成本优化,侧面印证内存/成本是真实痛点(厂商发布的具名案例,有客户实名 quote,https://weaviate.io/case-studies/finster)。DocsBot 的检索栈:语义 + hybrid search 承载一年 610 万+ 问题的 RAG(https://weaviate.io/case-studies/docsbot)。HN 社区技术讨论(2023,"On Hybrid Search with Qdrant"):Weaviate 员工实名论证 hybrid search 的价值(zero-shot、out-of-domain、continual learning),Qdrant 团队当时反对在向量库内做 hybrid——历史证明 Weaviate 的路线被市场接受,Qdrant 后来也原生支持了 hybrid(https://news.ycombinator.com/item?id=35053133,社区讨论,但立场有厂商员工参与,需知晓)。诚实备注:ACORN 官方博客给出的"低相关过滤场景最高 10x 提升"是厂商口径,未见独立复现,此处仅记录机制存在性(https://github.com/weaviate/weaviate-io)。**独立第三方实测缺失**——这是本招牌最诚实的短板;Medium 营销号矩阵(anjalichaursiya / anjalirajawat / yogitakushwah,2026-07/08)的任何结论性断言均未计入验证,仅借其技术描述做机制交叉核对。Finster AI (financial-document AI): **42M vectors** in production, single-tenant/multi-tenant hybrid deployment meeting bank clients' data isolation; worked with the Weaviate team on hot/warm/cold storage and quantization cost optimization — even the flagship customer needed hands-on vendor help with cost, which indirectly confirms memory/cost is a real pain point (vendor-published named case with real customer quote, https://weaviate.io/case-studies/finster). DocsBot's retrieval stack: semantic + hybrid search serving 6.1M+ RAG questions a year (https://weaviate.io/case-studies/docsbot). HN community technical discussion (2023, "On Hybrid Search with Qdrant"): a Weaviate employee argued on the record for the value of hybrid search (zero-shot, out-of-domain, continual learning); the Qdrant team opposed in-database hybrid at the time — history shows Weaviate's route won market acceptance and Qdrant later added native hybrid too (https://news.ycombinator.com/item?id=35053133, community discussion but with a vendor employee in the thread — be aware). Honest notes: ACORN's official-blog "up to 10x improvement in low-correlation filter scenarios" is a vendor figure with no independent reproduction — recorded here as mechanism existence only (https://github.com/weaviate/weaviate-io). **Independent third-party measurements are missing** — this credential's most honest weakness; none of the Medium marketing-matrix articles' (anjalichaursiya / anjalirajawat / yogitakushwah, 2026-07/08) conclusive claims were counted toward validation — their technical descriptions were used only for mechanism cross-checking.
- 竞品差距
- vs qdrant:最接近的对手——Qdrant 的 payload 过滤 + 稀疏/稠密 RRF 在"向量+过滤" workload 上延迟更低、内存更省;但 Qdrant 的稀疏向量需要自建 BM25/SPLADE pipeline(IDF 过期是生产坑),Weaviate 的 BM25 是原生的、且 AllowList 同时约束三路;vs pgvector:pgvector 的过滤是 SQL WHERE + post-filter 语义,高选择性下结果不足,hybrid 要手写 tsvector + RRF,机制代差;vs milvus:Milvus 2.4+ 有标量索引但过滤是表达式后挂,无 AllowList 这类"过滤即执行路径"的设计。31 款里,"过滤+BM25+向量三路一体、过滤参与执行"这个完整度是 Weaviate 独占。vs qdrant — the closest rival: Qdrant's payload filtering + sparse/dense RRF has lower latency and less memory on "vector+filter" workloads; but Qdrant's sparse vectors need a self-built BM25/SPLADE pipeline (IDF expiry is a production pitfall) while Weaviate's BM25 is native and its AllowList constrains all three paths; vs pgvector — pgvector filtering is SQL WHERE + post-filter semantics, under-returning under high selectivity, and hybrid means hand-writing tsvector + RRF — a generational mechanism gap; vs milvus — Milvus 2.4+ has scalar indexes but filtering is a post-hoc expression add-on, with nothing like AllowList's "filtering is the execution path" design. Among the 31, "filtering+BM25+vector in one, filtering participating in execution" is a completeness Weaviate alone owns.
- 证据等级
- 官方文档/博客(机制)+ 厂商具名案例(Finster、DocsBot,数字为厂商发布口径)+ 社区讨论(HN);独立第三方实测缺失,已降级标注Official docs/blogs (mechanism) + vendor named cases (Finster, DocsBot, figures vendor-published) + community discussion (HN); independent third-party measurements missing — downgraded as noted
- 最后核验
- 2026-10-012026-10-01