Skip to content

Feature: External Vector AccessorΒ #691

@zhangjinpeng87

Description

@zhangjinpeng87

Describe what you are looking for

I'm using usearch rust sdk to build a hybrid retrieval data store. I used usearch::Index to do semantic similarity search. In my case, I built a LSM-tree like architecture for the vector index part (so it introduced the capability of range filtering), latest put/delete happen in the latest usearch::Index, and as it grow, we flush it to disk as an segment (usearch::Index on disk).

In order to control the total memory usage of the whole vector index, I'm trying to just store u64 id and graph structure in the usearch::Index, and store the original vectors into a sequential file. The u64 id is the vector's offset in the sequential vector file. By separating the vectors from the Index, we can keep the Index part very small, and we mmap the vector file, so just these vectors blocks accessed is in RSS. so we need a way to access the original vector by id.

I don't use View because the sequential vector files can be used to do segment merging/compaction. Do you think such External Vector Accessor interface is valuable?

Can you contribute to the implementation?

  • I can contribute

Is your feature request specific to a certain interface?

It applies to everything

Contact Details

zzzhangjinpeng@gmail.com

Is there an existing issue for this?

  • I have searched the existing issues

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestv3Breaking changes planned for v3

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions