/elna-vector-db

Primary LanguageRustGNU Affero General Public License v3.0AGPL-3.0

Vector Database on ICP

Welcome to our new vector_database project and to the internet computer development community.

What is ELNA's VectorDB

It is an open-source and fully on-chain vector database and vector similarity search engine, that helps AI applications on ICP.

This is released under the [open-source Apache License 2.0] in October 2024.

Instant Distance: fast HNSW indexing

Here we using HNSW algorthm to index the vecotr embeddings. Instance Distance is a fast pure-Rust implementation of the Hierarchical Navigable Small Worlds paper by Malkov and Yashunin for finding approximate nearest neighbors (ANN).

VectorDB Features

Storage Capabilities

  • Variable Dimension Storage: Our VectorDB supports the storage of vectors with varying dimensions, allowing for flexible data management.

Stability and Persistence

  • Stable Memory Support: VectorDB ensures data persistence across upgrades. The data is stored in stable memory during the pre-upgrade hook and is reloaded into the heap after the canister upgrade, maintaining data integrity and continuity.

Security and Access Control

  • Super User and Admin Management:

    • Super User: Each vector canister has a designated super user who has full control over the canister.

    • Admin Management: The super user can add or remove admin users who have permissions to read or write in the VectorDB.

    • Stable Structure Support: The security structure is also stable, ensuring that the access control mechanisms persist through upgrades.


Getting Started

To learn more before you start working with vector_database, see the following documentation available online:

If you want to start working on your project right away, you might want to try the following commands:

cd vector_database/
dfx help
dfx canister --help

Running the project locally

If you want to test your project locally, you can use the following commands:

# Starts the replica, running in the background
dfx start --background

# Deploys your canisters to the replica and generates your candid interface
dfx deploy

Once the job completes, your application will be available at http://localhost:4943?canisterId={asset_canister_id}.