Crate vectx_core

Crate vectx_core 

Source
Expand description

§vectX Core

Core library for the vectX vector database.

This crate provides the fundamental data structures and algorithms:

  • Vector - Dense vector representation with SIMD operations
  • Point - A vector with ID and optional payload
  • Collection - Container for points with indexing
  • HnswIndex - HNSW approximate nearest neighbor index
  • BM25Index - Full-text search with BM25 ranking

§Example

use vectx_core::{Vector, Point, PointId, Collection, CollectionConfig, Distance};

// Create a collection
let config = CollectionConfig {
    name: "test".to_string(),
    vector_dim: 3,
    distance: Distance::Cosine,
    use_hnsw: true,
    enable_bm25: false,
};
let collection = Collection::new(config);

// Insert a point
let vector = Vector::new(vec![1.0, 0.0, 0.0]);
let point = Point::new(PointId::String("p1".to_string()), vector, None);
collection.upsert(point).unwrap();

// Search
let query = Vector::new(vec![1.0, 0.0, 0.0]);
let results = collection.search(&query, 10, None);

Re-exports§

pub use collection::Collection;
pub use collection::CollectionConfig;
pub use collection::Distance;
pub use collection::PayloadIndexType;
pub use vector::Vector;
pub use error::Error;
pub use error::Result;
pub use point::Point;
pub use point::PointId;
pub use point::VectorData;
pub use point::SparseVector;
pub use hnsw::HnswIndex;
pub use graph::Node;
pub use graph::Edge;
pub use graph::NodeId;
pub use graph::EdgeId;
pub use bm25::BM25Index;
pub use filter::Filter;
pub use filter::PayloadFilter;
pub use filter::FilterCondition;
pub use multivector::MultiVector;
pub use multivector::MultiVectorConfig;
pub use multivector::MultiVectorComparator;

Modules§

background
bm25
collection
error
filter
graph
hnsw
multivector
MultiVector support for ColBERT-style late interaction retrieval
point
simd
SIMD-optimized vector operations
vector