Crate zebra

source ·
Expand description

§Zebra

A vector database for querying meaningfully similar data. The database can be extended to support documents of many data types; at the moment, text, image, and audio data are supported.

§The name

Zebras (like other equines) make a ‘neigh’ sound. The database performs a nearest-neighbour search to find similar data.

§Installation

Zebra is intended for use as a library. You can add it as a dependency to a Rust project with the following command:

cargo add --git "https://github.com/emmyoh/zebra"

Additionally, a command-line interface (CLI) exists for usage in the terminal.

With the Rust toolchain installed, run the following command:

cargo install --git https://github.com/emmyoh/zebra --features="cli"

You should specify the features relevant to your use case. For example, if you’re interested in using the Zebra CLI on an Apple silicon device, run:

cargo install --git https://github.com/emmyoh/zebra --features="cli,accelerate,metal"

§Features

  • accelerate - Uses Apple’s Accelerate framework when running on Apple operating systems.
  • cuda - Enables GPU support with Nvidia cards.
  • mkl - Uses Intel oneMKL with Intel CPUs and GPUs.
  • metal - Enables GPU support for Apple silicon machines.
  • sixel - Prints images in Sixel format when using the CLI with compatible terminals.
  • avif - Enables querying & inserting AVIF images.
  • cli - Provides a command-line interface to Zebra.

Modules§

  • A module for audio database operations.
  • A module for database operations regardless of data type.
  • A module for distance metrics.
  • A module for image database operations.
  • A module for embedding models.
  • A module for text database operations.

Constants§

  • The candidate list size for the HNSW graph. Higher values result in more accurate search results at the expense of slower retrieval speeds. Can be changed after database creation.