Current state: ["Under Discussion"]
...
This API does range search for index, it returns all unsorted results with distance "better than radius" (for IP: > radius; for others: < radius).
PROTO | virtual DatasetPtr QueryByRange(const DatasetPtr& dataset, const Config& config, const faiss::BitsetView bitset) |
INPUT | Dataset { knowhere::meta::TENSOR: - // query data knowhere::meta::ROWS: - // rows of queries knowhere::meta::DIM: - // dimension } Config { knowhere::meta::RADIUS: - // radius for range search } |
OUTPUT | Dataset { knowhere::meta::IDS: - // result IDs with length LIMS[nq] knowhere::meta::DISTANCE: - // result DISTANCES with length LIMS[nq] knowhere::meta::LIMS: - // result offset prefix sum with length nq + 1 } |
...
This API does range search for no-index dataset, it returns all unsorted results with distance "better than radius" (for IP: > radius; for others: < radius).
PROTO | static DatasetPtr RangeSearch(const DatasetPtr base_dataset, const DatasetPtr query_dataset, const Config& config, const faiss::BitsetView bitset); |
INPUT | Dataset { knowhere::meta::TENSOR: - // base data knowhere::meta::ROWS: - // rows of base data knowhere::meta::DIM: - // dimension } Dataset { knowhere::meta::TENSOR: - // query data knowhere::meta::ROWS: - // rows of queries knowhere::meta::DIM: - // dimension } Config { knowhere::meta::RADIUS: - // radius for range search } |
OUTPUT | Dataset { knowhere::meta::IDS: - // result IDs with length LIMS[nq] knowhere::meta::DISTANCE: - // result DISTANCES with length LIMS[nq] knowhere::meta::LIMS: - // result offset prefix sum with length nq + 1 } |
...
{d(0,2n), d(0,2n+1), d(0,2n+2), ..., d(0,3n-1), d(1,2n), d(1,2n+1), d(1,2n+2), ..., d(1,3n-1)}
...
The result of 2nd call each iteration will have some duplications duplication with the result of 1st callprevious iteration, use need do duplication check and remove them.
...