Skip to content

feat: emb_list (ArrayOfVector) and sparse AnnIterators for streaming retrieval#1668

Draft
DashUmEr wants to merge 1 commit into
zilliztech:2.6from
41zero:upstream-pr/emblist-anniterator
Draft

feat: emb_list (ArrayOfVector) and sparse AnnIterators for streaming retrieval#1668
DashUmEr wants to merge 1 commit into
zilliztech:2.6from
41zero:upstream-pr/emblist-anniterator

Conversation

@DashUmEr

@DashUmEr DashUmEr commented Jun 8, 2026

Copy link
Copy Markdown

Adds knowhere AnnIterator support for bounded-memory streaming (search_iterator) over:

  • emb_list / ArrayOfVector (EMB_LIST_HNSW, MAX_SIM): a chunk-level streaming iterator —
    one sub-iterator per query vector, aggregating MAX_SIM per row.
  • sparse inverted index: a streaming bounded-WAND AnnIterator.

Engine-level foundation for search_iterator() over emb_list / hybrid / sparse in Milvus
— design in milvus-io/milvus#49906 (stateless Iterator-v2, no delegator/session). The
Milvus, pymilvus and milvus-sdk-node changes build on this.

Tests: tests/ut/test_emb_list.cc, test_sparse.cc (full UT green: 84 cases / 141.6M asserts).
Targets 2.6 (where native struct-array/emb_list search lives); can retarget main. Draft
for early visibility alongside #49906.

@sre-ci-robot

Copy link
Copy Markdown
Collaborator

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DashUmEr
To complete the pull request process, please assign zhengbuqian after the PR has been reviewed.
You can assign the PR to them by writing /assign @zhengbuqian in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sre-ci-robot

Copy link
Copy Markdown
Collaborator

Welcome @DashUmEr! It looks like this is your first PR to zilliztech/knowhere 🎉

…retrieval

Adds knowhere AnnIterator support enabling bounded-memory streaming
(search_iterator) over two index families:
- emb_list / ArrayOfVector (EMB_LIST_HNSW, MAX_SIM): a chunk-level streaming
  iterator with one sub-iterator per query vector, aggregating MAX_SIM per row.
- sparse inverted index: a streaming bounded-WAND AnnIterator.

Engine-level support for milvus search_iterator over emb_list / hybrid / sparse
(milvus-io/milvus#49906). Tests: tests/ut/test_emb_list.cc, test_sparse.cc.

Signed-off-by: David <david@41zero.com>
@DashUmEr DashUmEr force-pushed the upstream-pr/emblist-anniterator branch from 3e980ea to 0419817 Compare June 8, 2026 21:22
@mergify mergify Bot added dco-passed and removed needs-dco labels Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants