☰
Endee 混合搜索指南:稠密向量 + 稀疏倒排索引实现 Hybrid Search 的完整教程
2026/10/13 2:31:45 网站建设 项目流程

【免费下载链接】endee

Endee.io – A high-performance vector database, designed to handle up to 1B vectors on a single node, delivering significant performance gains through optimized indexing and execution. Also available in the cloud at https://endee.io and under the Endee Enterprise license. Free 30-day evaluation: https://docs.endee.io/v2/quick-start/enterprise

项目地址:https://gitcode.com/gh_mirrors/en/endee
点击查看免费下载

Endee是一款高性能开源向量数据库,专为 AI 搜索、RAG 与语义检索设计。它内置稀疏倒排索引,让你用一次请求同时提交稠密向量和稀疏向量,通过 RRF 融合输出混合搜索结果——这正是本文要讲透的 Endee Hybrid Search 实战流程。

什么是 Hybrid Search:为什么要混合稠密与稀疏?

单一检索方式各有盲区:

检索方式擅长短板
稠密向量(Dense)语义相似:"推荐一本像《三体》的书"对精确词、型号、代码符号不敏感
稀疏向量(Sparse)词级精确匹配:产品编号、报错信息、专业术语不理解语义,同义改写会漏召回

混合搜索(Hybrid Search)把两者结合:稠密路召回"意思相近"的文档,稀疏路召回"用词命中"的文档,再融合排序。Endee 用 HNSW 索引跑稠密检索,用内置的分块倒排索引跑稀疏检索,最后用**加权 RRF(Reciprocal Rank Fusion)**合并两路结果。

Endee 稀疏倒排索引:3 个关键设计 🔍

稀疏引擎的源码文档在 docs/sparse.md,三个设计让它在亿级文档上依然快:

  1. 分块存储(Blocked Postings):文档按 65535 个一组分块,每个词项的倒排表按块拆开存放在 MDBX 键值库中。写入时只做"块内合并",而非整表重写,更新成本极低。
  2. 零拷贝流式扫描 + 剪枝:查询时游标逐块读取,绝不全量加载进内存;当某个词项的剩余上界不可能超过当前 Top-k 阈值时,直接跳过整段倒排表。
  3. 量化压缩 + SIMD:块内权重默认量化为uint8_t,配合 AVX2/AVX512/NEON/SVE2 指令跳过已删除条目,进一步压缩内存与 CPU 开销。

核心实现在 src/sparse/inverted_index.cpp 与对外 API src/sparse/sparse_storage.hpp,两者在同一 MDBX 事务中原子更新,保证稠密/稀疏状态一致。

三步开启 Endee 混合搜索 🚀

第一步:创建支持稀疏的索引

创建索引时通过sparse_model参数开启稀疏能力,取值为None、default、endee_bm25:

curl -X POST http://localhost:8080/api/v1/index/create \ -H "Content-Type: application/json" \ -d '{ "index_name": "docs", "dim": 384, "space_type": "ip", "sparse_model": "endee_bm25" }'
  • default:按向量点积打分
  • endee_bm25:按 BM25 思想打分,适合文本场景
  • None:纯稠密索引,不建倒排表

⚠️ 旧的sparse_dim字段已废弃,服务端会直接返回 400 错误,请使用sparse_model。

第二步:写入稠密 + 稀疏混合数据

插入接口同时接受vector与sparse_indices/sparse_values(详见 src/core/ndd.hpp 中的HybridVectorObject):

curl -X POST http://localhost:8080/api/v1/index/docs/vector/insert \ -H "Content-Type: application/json" \ -d '{ "id": "doc-001", "meta": "{\"source\":\"faq\"}", "vector": [0.12, -0.45, 0.88], "sparse_indices": [42, 107, 882], "sparse_values": [1.0, 2.5, 0.6] }'

sparse_indices是词项 ID 数组,sparse_values是对应权重(如 TF-IDF / BM25 权重),两数组长度必须一致。只给vector或只给稀疏字段也完全合法,稀疏部分是可选的。

第三步:一次请求执行混合搜索

同一个/search接口里同时传稠密和稀疏查询向量,就自动走混合融合流程:

curl -X POST http://localhost:8080/api/v1/index/docs/search \ -H "Content-Type: application/json" \ -d '{ "k": 10, "vector": [0.11, -0.44, 0.89], "sparse_indices": [42, 107], "sparse_values": [1.0, 2.2], "dense_rrf_weight": 0.5, "filter": "[{\"source\":{\"$eq\":\"faq\"}}]" }'

融合参数怎么调:RRF 的两个旋钮 🎛️

当两路都有结果时,Endee 使用加权 RRF 合并(融合逻辑见 src/core/ndd.hpp):

文档得分 = Σ 每路权重 / (rrf_rank_constant + 该路排名)
参数默认值作用
dense_rrf_weight0.5稠密路权重(0~1),稀疏路权重自动取1 - dense_rrf_weight
rrf_rank_constant60平滑常数,越大则排名靠后的文档失分越慢
k必填返回数量,范围 1~4096
ef可选稠密侧 HNSW 搜索精度,调大提升召回

调参经验:

  • 通用 RAG 场景:保持默认 0.5 / 0.5,均衡语义与词项命中
  • 搜索"型号、SKU、报错串"为主:把dense_rrf_weight调到 0.2~0.3,让稀疏路主导
  • 纯语义问答(改写多的场景):调到 0.7~0.8
  • 融合分对排名不敏感时,可把rrf_rank_constant降到 20~30,拉开头部差距

另外,稠密、稀疏、filter 三者可以任意组合:只传vector即稠密搜索,只传sparse_indices即稀疏搜索,再加filter就是带元数据过滤的混合搜索,过滤语法见 docs/filter.md。

生产实践建议 ✅

  1. 稀疏向量离线生成:用 BM25 / SPLADE 等模型在入库时把文档转成(term_id, weight)对,词表 ID 需与查询侧一致。
  2. 批量写入:插入接口支持 JSON 数组或application/msgpack批量提交,比逐条写入快一个量级。
  3. 单节点容量:倒排库最大可开到 1TB,配合 docs/rebuild.md 的重建流程和 docs/backup-system.md 的备份能力,可支撑十亿级向量在单节点运行。
  4. 本地快速验证:./install.sh --release --avx2 && ./run.sh即可在localhost:8080起服务,完整步骤见 docs/getting-started.md。

小结

Endee 的混合搜索把"稠密语义召回 + 稀疏倒排精确命中 + RRF 融合"封装进了同一个 HTTP 接口:建索引时指定sparse_model,写入时带上sparse_indices/sparse_values,查询时调好dense_rrf_weight,即可得到相关性显著提升的 Hybrid Search 结果。稀疏引擎的分块倒排、零拷贝剪枝与 SIMD 优化让这条路径在大规模数据下依然低延迟,是 RAG 与 AI 搜索场景的实用组合拳。

【免费下载链接】endee

Endee.io – A high-performance vector database, designed to handle up to 1B vectors on a single node, delivering significant performance gains through optimized indexing and execution. Also available in the cloud at https://endee.io and under the Endee Enterprise license. Free 30-day evaluation: https://docs.endee.io/v2/quick-start/enterprise

项目地址:https://gitcode.com/gh_mirrors/en/endee
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询