Skip to content

[bug](sindi): range search return repeated results #2669

Description

@blueorwild

Affected area

sindi

Interface

cpp

VSAG version

v0.18.8

Summary

range search on sindi return repeated results

Minimal reproducer

vsag::Resource resource;
vsag::Engine engine(&resource);
const std::string build_params = R"({
"dtype": "sparse",
"dim": 3,
"metric_type": "ip",
"index_param": {
"use_reorder": true,
"term_id_limit": 4000,
"doc_prune_ratio": 0,
"window_size": 60000,
"use_quantization": false
}
})";
auto create_result = engine.CreateIndex("sindi", build_params);
auto index = create_result.value();

std::vector<std::vector<uint32_t>> indices = {
{5, 100, 2000}, {5, 50, 2000}, {10, 100, 3000}};
std::vector<std::vector> values = {
{0.5f, 0.8f, 0.6f}, {0.3f, 0.9f, 0.1f}, {0.7f, 0.4f, 0.5f}};
std::vector<int64_t> ids = {1, 2, 3};
for (size_t i = 0; i < ids.size(); ++i) {
vsag::SparseVector sparse_vector;
sparse_vector.len_ = static_cast<uint32_t>(indices[i].size());
sparse_vector.ids_ = indices[i].data();
sparse_vector.vals_ = values[i].data();
auto dataset = vsag::Dataset::Make();
dataset->NumElements(1)
->Ids(&ids[i])
->SparseVectors(&sparse_vector)
->Owner(false);
auto add_result = index->Add(dataset);
}

vsag::SparseVector query_vector;
query_vector.len_ = static_cast<uint32_t>(indices[0].size());
query_vector.ids_ = indices[0].data();
query_vector.vals_ = values[0].data();
auto query = vsag::Dataset::Make();
query->NumElements(1)->SparseVectors(&query_vector)->Owner(false);
const std::string search_params =
R"({"sindi": {"query_prune_ratio": 0, "n_candidate": 100}})";
auto range_result =
index->RangeSearch(query, 1.0f, search_params, /limited_size=/-1);

auto result = range_result.value();
for (int64_t i = 0; i < result->GetDim(); ++i) {
std::cout << "id: " << result->GetIds()[i]
<< ", distance: " << result->GetDistances()[i] << '\n';
}

Environment

- OS: Alibaba Cloud Linux 3
- vsag version: v0.18.8
- compiler version: c++ (GCC) 10.2.1 20200825 (Alibaba 10.2.1-3.9 2.32)

Expected behavior

return unique results

Actual behavior

Image

References

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

kind/bugBug fixes, defects, or unexpected behavior 修复程序错误、缺陷或异常行为pts/3Moderate effort; standard implementation and tests 中等工作量;常规实现及测试version/0.181. Major pyramid upgrade 2. HGraph 3. Observability 1. pyramid大升级 2. HGraph增强 3. 可观测性增强

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions