Data as of Aug 25, 2026 · Based on 351 AI responses from ChatGPT Search and Google AI Mode · See how Parse measures this
For automated, domain-specific embedding evaluation, start with the Massive Text Embedding Benchmark (MTEB) to compare models across tasks, then validate finalists on a high-quality in-domain 'golden' dataset you create. If your primary goal is measuring retrieval-augmented generation (RAG) and QA performance, use BES4RAG, which focuses on RAG pipelines but won’t replace broad, multi-task benchmarking.
Brands AI recommends here
Best for standardized, multi-task benchmarking and initial model screening across retrieval, classification, and clustering; must be paired with a custom, high-quality in-domain 'golden' dataset to validate real-world performance.
Best when your priority is evaluating RAG pipelines and retrieval+QA metrics; BES4RAG automates RAG-focused evaluation but is narrower than MTEB for broader embedding tasks.
For your use case—automatically comparing embedding models on your own domain—I'd use MTEB (Massive Text Embedding Benchmark) as the evaluation engine, with a custom domain-specific benchmark layered on top.
Massive Text Embedding Benchmark (MTEB) is probably the best starting point because it already provides a standardized evaluation framework, task abstractions, metrics, model interfaces, caching, CLI execution, and result storage. It currently covers a very broad range of embedding tasks and supports custom evaluation workflows.
┌─────────────────────┐
│ Candidate Models │
│ │
│ Model A │
│ Model B │
│ Model C │
│ Fine-tuned Model D │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Evaluation Harness │
│ MTEB │
└──────────┬──────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
Domain Retrieval Similarity Classification
│ │ │
└────────────────┼────────────────┘
▼
┌─────────────────────┐
│ Domain Scorecard │
│ │
│ Recall@k │
│ nDCG@k │
│ MRR │
│ Precision@k │
│ latency │
│ memory │
│ cost │
└─────────────────────┘
This is the most important part.
If you're evaluating embeddings for, say, legal documents, medical literature, financial research, internal documentation, e-commerce, etc., generic MTEB scores shouldn't determine the winner. MTEB itself supports many task types—retrieval, classification, clustering, semantic similarity, and pair classification—but your domain-specific data is what tells you whether a model actually works for your application.
For a retrieval application, I'd create something like:
query relevant_documents
---------------------------------------------------------
"How do I terminate X?" [doc_183, doc_921]
"requirements for Y" [doc_17]
"X vs Y pricing" [doc_42, doc_51]
Ideally have hundreds to thousands of representative queries, with human-validated relevance judgments.
Then run every candidate model against exactly the same dataset.
For semantic/RAG retrieval, I'd prioritize:
MTEB already supports retrieval evaluation and its ecosystem integrates naturally with Sentence Transformers.
If your actual application is RAG, I'd make Recall@k and nDCG@k the headline metrics rather than generic embedding similarity.
I'd maintain a version-controlled dataset like:
eval/
retrieval/
queries.jsonl
qrels.json
similarity/
pairs.jsonl
classification/
examples.jsonl
Then your CI pipeline can effectively do:
evaluate_embeddings \
--models model_a model_b model_c \
--dataset domain_v3
and produce:
| Model | Recall@10 | nDCG@10 | MRR@10 | Latency | Cost |
|---|---|---|---|---|---|
| Model A | 91.2% | .873 | .842 | 12ms | $ |
| Model B | 94.8% | .911 | .887 | 18ms | $$ |
| Model C | 93.1% | .894 | .865 | 7ms | $ |
That gives you a much more useful answer than "Model B is #14 on MTEB."
Because you don't need to reinvent the execution layer.
MTEB lets you define/select tasks and then run models against them programmatically:
import mteb
model = mteb.get_model("your-model")
tasks = mteb.get_tasks(
tasks=["YourDomainRetrieval"]
)
results = mteb.evaluate(
model,
tasks=tasks
)
The current MTEB API explicitly supports defining models, selecting tasks, running evaluations, caching results, and custom tasks.
It also has a CLI, which is useful for automating evaluations in CI/CD.
I'd separate three different evaluation layers:
Run MTEB's existing benchmarks.
Purpose:
"Is this generally a strong embedding model?" Useful for eliminating obviously weak candidates.
Run your custom benchmark.
Purpose:
"Is this model good at our data?" This should drive model selection.
Measure:
Purpose:
"Is this model actually suitable for production?" This prevents a model that is 2% better on nDCG but 8× more expensive from automatically winning.
I'd think about the ecosystem this way:
| Framework | Best use |
|---|---|
| MTEB | Overall embedding-model benchmarking — my recommendation |
| Sentence Transformers evaluators | Training/fine-tuning and lightweight custom evaluation |
| BEIR | Excellent retrieval benchmark/dataset ecosystem |
| Ragas | Evaluating RAG pipelines rather than embeddings themselves |
| Custom evaluation harness | Your domain-specific gold set + production metrics |
Sentence Transformers has its own evaluators for similarity, classification, information retrieval, etc., and is particularly attractive if you're also training/fine-tuning the embeddings.
MTEB is particularly compelling if you want one standardized interface across many candidate models. Its current tooling can also run a local leaderboard, which is useful for an internal "embedding model leaderboard."
I'd build an internal "Embedding Eval" service around MTEB, rather than adopting a separate commercial evaluation platform:
MTEB + custom domain tasks + MLflow/W&B-style experiment tracking + CI regression tests.
The workflow becomes:
New embedding model
↓
Generic MTEB evaluation
↓
Your domain benchmark
↓
Production-scale retrieval test
↓
Quality / latency / cost score
↓
Internal leaderboard
↓
Promote model if it beats current production model
The particularly valuable feature is making the domain benchmark a regression test. Every time someone proposes a new embedding model—or fine-tunes one—you automatically know whether it actually improves your retrieval quality.
If you tell me what your domain/application is (e.g. RAG over internal docs, legal search, product search, code search, etc.), I can suggest the exact benchmark dataset structure, metrics, and an automated MTEB-based evaluation architecture.
I'd maintain a version-controlled dataset like:
eval/
retrieval/
queries.jsonl
qrels.json
similarity/
pairs.jsonl
classification/
examples.jsonl
Then your CI pipeline can effectively do:
evaluate_embeddings \
--models model_a model_b model_c \
--dataset domain_v3
and produce:
Ideally have hundreds to thousands of representative queries, with human-validated relevance judgments.
Then run every candidate model against exactly the same dataset.
For semantic/RAG retrieval, I'd prioritize:
MTEB already supports retrieval evaluation and its ecosystem integrates naturally with Sentence Transformers.
The best embedding model evaluation framework depends on your evaluation strategy: MTEB (Massive Text Embedding Benchmark) is the industry standard for general-purpose code and open benchmarking, while Ragas or TruLens are best if your domain focus is specifically for Retrieval-Augmented Generation (RAG).
Here is a breakdown of the top frameworks to automate your evaluation.
Top Evaluation Frameworks
Automated Evaluation Workflow
Key Metrics to Track
To help narrow this down, I can provide a Python code template using one of these tools. Let me know:
No sources cited
For your goal—automatically comparing embedding models against your own domain data—I’d use MTEB as the evaluation framework, with a custom retrieval benchmark layered on top.
docs.mteb.org is currently the strongest general-purpose choice. It supports many task types, including retrieval, classification, clustering, semantic similarity, and reranking, and importantly, it supports custom tasks/datasets.
1. Use MTEB for standardized baseline evaluation
Run every candidate model through a small set of relevant public benchmarks. This gives you a sanity check and makes results comparable to published models.
MTEB supports selecting individual tasks rather than running the entire suite, so you can build a focused benchmark.
2. Make your domain-specific retrieval dataset the primary score
For an actual production/RAG use case, this matters much more than a generic MTEB score.
Create something like:
query_id | query | relevant_document_ids
---------|-------|----------------------
q001 | "..." | [doc17, doc42]
q002 | "..." | [doc03]
q003 | "..." | [doc91, doc105]
Then evaluate every embedding model on the exact corpus and queries your application cares about.
MTEB supports custom tasks, while Sentence Transformers' InformationRetrievalEvaluator directly supports queries, corpus documents, and relevance judgments and reports metrics such as MRR, Recall@k, NDCG@k, MAP, and Precision@k.
3. Track more than retrieval quality
I'd make your automated benchmark report:
| Category | Metrics |
|---|---|
| Retrieval | Recall@1/5/10/20, NDCG@10, MRR@10 |
| Quality | domain-specific task score |
| Latency | ms/query |
| Throughput | documents/sec |
| Cost | $ per 1M documents/queries |
| Size | embedding dimensions / model size |
| Robustness | performance by query/document type |
This lets you discover cases where, for example, Model A has 2% better Recall@10 but costs 5× as much as Model B.
I'd build a small evaluation harness around MTEB:
┌─────────────────┐
│ Candidate models│
└────────┬────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Model A Model B Model C
│ │ │
└──────────────┼──────────────┘
▼
┌──────────────────┐
│ Domain benchmark │
└────────┬─────────┘
▼
┌─────────────────────────┐
│ Recall / NDCG / MRR │
│ latency / cost / size │
└────────────┬────────────┘
▼
leaderboard.json
│
▼
CI / dashboard
That gives you a repeatable model-selection pipeline rather than a one-off benchmark.
A high MTEB score doesn't necessarily mean an embedding model is best for your domain. MTEB itself spans many different tasks and domains.
For example, if you're embedding:
the distinctions that matter to your users may barely be represented in generic benchmarks.
Your domain benchmark should therefore be the gatekeeper, with MTEB serving as a useful secondary signal.
Make sure your benchmark reproduces the way you'll actually use the models. In particular, test:
MTEB/Sentence Transformers explicitly support model prompts for retrieval, which is important for models such as E5-style encoders.
Bottom line: I'd choose MTEB + a custom MTEB-compatible domain retrieval task + a small cost/latency harness. That gives you the standardized ecosystem of MTEB while making your own domain performance the metric that ultimately decides which model wins.
If you're evaluating models specifically for RAG, I can also lay out a concrete benchmark design—including how many queries you need, how to generate hard negatives, which metrics to use, and a Python implementation that automatically benchmarks 10–20 embedding models.
Bottom line: I'd choose MTEB + a custom MTEB-compatible domain retrieval task + a small cost/latency harness. That gives you the standardized ecosystem of MTEB while making your own domain performance the metric that ultimately decides which model wins.
query_id | query | relevant_document_ids
---------|-------|----------------------
q001 | "..." | [doc17, doc42]
q002 | "..." | [doc03]
q003 | "..." | [doc91, doc105]
Then evaluate every embedding model on the exact corpus and queries your application cares about.
MTEB supports custom tasks, while Sentence Transformers' InformationRetrievalEvaluator directly supports queries, corpus documents, and relevance judgments and reports metrics such as MRR, Recall@k, NDCG@k, MAP, and Precision@k.
3. Track more than retrieval quality
I'd make your automated benchmark report:
| Category | Metrics |
|---|---|
| Retrieval | Recall@1/5/10/20, NDCG@10, MRR@10 |
| Quality | domain-specific task score |
| Latency | ms/query |
| Throughput | documents/sec |
| Cost | $ per 1M documents/queries |
| Size | embedding dimensions / model size |
| Robustness | performance by query/document type |
This lets you discover cases where, for example, Model A has 2% better Recall@10 but costs 5× as much as Model B.
I'd build a small evaluation harness around MTEB:
┌─────────────────┐
│ Candidate models│
└────────┬────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Model A Model B Model C
│ │ │
└──────────────┼──────────────┘
▼
┌──────────────────┐
│ Domain benchmark │
└────────┬─────────┘
▼
┌─────────────────────────┐
│ Recall / NDCG / MRR │
│ latency / cost / size │
└────────────┬────────────┘
▼
leaderboard.json
│
▼
CI / dashboard
That gives you a repeatable model-selection pipeline rather than a one-off benchmark.
A high MTEB score doesn't necessarily mean an embedding model is best for your domain. MTEB itself spans many different tasks and domains.
For example, if you're embedding:
the distinctions that matter to your users may barely be represented in generic benchmarks.
When it comes to automatically evaluating embedding models for a specific domain , the industry standard depends on whether you want to plug into a massive public benchmark ecosystem or build a localized "golden dataset" pipeline tailored directly to your data.
The top frameworks categorized by their strengths are outlined below:
scikit-learn / qdrant-client / langchain — Best for raw speed and exact metric tuning. Many engineering teams bypass heavy frameworks for pure embedding evaluation. They chunk their proprietary text, embed it via Model A vs. Model B, load it into a lightweight vector store (or compute cosine/dot-product similarity matrices locally), and measure standard retrieval metrics like Hit Rate@K and MRR (Mean Reciprocal Rank) against a curated set of 50–200 real user queries.Recommended Approach for a Specific Domain
Public leaderboards (like MTEB) tell you how a model performs generally, but they rarely reflect niche vocabulary (e.g., legal jargon, proprietary internal APIs, or specialized medical sub-fields). The most robust workflow is:
text-embedding-3-large , Cohere Embed, and a domain-tuned open-source model like BGE-M3 or Jina v3).If you'd like to narrow this down, tell me:
I can help outline a step-by-step evaluation script or recommend the top 3 candidate models to test first for your use case.
When evaluating embedding models for a domain-specific use case (like legal, medical, technical, or financial data), public leaderboards like the MTEB (Massive Text Embedding Benchmark) Leaderboard are great for a high-level shortlist, but they often fail to reflect your unique corpus, jargon, and query distribution.
The best approach is to build a custom domain evaluation pipeline . Rather than using a rigid, single-purpose framework, the industry standard relies on combining data curation tools with evaluation frameworks designed for retrieval pipelines.
The Leading Frameworks & Tools
Recommended 4-Step Blueprint for Domain Evaluation
To run an automated, rigorous evaluation for your domain, follow this workflow:
To help tailor this, tell me:
I can share a sample Python evaluation snippet using the most appropriate framework for your stack.
For your goal—automatically comparing embedding models on your own domain data—I’d use MTEB as the evaluation engine, with a custom domain-specific benchmark layered on top.
MTEB documentation is currently the strongest fit because it is specifically designed to evaluate embedding models, supports retrieval/classification/clustering and other task types, and lets you define custom tasks.
1. MTEB — core benchmark runner
Use MTEB to run every candidate model against a standardized interface:
model Amodel Bmodel CThen evaluate them on your own datasets, not just public benchmarks. MTEB explicitly supports custom tasks and local benchmarks.
2. Build a domain-specific retrieval dataset
For your domain, this is the most important part.
Create examples like:
query: "How do I terminate an enterprise agreement?"
relevant: [doc_184, doc_921]
irrelevant: [doc_12, doc_55, ...]
query: "What are the capital requirements for X?"
relevant: [doc_331]
Ideally, have several hundred to several thousand queries with human-verified relevant documents.
Then measure:
For a RAG/search application, I'd make Recall@10 and nDCG@10 the primary metrics.
3. Add your real-world constraints
Don't optimize solely for retrieval quality. Record:
| Metric | Why |
|---|---|
| nDCG@10 | Overall ranking quality |
| Recall@10 | Missed relevant documents |
| MRR@10 | How quickly the right result appears |
| Embedding latency | Production performance |
| Throughput | Scaling cost |
| Vector dimensions | Storage/index cost |
| Memory footprint | Deployment cost |
| Cost / 1M tokens | API economics |
This can reveal that a model scoring 1% better isn't actually worth deploying because it's 4× more expensive or 3× slower.
I wouldn't use RAGAS as the primary embedding-model benchmark.
RAGAS is much better suited to evaluating the whole RAG pipeline—retrieval + context + generated answer. Its metrics include things such as faithfulness, answer relevance, context precision and context recall.
So I'd structure the system:
┌─────────────────────┐
│ Candidate Embeddings│
└──────────┬──────────┘
│
┌─────────────▼─────────────┐
│ MTEB Custom Tasks │
│ │
│ Recall@K / nDCG / MRR │
└─────────────┬─────────────┘
│
domain leaderboard
│
┌─────────────▼─────────────┐
│ Production RAG Eval │
│ RAGAS │
│ │
│ retrieval + generation │
└───────────────────────────┘
Don't ask "which embedding model has the highest MTEB score?"
Ask:
Which model produces the best retrieval results on our actual queries, documents, relevance judgments, languages, and production constraints?
Public MTEB scores are useful for initial model filtering. Your custom MTEB task should determine the final winner.
MTEB even provides a CLI for repeatedly running models/tasks and caching results, which makes it practical to put this into CI or a scheduled evaluation pipeline.
If I were building this for a team today, my default choice would be: MTEB + a custom domain retrieval dataset + Recall/nDCG/MRR + latency/cost tracking, with RAGAS added later for end-to-end RAG evaluation.
If you tell me what your domain is and whether the embeddings are primarily for RAG, semantic search, recommendations, clustering, or classification, I can suggest the exact benchmark/dataset schema and evaluation pipeline I'd use.
When evaluating embedding models for a specific domain , there is no single out-of-the-box framework that magically tests domain performance without your own data. Public leaderboards like the MTEB (Massive Text Embedding Benchmark) Leaderboard are exceptional for creating an initial shortlist (e.g., filtering for top retrieval or multilingual tasks), but they often overfit or fail to reflect domain-specific vocabulary (like legal, biomedical, or niche engineering jargon).
The industry standard approach for automated, domain-specific evaluation is to build a lightweight evaluation harness using a "Golden Dataset" paired with established evaluation libraries.
Phase 1: Establish Your Shortlist via Public Benchmarks
Before writing custom evaluation code, use the community standard to pick 3 to 5 candidate models to test against your data:
text-embedding-3-small / large), Voyage AI (specialized in technical/domain docs), or Google Vertex/Gemini Embeddings.Phase 2: The Best Frameworks & Tools for Automated Evaluation
sentence-transformers (For Custom Dataset Runs)
Ragas or TruLens / Openlayer)
scikit-learn / numpy
sentence-transformers or respective provider SDKs.Phase 3: Core Metrics to Automate in Your Script
When running your automated evaluation pipeline, log and compare these dimensions per model:
To help tailor a specific evaluation script or framework suggestion, tell me:
For your goal—automatically comparing embedding models on your own domain—I’d use MTEB as the evaluation backbone, with a custom domain-specific retrieval benchmark layered on top.
MTEB documentation is currently the strongest general-purpose framework for this. It supports many task types, custom tasks, caching, CLI execution, and even running a local leaderboard.
1. MTEB for broad sanity checking
Run candidate models against relevant existing tasks:
MTEB explicitly organizes evaluations around retrieval, classification, clustering, semantic similarity, and pair classification.
2. Your own domain benchmark should be the primary score
This is the important part. A model that ranks highly on MTEB isn't necessarily best for your documents and queries.
Create a dataset roughly like:
query_id | query | relevant_doc_ids
---------|-------------------------------|------------------
q001 | "how do I terminate contract?" | [d183, d921]
q002 | "API timeout configuration" | [d044]
q003 | "..." | [d102, d155, d812]
Then automatically evaluate every candidate model against the same corpus and queries.
I'd make nDCG@10 your primary metric, with Recall@5/10/20 and MRR as secondary metrics. Sentence Transformers' InformationRetrievalEvaluator already supports these metrics and the query/corpus/relevant-document structure.
3. Track production characteristics too
Don't optimize purely for retrieval quality. Record:
| Dimension | What to measure |
|---|---|
| Retrieval | nDCG@10, Recall@10, MRR@10 |
| Latency | p50/p95 embedding latency |
| Throughput | documents/sec, queries/sec |
| Cost | $ per million tokens |
| Memory | model + index footprint |
| Vector size | dimensions |
| Robustness | performance by query/document category |
Then define a weighted score such as:
0.60 × domain_nDCG + 0.15 × recall + 0.10 × latency + 0.10 × cost + 0.05 × robustness
The exact weights should reflect your application.
Candidate models
/ | \
model A model B model C
\ | /
Embedding runner
|
+----------+----------+
| |
Public benchmarks Your benchmark
MTEB domain queries
| |
+----------+----------+
|
Metrics + costs
|
Results database
|
Local leaderboard
MTEB + Sentence Transformers makes this relatively painless. MTEB can run models and tasks from the CLI and cache results, while Sentence Transformers provides the lower-level evaluators if you want custom evaluation logic.
One particularly useful feature is that MTEB supports custom tasks, so you don't necessarily need to build a completely separate evaluation framework.
Don't create a benchmark consisting only of randomly generated query/document pairs or LLM-generated "similarity" labels. For a domain-specific system, real production queries + judged relevance are much more valuable.
If you have historical search/RAG data, I'd start with perhaps 500–2,000 representative queries, stratified across your important use cases, and have humans judge the top candidates. Keep a locked test set that never gets used for model selection.
Bottom line:
MTEB for the framework + your own judged retrieval dataset for the actual model-selection criterion + a small cost/latency dashboard. That's a better setup than relying on an embedding leaderboard alone.
If you're choosing between MTEB, BEIR, Ragas, DeepEval, and custom evaluation, I can also give you a direct comparison and recommend one based on whether your embeddings are for RAG, semantic search, clustering, recommendations, or classification.
For your goal—automatically comparing embedding models on your own domain data—I'd use MTEB as the evaluation framework, with a custom domain-specific retrieval benchmark layered on top.
MTEB documentation is probably the best foundation today. It supports custom models and custom tasks, has standardized evaluation/caching, and covers retrieval, classification, clustering, semantic similarity, and pair classification.
1. MTEB for the framework
2. Your own domain benchmark for the actual decision
For a RAG/search use case, create something like:
queries/
q001: "How do I terminate a contract?"
q002: "What are the retention requirements?"
corpus/
d001: ...
d002: ...
relevance/
q001 -> [d017, d043]
q002 -> [d102]
Then evaluate every candidate model on:
| Metric | Why |
|---|---|
| Recall@5 / @10 / @20 | Does it retrieve the right material? |
| NDCG@10 | How good is the ordering? |
| MRR@10 | How quickly does the first relevant result appear? |
| Precision@k | How much irrelevant material gets retrieved? |
| p50/p95 latency | Production responsiveness |
| Throughput | Indexing cost |
| Embedding dimensions | Vector DB/storage cost |
| Cost / 1M tokens | Operating cost |
I'd make NDCG@10 or Recall@10 your primary quality metric, depending on whether ranking quality or "don't miss relevant documents" matters more.
Sentence Transformers already provides an InformationRetrievalEvaluator that accepts exactly this sort of query/corpus/relevance structure, so it's another excellent low-level evaluation component.
For a domain-specific application, your own benchmark should dominate the model-selection decision.
There's evidence for this: research on finance-specific embeddings found that performance on general MTEB was not correlated with performance on the domain-specific FinMTEB benchmark.
So I'd structure the pipeline as:
Candidate embedding models
│
┌─────────────┴─────────────┐
│ │
General MTEB Your domain
evaluation benchmark
│ │
└─────────────┬─────────────┘
│
Quality metrics
│
+ latency / cost
│
▼
Model scorecard
│
▼
Best model(s)
MTEB + Sentence Transformers + your own evaluation dataset
MTEB handles the benchmarking infrastructure; Sentence Transformers gives you convenient evaluators; your domain dataset provides the signal that actually matters.
I'd also keep multiple evaluation slices rather than one aggregate number—for example, short vs. long queries, terminology-heavy queries, ambiguous queries, and different document types. That prevents a model from winning the average while being terrible on an important subset.
If I were implementing this from scratch, I'd choose MTEB as the framework and build a small automated "domain eval harness" around it. That gives you a repeatable command like:
python evaluate_embeddings.py \
--models models.yaml \
--dataset domain_eval \
--metrics recall@10,ndcg@10,mrr@10 \
--benchmark-mteb
and produces a leaderboard containing quality × latency × cost, rather than just an embedding benchmark score.
When evaluating embedding models for a specific domain, public leaderboards like MTEB (Massive Text Embedding Benchmark) are a helpful starting point, but they routinely fail to predict production performance on specialized corporate or technical data.
The best framework for evaluating models against your own domain data depends on whether you want a standardized, data-driven benchmarking library or an end-to-end RAG/retrieval evaluation pipeline.
InformationRetrievalEvaluator or EmbeddingSimilarityEvaluator to output custom metrics locally across multiple candidate models.Recommended 4-Step Evaluation Blueprint
To successfully execute your evaluation without overcomplicating the setup, follow this workflow:
If you'd like to dive deeper, let me know:
I can share a tailored shortlist of models and a quick Python snippet to kick off your benchmarking.