barrel_vectordb_distance (barrel_vectordb v2.1.1)

View Source

Vector Distance Computation Module

Provides SIMD-accelerated distance computations via NIF. Falls back to pure Erlang implementation if NIF is not available.

Supports: - Cosine distance - Euclidean distance - Dot product

Vectors can be represented as: - Lists of floats (Erlang native, slower) - Binaries of 32-bit floats (NIF optimized, faster)

Summary

Functions

Compute cosine distance: 1 - cos(a, b)

Compute cosine distance for pre-normalized vectors (faster)

Compute dot product of two vectors

Compute Euclidean distance

Convert binary vector to list of floats

Check if NIF is available

Return SIMD backend information

Convert list of floats to binary vector (32-bit floats)

Types

vector/0

-type vector() :: [float()] | binary().

Functions

cosine_distance(Vec1, Vec2)

-spec cosine_distance(vector(), vector()) -> float().

Compute cosine distance: 1 - cos(a, b)

cosine_distance_normalized(Vec1, Vec2)

-spec cosine_distance_normalized(vector(), vector()) -> float().

Compute cosine distance for pre-normalized vectors (faster)

dot_product(Vec1, Vec2)

-spec dot_product(vector(), vector()) -> float().

Compute dot product of two vectors

euclidean_distance(Vec1, Vec2)

-spec euclidean_distance(vector(), vector()) -> float().

Compute Euclidean distance

from_binary(Bin)

-spec from_binary(binary()) -> [float()].

Convert binary vector to list of floats

nif_available()

-spec nif_available() -> boolean().

Check if NIF is available

simd_info()

-spec simd_info() -> #{backend => avx2 | neon | scalar | erlang}.

Return SIMD backend information

to_binary(List)

-spec to_binary([float()]) -> binary().

Convert list of floats to binary vector (32-bit floats)