Skip to content

[FEA]construct cagra index then convert to hnswlib object with params.hierarchy = hnsw::HnswHierarchy::GPU #2112

@jingyueob

Description

@jingyueob

Is your feature request related to a problem? Please describe.
I want to integrate cuVS into OceanBase (OB). In my deployment, I build an HNSW index on GPU for performance, but I run searches on CPU.

To keep the upper-layer interface consistent with OceanBase, I also need to support incremental index updates, i.e., adding new vectors to an existing index. Therefore, I need the functionality equivalent to extend_point() during the index construction phase.

However, when I checked the official cuVS documentation for HNSW-cuvs, I found that extend is only supported when hierarchy=cpu. In my case I prefer to build with hierarchy=gpu (GPU build), and I cannot find a way to use extend_point()

Describe the solution you'd like
I’m confused because from my understanding, both CPU and GPU hierarchies end up constructing an HNSW index (based on hnswlib).

Specifically, in my investigation, the extend implementation eventually calls hnswlib’s addPoint() internally. From that perspective, it seems the underlying index structure is still an HNSW graph stored in hnswlib, so I do not understand why using hierarchy=cpu vs hierarchy=gpu would change whether extend_point() is supported.

Could you please clarify:

What is the technical reason that extend_point() / extend is restricted to hierarchy=cpu only?
Is there a different index data layout or update mechanism for hierarchy=gpu that makes incremental updates unsupported today?

My understanding is that when using hierarchy=gpu, building the index in batches and then using add_point as a fallback is technically possible, but not recommended. I need to confirm whether my understanding is correct, because it will affect my design.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions