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.
HNSW
Implementation Erlang pure. Ideal pour la plupart des cas.
- + Recherche rapide <5ms
- + Aucune dependance
- + Bon rappel
FAISS
Bibliotheque Meta via NIF. Ideal pour grande echelle + GPU.
- + Acceleration GPU
- + Echelle milliard
- + IVF, compression PQ
DiskANN
Index optimise SSD en Erlang pur. Ideal pour grands jeux de donnees sur disque.
- + Optimise SSD
- + Faible empreinte memoire
- + Aucune dependance
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