Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ISSUE: #17599

PRs: 

Keywords: search, range search, radius, query

Released: 

Summary(required)

At present, the behavior of Query() "search" in Milvus is to return TOPK most similar results for each vector to be queried.

The purpose of this MEP is to realize another query "range search" function. The user specifies a query "radius", and Milvus queries and returns all results with distance better than this "radius" ("< radius" for "L2"; "> radius" for "IP")

This function can be considered regarded as a "superset" of the existing query function, because if you sort the results of range search and take the first `topk` results, they will be identical with the return result of the existing we get identical results comparing with current query function.

The result output of this MEP is different from the original query result. The original query result is with fixed length `nq * topk`, while the return result of range search is variable length. In addition to `IDs` / `distances`, `lims` is also returned to record the offset of the query result of each vector in the result set. Another MEP pagination will uniformly process the results of `Query` and `QueryByRange` and return them to the client, so the processing of the returned results is not within the scope of this MEP discussion.

...