Versions Compared

Key

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

...

  • What impact (if any) will there be on existing users?
  • If we are changing behaviors how will we phase out the older behavior?
  • If we need special migration tools, describe them here.
  • When will we remove the existing behavior?

Test Plan(required)

We can use Query() testcases to test QueryByRange() with little case change.

The main difference between Query() and QueryByRange() is, Query() using 'topk' while QueryByRange() using 'radius'.

Do following:

  1. do Query() firstly and get 'nq * topk' results
  2. for L2, find the max distance among "nq * topk' results, let 'radius = (max distance)^(1/2)'
  3. for IP, find the min distance among "nq * topk' results, let 'radius = min distance'
  4. for other binary metric types, find the max distance among "nq * topk' results, let 'radius = max distance'
  5. do QueryByRange() with above 'radius', the result will be a superset of result of Query()

For index HNSW, we should set "range_k" before call QueryByRange().Describe in a few sentences how the MEP will be tested. We are mostly interested in system tests (since unit tests are specific to implementation details). How will we know that the implementation works as expected? How will we know nothing broke?

There is no public data set for range search. I have created one range search data set based on sift1M.

...