Versions Compared

Key

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

...

The following figure shows the complete call stack of a search request from SDK to segcore. Range search completely reuses this call stack without any changes. Range search only needs to put the parameter "radius" into the search parameter "param" on the SDK side.

Image Modified


The following figure shows the call stack diagram of vector search in segcore, and the .

The BLACK part shows the functions that have already been implemented.

For sealed segment, to realize the range search function, knowhere needs to provide the interface QueryByRange();

For growing segment, because there is no index created, we can't use knowhere IDMAP to realize the brute force search function. We can only re-realize the full set of logic of brute force search by ourselves. To implement range search, we need to implement the function shown in the RED part.

Another solution is that Knowhere provides a new IDMAP index, which does not need to insert vector data, but only needs to specify the external memory address of vector data. Growing segment can temporarily generate this kind of index during search, and then call the Query() & QueryByRange() interface provided by the IDMAP, and the index will be destroyed immediately after it is used up. 

There is another MEP 34 -- IDMAP/BinaryIDMAP Enhancement describing this proposal.

The RED part shows the functions that need be added for range search.

Image AddedImage Removed

Result Handling

...