Une couche de Barrel

Barrel Vector

La couche vectorielle. Recherche vectorielle mono-noeud haute performance construite en Erlang. Utilisez-la au sein du Barrel complet, ou de maniere autonome comme bibliotheque embarquable.

Choisissez Votre Backend

Quatre backends d'indexation, une seule API. Choisissez celui adapte a votre charge de travail.

DEFAUT

HNSW

Implementation Erlang pure. Ideal pour la plupart des cas.

  • + Recherche rapide <5ms
  • + Aucune dependance
  • + Bon rappel
GPU

FAISS

Bibliotheque Meta via NIF. Ideal pour grande echelle + GPU.

  • + Acceleration GPU
  • + Echelle milliard
  • + IVF, compression PQ
DISQUE

DiskANN

Index optimise SSD en Erlang pur. Ideal pour grands jeux de donnees sur disque.

  • + Optimise SSD
  • + Faible empreinte memoire
  • + Aucune dependance
MOTS-CLES

BM25

Recherche plein texte en Erlang pur. Combinez avec vecteurs pour hybride.

  • + Recherche plein texte
  • + Hybride avec RRF
  • + Aucune dependance

Recherche Hybride

Combinez vecteur + BM25 avec fusion RRF pour de meilleurs resultats

Metriques Multiples

Distance Cosinus, Euclidienne, Produit Scalaire

Filtrage Metadonnees

Filtrez les vecteurs par metadonnees JSON arbitraires

Persistance

Stockage RocksDB avec recuperation apres crash

API HTTP

Interface REST simple pour toutes les operations

Embarquable

Utilisez comme bibliotheque dans les apps Erlang/Elixir

Performance

<5ms

Recherche (p99, top-10)

10K/sec

Debit d'insertion

1K QPS

Debit de recherche

Benchmark sur 1M vecteurs, 1536 dimensions

Demarrage Rapide

%% Start the vector store
{ok, _} = barrel_vectordb:start_link(#{name => docs, dimension => 3}).

%% Add a vector with metadata (or configure an embedder for text)
ok = barrel_vectordb:add(docs, <<"doc1">>, [0.1, 0.2, 0.3],
    #{title => <<"Hello">>}).

%% Vector search
{ok, Hits} = barrel_vectordb:search_vector(docs, [0.15, 0.25, 0.35], #{k => 10}).

%% Hybrid vector + BM25
{ok, Hits2} = barrel_vectordb:search_hybrid(docs, <<"hello">>, #{k => 10}).
# Atteignez la couche vectorielle via HTTP en lancant barrel_server.
$ curl -X POST localhost:8080/db/docs/vector \
    -H 'content-type: application/json' \
    -d '{"id":"doc1","text":"Hello","vector":[0.1,0.2,0.3]}'

# Recherche vectorielle.
$ curl -X POST localhost:8080/db/docs/search/vector \
    -H 'content-type: application/json' -d '{"vector":[0.15,0.25,0.35],"k":10}'

# Hybride vecteur + BM25.
$ curl -X POST localhost:8080/db/docs/search/hybrid \
    -H 'content-type: application/json' -d '{"query":"hello","k":10}'

Quand l'Utiliser

Utilisez Barrel Vector quand :

  • + Deploiement mono-machine
  • + <10M vecteurs
  • + Configuration simple preferee
  • + Embarque dans app Erlang/Elixir

Considerez des alternatives quand :

  • + Besoin d'un cluster distribue
  • + >10M vecteurs
  • + Failover automatique requis
  • + Scalabilite horizontale necessaire