Skip to main content

Databases (Vector Stores) Reference

Vector databases store embeddings and enable semantic search. LlamaFarm supports multiple vector store backends for different deployment scenarios.

Quick Start

Databases are configured in rag.databases:

rag:
default_database: main_db
databases:
- name: main_db
type: ChromaStore
config:
collection_name: documents
distance_function: cosine

Common Database Properties

PropertyRequiredDescription
nameYesUnique identifier (lowercase, underscores)
typeYesStore type (ChromaStore, QdrantStore, etc.)
configNoStore-specific configuration
embedding_strategiesNoList of embedding configurations
retrieval_strategiesNoList of retrieval configurations
default_embedding_strategyNoDefault embedder name
default_retrieval_strategyNoDefault retrieval strategy name

ChromaStore

Chroma is a lightweight, embedded vector database. Great for development and small-to-medium deployments.

Best for: Local development, prototyping, embedded use

- name: main_db
type: ChromaStore
config:
collection_name: documents
distance_function: cosine
persist_directory: ./data/chroma_db

Options

OptionTypeDefaultDescription
collection_namestringdocumentsCollection name (alphanumeric, hyphens, underscores)
hoststringnullServer host (null for embedded)
portinteger8000Server port
distance_functionstringcosinecosine, l2, ip
distance_metricstringcosineAlternative name for distance_function
embedding_dimensioninteger768Vector dimension (1-4096)
enable_deduplicationbooleantrueEnable document deduplication
embedding_functionstringnullBuilt-in embedding function

Distance Functions

FunctionDescriptionUse Case
cosineCosine similarityGeneral purpose, normalized vectors
l2Euclidean distanceWhen magnitude matters
ipInner productAlready normalized embeddings

Client vs Server Mode

Embedded (default):

config:
collection_name: documents
persist_directory: ./data/chroma

Server mode:

config:
collection_name: documents
host: localhost
port: 8000

QdrantStore (Coming Soon)

Coming Soon

QdrantStore is planned but not yet implemented. Use ChromaStore for now.

Qdrant is a high-performance vector database with rich filtering and clustering.

Best for: Production deployments, large datasets, advanced filtering

- name: production_db
type: QdrantStore
config:
collection_name: documents
host: localhost
port: 6333
vector_size: 768
distance: Cosine

Planned Options

OptionTypeDefaultRequiredDescription
collection_namestringdocumentsNoCollection name
hoststringlocalhostNoServer host
portinteger6333NoREST API port
grpc_portinteger6334NogRPC port
api_keystringnullNoAPI key for auth
vector_sizeinteger-YesVector dimension (1-65536)
distancestringCosineNoCosine, Euclid, Dot
on_diskbooleanfalseNoStore vectors on disk

Distance Metrics

MetricDescriptionUse Case
CosineCosine similarityGeneral semantic search
EuclidEuclidean distanceGeometric comparisons
DotDot productPre-normalized vectors

Docker Setup (for when available)

docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_data:/qdrant/storage \
qdrant/qdrant

FAISSStore (Coming Soon)

Coming Soon

FAISSStore is planned but not yet implemented. Use ChromaStore for now.

FAISS (Facebook AI Similarity Search) for high-performance similarity search.

Best for: Large-scale search, research, GPU acceleration

- name: faiss_db
type: FAISSStore
config:
dimension: 768
index_type: HNSW
metric: Cosine

Planned Options

OptionTypeDefaultRequiredDescription
dimensioninteger-YesVector dimension (1-4096)
index_typestringFlatNoFlat, IVF, HNSW, LSH
metricstringL2NoL2, IP, Cosine
nlistinteger100NoNumber of clusters (IVF)
nprobeinteger10NoClusters to search (IVF)
use_gpubooleanfalseNoEnable GPU acceleration

Index Types

TypeSpeedAccuracyMemoryBest For
FlatSlowExactHighSmall datasets, exact search
IVFFastGoodMediumLarge datasets
HNSWVery FastVery GoodHighProduction, low latency
LSHFastModerateLowVery large datasets

PineconeStore (Coming Soon)

Coming Soon

PineconeStore is planned but not yet implemented. Use ChromaStore for now.

Pinecone is a fully managed cloud vector database.

Best for: Managed service, enterprise, global scale

- name: cloud_db
type: PineconeStore
config:
api_key: ${PINECONE_API_KEY}
index_name: my-index
dimension: 768
environment: us-east-1-aws

Planned Options

OptionTypeDefaultRequiredDescription
api_keystring-YesPinecone API key
index_namestring-YesIndex name (lowercase, hyphens)
dimensioninteger-YesVector dimension (1-20000)
environmentstringus-east-1-awsNoPinecone environment
metricstringcosineNoeuclidean, cosine, dotproduct
namespacestring""NoNamespace for isolation
replicasinteger1NoNumber of replicas (1-20)

Complete Database Configuration

Full example with embedding and retrieval strategies:

rag:
default_database: main_db

databases:
- name: main_db
type: ChromaStore
config:
collection_name: documents
distance_function: cosine
persist_directory: ./data/main_db

# Embedding strategies
embedding_strategies:
- name: default
type: OllamaEmbedder
config:
model: nomic-embed-text
dimension: 768
priority: 0

- name: openai
type: OpenAIEmbedder
config:
model: text-embedding-3-small
api_key: ${OPENAI_API_KEY}
priority: 1

# Retrieval strategies
retrieval_strategies:
- name: semantic
type: BasicSimilarityStrategy
config:
distance_metric: cosine
top_k: 10
default: true

- name: filtered
type: MetadataFilteredStrategy
config:
top_k: 10
filter_mode: pre

default_embedding_strategy: default
default_retrieval_strategy: semantic

Multiple Databases

Configure separate databases for different use cases:

databases:
# Primary document store
- name: documents_db
type: ChromaStore
config:
collection_name: documents

# Archive for older content (embedded mode)
- name: archive_db
type: ChromaStore
config:
collection_name: archive
persist_directory: ./data/archive

# Server-mode for production
- name: production_db
type: ChromaStore
config:
collection_name: production
host: localhost
port: 8000
Future Options

When QdrantStore and FAISSStore are available, you'll be able to use them for larger scale deployments and more advanced features.

Query specific databases:

lf rag query --database documents_db "recent reports"
lf rag query --database archive_db "historical data"

Database Selection Guide

DatabaseDeploymentScaleFeaturesStatus
ChromaStoreEmbedded/ServerSmall-MediumSimple, portableAvailable
QdrantStoreSelf-hostedMedium-LargeRich filtering, clusteringComing Soon
FAISSStoreSelf-hostedVery LargeGPU support, researchComing Soon
PineconeStoreCloudAnyManaged, globalComing Soon

Next Steps