Retriever Providers¶
Retriever providers fetch the documents/contexts that OpenAgent Eval measures for
retrieval quality (context precision, recall, MRR, …). Every retriever returns
Document objects with a relevance score normalized to [0.0, 1.0].
Which one should a beginner pick?¶
- Just learning / no infra? Use
mock— zero setup, offline. - Local, no external service? Use
memorywith thesentence_transformersembedder — pure NumPy, no server. - Already have a vector DB? Use its adapter (chroma, qdrant, pinecone, weaviate, faiss, pgvector).
- Want a keyword baseline? Use
bm25— no embeddings needed. - Have a custom search API? Use
httpto point at any REST endpoint.
Comparison matrix¶
| Provider | Install extra | Embedder needed? | Server-side embed? | Needs key? |
|---|---|---|---|---|
| Chroma | chromadb |
❌ | ✅ | ❌ |
| Qdrant | openagent-eval[qdrant] |
✅ | ❌ | optional |
| Pinecone | openagent-eval[pinecone] |
✅ | ❌ | ✅ |
| Weaviate | openagent-eval[weaviate] |
optional | ✅ | optional |
| FAISS | openagent-eval[faiss] |
✅ | ❌ | ❌ |
| PGVector | openagent-eval[pgvector] |
✅ | ❌ | optional |
| Elasticsearch | openagent-eval[elasticsearch] |
knn mode only | ❌ | optional |
| BM25 | openagent-eval[bm25] |
❌ | ❌ | ❌ |
| Memory | (none — NumPy) | ✅ | ❌ | ❌ |
| HTTP | (none — httpx) | ❌ | ❌ | ❌ |
| Mock | (built-in) | ❌ | ❌ | ❌ |
Common configuration¶
Retriever options live under settings:. Embedders (when required) go under
embedder:.
retriever:
provider: memory
settings:
documents_path: data/corpus.json
k: 5
embedder:
provider: sentence_transformers
model: all-MiniLM-L6-v2
Embedder requirement
memory, faiss, qdrant, pinecone, and pgvector require an
embedder. elasticsearch requires one only in mode: knn. weaviate
makes it optional (it can embed server-side). chroma, bm25, http, and
mock do not need an embedder.
Score normalization¶
Different backends report relevance in incompatible scales (cosine distance, L2,
inner product, raw BM25/Elasticsearch _score). All retrievers funnel raw scores
through shared helpers so every Document.score lands in [0.0, 1.0] (higher =
more relevant).
Next steps¶
- Open a provider page above for a full walkthrough.
- Need an embedder? See ../embedders/index.md.
- Pair with an LLM from ../llm/index.md.