<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abdesslem Amri</title>
    <description>The latest articles on DEV Community by Abdesslem Amri (@abdesslem_amri_98f400c75b).</description>
    <link>https://dev.to/abdesslem_amri_98f400c75b</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4174256%2F21b1f78e-e2d1-4799-9ed9-679aeec20e0d.jpg</url>
      <title>DEV Community: Abdesslem Amri</title>
      <link>https://dev.to/abdesslem_amri_98f400c75b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abdesslem_amri_98f400c75b"/>
    <language>en</language>
    <item>
      <title>RAG evaluation metrics explained</title>
      <dc:creator>Abdesslem Amri</dc:creator>
      <pubDate>Tue, 13 Oct 2026 19:51:57 +0000</pubDate>
      <link>https://dev.to/abdesslem_amri_98f400c75b/rag-evaluation-metrics-explained-1fhi</link>
      <guid>https://dev.to/abdesslem_amri_98f400c75b/rag-evaluation-metrics-explained-1fhi</guid>
      <description>&lt;p&gt;&lt;em&gt;TL;DR: RAG metrics fall into three categories. Retrieval metrics (hit rate, recall@k, MRR, nDCG) tell you whether the system retrieves the right chunks. Generation metrics (faithfulness, answer relevancy, correctness) tell you whether the LLM used them well. Operational metrics (cost, latency, storage) tell you if you can afford to run it. This guide explains each metric with an example and tells you which ones to focus on for your setup.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There’s no shortage of RAG metrics. Libraries expose dozens of them, and dashboards show them all with the same font size. In practice, a handful do most of the work, and knowing which question each one answers matters more than tracking all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retrieval metrics
&lt;/h2&gt;

&lt;p&gt;Retrieval metrics compare the chunks your retriever returns with the chunks that are known to contain the answer, listed in a golden dataset. Everything is computed on the top k results per question, then averaged over all questions.&lt;/p&gt;

&lt;p&gt;To understand these metrics we will take a concrete example. Supposing that we have a golden dataset with the following question and expected chunks:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn70peifl9fbwlvig8lhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn70peifl9fbwlvig8lhh.png" alt="Golden dataset example" width="799" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We configured our retriever to return the top 5 chunks for each question. The retriever returned these chunks for our question:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feg9o4ulu6t2frz4kypq9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feg9o4ulu6t2frz4kypq9.png" alt="Retrieved top 5 chunks by the retriever" width="799" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s now calculate the metrics based on our example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hit rate@k: did we find anything useful ?
&lt;/h3&gt;

&lt;p&gt;For this metric we set the value to 1 if at least one expected chunk is in the top k, else 0. Averaged over questions, it’s the share of questions where the LLM gets at least some of the information it needs.&lt;/p&gt;

&lt;p&gt;Here we have #14 in the top 5, so hit rate = 1.&lt;/p&gt;

&lt;p&gt;It’s the easiest metric to explain. But it ignores ranking and completeness.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recall@k: how much of the answer did we find ?
&lt;/h3&gt;

&lt;p&gt;Expected chunks retrieved divided by total expected chunks.&lt;/p&gt;

&lt;p&gt;Here we have 1 of 2 expected chunks, so recall@5 = 1 / 2 = 0.5.&lt;/p&gt;

&lt;p&gt;Recall@k matters when answers are spread across several chunks. Missing some chunks means the LLM works with half the facts, and that’s how you get incomplete answers.&lt;/p&gt;

&lt;p&gt;Precision@k: how much of what we retrieved is useful?&lt;br&gt;
Expected chunks retrieved divided by k.&lt;/p&gt;

&lt;p&gt;In our example: 1 / 5, so precision@5 = 0.2.&lt;/p&gt;

&lt;p&gt;Be careful with this metric. With a single expected chunk and k = 5, the best possible precision is 20%. It’s useful for comparing two setups, not as an absolute grade. It matters more when context is expensive or when irrelevant chunks visibly confuse your LLM.&lt;/p&gt;

&lt;h3&gt;
  
  
  MRR: how high is the first right chunk?
&lt;/h3&gt;

&lt;p&gt;Mean Reciprocal Rank: 1 divided by the rank of the first expected chunk, 0 if none is found.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzsovvom5hjmpxd4igrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffzsovvom5hjmpxd4igrb.png" alt="Illustration about MRR metric" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In our example: the first expected chunk is at rank 2, so MRR = 1/2 = 0.5.&lt;/p&gt;

&lt;p&gt;This is the metric I look at first. LLMs pay more attention to the first passages they’re given, and many systems only use the top 1 to 3 chunks. Two models with the same hit rate aren’t equal if one puts the answer first and the other puts it fifth.&lt;/p&gt;

&lt;h3&gt;
  
  
  nDCG@k: how good is the whole ranking?
&lt;/h3&gt;

&lt;p&gt;Normalized Discounted Cumulative Gain gives credit for every expected chunk found, with less credit the lower it’s ranked (the discount is logarithmic), and divides by the score of a perfect ranking. It ranges from 0 to 1.&lt;/p&gt;

&lt;p&gt;In our example: one of two expected chunks at rank 2. Assuming binary relevance, DCG = 1/log₂(3) ≈ 0.63. The ideal ranking puts both at ranks 1 and 2: ideal DCG = 1 + 0.63 = 1.63. nDCG@5 ≈ 0.39.&lt;/p&gt;

&lt;p&gt;nDCG@k try to answer both questions: “did we find all the chunks we needed” and “were they ranked high” in one number. It’s the standard metric for retrieval benchmarks (MTEB’s retrieval tasks report nDCG@10), and a good single number to report when answers often span several chunks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagnostic retrieval metrics
&lt;/h2&gt;

&lt;p&gt;Along with these core metrics, some patterns could be calculated to understand the retrieval performance better. These three patterns help you understand why a setup scores the way it does:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hit rate by cut-off&lt;/strong&gt; (hit rate@1, @2 … @k). A curve that starts low and climbs means the model finds the right area but doesn’t put the best chunk first: a reranker or a larger top k often helps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rank of the first relevant chunk&lt;/strong&gt;, as a distribution. It separates near misses (rank 4 or 5 for top 5) from complete failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Score gap:&lt;/strong&gt; the similarity of the best expected chunk minus the similarity of the best wrong chunk (the top distractor). A large &lt;br&gt;
positive gap means stable rankings. A gap near zero means the right chunk and look alikes are almost tied, so small rewordings flip the result. Near-duplicate documents and boilerplate-heavy chunks are the usual causes.&lt;/p&gt;

&lt;p&gt;Let’s now move to the next step: generation metrics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Generation metrics
&lt;/h2&gt;

&lt;p&gt;Once retrieval is solid, you evaluate the answer itself. These metrics are usually computed with an LLM as judge, using libraries such as Ragas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Faithfulness (groundedness):&lt;/strong&gt; are the answer’s claims supported by the retrieved context&lt;br&gt;
&lt;strong&gt;Answer relevancy:&lt;/strong&gt; does the answer address the question that was asked?&lt;br&gt;
&lt;strong&gt;Answer correctness:&lt;/strong&gt; does the answer match a reference answer?&lt;br&gt;
&lt;strong&gt;Context precision and context recall (LLM-judged):&lt;/strong&gt; retrieval-style metrics where a judge decides relevance instead of known chunk IDs.&lt;/p&gt;

&lt;p&gt;A judge model has its own errors and biases, so scores can shift when you change the judge or its prompt. And a low faithfulness score doesn’t tell you whether the LLM ignored good context or never received it. Retrieval metrics on known chunk IDs answer that question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operational metrics
&lt;/h2&gt;

&lt;p&gt;Quality is half the decision. For each retrieval setup, we could measure operational metrics such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Index cost:&lt;/strong&gt; embedding the whole corpus once, and again each time you re-index or change models.&lt;br&gt;
&lt;strong&gt;Cost per 1,000 queries:&lt;/strong&gt; embedding user questions at your traffic.&lt;br&gt;
&lt;strong&gt;Query latency:&lt;/strong&gt; turning a question into a vector, plus the vector search (p50 and p95).&lt;br&gt;
&lt;strong&gt;Vector storage:&lt;/strong&gt; chunks × dimensions × 4 bytes for float32 vectors. A 3,072-dimension model needs twice the storage of a 1,536-dimension one.&lt;/p&gt;

&lt;p&gt;Embedding is usually a small part of a RAG system’s cost compared with the LLM, but it matters at scale: large corpora, frequent re-indexing and high query volume.&lt;/p&gt;

&lt;h2&gt;
  
  
  The metrics in Truvec
&lt;/h2&gt;

&lt;p&gt;Truvec focuses on the retrieval and operational layers. It grades embedding models and chunking strategies on your own documents, using a golden dataset you review and lock, so scores are deterministic and comparable over time. It doesn’t grade generated answers.&lt;/p&gt;

&lt;p&gt;For every evaluation and every model in a comparison, Truvec reports:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quality, at your top k (1 to 50, default 5)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hit rate&lt;/li&gt;
&lt;li&gt;Recall@k&lt;/li&gt;
&lt;li&gt;Precision@k&lt;/li&gt;
&lt;li&gt;MRR&lt;/li&gt;
&lt;li&gt;nDCG@k&lt;/li&gt;
&lt;li&gt;F1@k&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Diagnostics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hit rate by cut-off, from 1 to k, as a curve&lt;br&gt;
Rank of the first relevant chunk, as a distribution, including misses&lt;br&gt;
Score gap, mean relevant score and top distractor score&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost, speed and storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Index cost and cost per 1,000 queries, from the tokens actually billed and each model’s list price per million tokens&lt;br&gt;
Billed by the current run&lt;br&gt;
Query embedding latency, and vector search p50 / p95&lt;br&gt;
Vector storage and dimensions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Retrieval Inspector shows each question’s retrieved chunks in rank order, marked Ground truth or Distractor, with their similarity scores, plus the Expected but not retrieved chunks. Filter on Misses to see what each model misses. In a comparison, models are ranked by MRR, then recall, and the PDF report adds a head-to-head analysis and a matrix with the rank of the first relevant chunk for every question and every model.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
    </item>
    <item>
      <title>Ragas vs Truvec for RAG Retrieval Evaluation</title>
      <dc:creator>Abdesslem Amri</dc:creator>
      <pubDate>Mon, 12 Oct 2026 12:30:00 +0000</pubDate>
      <link>https://dev.to/abdesslem_amri_98f400c75b/ragas-vs-truvec-for-rag-retrieval-evaluation-o2i</link>
      <guid>https://dev.to/abdesslem_amri_98f400c75b/ragas-vs-truvec-for-rag-retrieval-evaluation-o2i</guid>
      <description>&lt;p&gt;I have built and debugged many RAG systems, and the most common failure I saw was not because of bad prompts or weak LLM models. Most failures were due to the right passage that was never retrieved or retrieved at the wrong rank. This post starts with a short guide on how retrieval evaluation works, then compares Ragas and Truvec and explains where each one fits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1: A short guide on RAG retrieval evaluation
&lt;/h2&gt;

&lt;p&gt;A retrieval augmented generation (RAG) system answers questions in two steps, retrieval finds the passages (chunks) of your documents that are relevant to the question and generation gives those chunks to an LLM to write the answer.&lt;/p&gt;

&lt;p&gt;The retrieval step has many moving parts such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chunking:&lt;/strong&gt; How documents are split into passages (size, overlap, by paragraph, by Markdown header, by function…).&lt;br&gt;
&lt;strong&gt;The embedding model:&lt;/strong&gt; Turns each chunk and each question into a vector.&lt;br&gt;
&lt;strong&gt;The retrieval algorithm:&lt;/strong&gt; How the closest chunks are found for example cosine similarity&lt;br&gt;
&lt;strong&gt;Vector storage:&lt;/strong&gt; How the vectors are stored (Qdrant, Weaviate, PGVector…).&lt;br&gt;
&lt;strong&gt;The reranker:&lt;/strong&gt; How the closest retrieved chunks are reordered&lt;br&gt;
&lt;strong&gt;Top k:&lt;/strong&gt; How many of the chunks to pass to the LLM.&lt;/p&gt;

&lt;p&gt;If the chunk with the answer is at rank 9 and you send the top 5, the LLM will not be able to answer the question correctly. because the generation step only works with what retrieval hands it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What a retrieval evaluation needs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To evaluate a retrieval process, you need three things. The documents or corpus, your system will search, chunked the way production chunks them. A golden dataset, test questions linked to the chunks that contain the answer (the ground truth) and the metrics to score where the expected chunks landed in each result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core retrieval metrics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To explain these metrics, let’s take a concrete example: Supposing you have a pdf about your company’s internal processes and you want to evaluate how you can find the relevant chunks for a given question. You already chunked the pdf into 50 chunks and stored them in a vector database and created a golden dataset with questions and their expected chunks.&lt;/p&gt;

&lt;p&gt;Take a question whose answer lives in chunks #14 and #15. The retriever configured with top_k=5, returned in order these chunks #22, #14, #8, #41, #3. This means that the first expected chunk #14 is at rank 2. The table below calculates some of the core retrieval metrics for this example:&lt;/p&gt;

&lt;p&gt;These are deterministic retrieval metrics, the same chunks, questions and model always give the same score.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ground truth or LLM-as-judge (or JEV-as-judge)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are two broad ways to decide whether retrieved chunks are relevant:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Reference-based or ground truth IDs&lt;/em&gt;:&lt;/strong&gt; you know in advance which chunks answer each question. Scoring is exact and cheap, and you can compare models with confidence. The cost is building the golden dataset.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;LLM-as-judge:&lt;/em&gt;&lt;/strong&gt; an LLM reads the question, the retrieved chunks and the reference answer, and decides what’s relevant. It needs less setup and works on any pipeline, but every score depends on a judge model, its prompt and its own mistakes, and each run costs LLM calls.&lt;/p&gt;

&lt;p&gt;Ragas leans on the second approach. Truvec uses the first one. That difference explains most of what follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2: Evaluation with Ragas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/vibrantlabsai/ragas" rel="noopener noreferrer"&gt;Ragas&lt;/a&gt; is an open-source Python library for evaluating LLM applications, and it’s one of the most widely used tools for RAG evaluation. Using Ragas you can compute metrics such as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context precision and context recall:&lt;/strong&gt; how relevant the retrieved contexts are, and how much of the reference they cover.&lt;/p&gt;

&lt;p&gt;**Faithfulness: **whether the answer’s claims are supported by the retrieved contexts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response relevancy:&lt;/strong&gt; whether the answer addresses the question.&lt;br&gt;
Other metrics, such as noise sensitivity and context entity recall.&lt;/p&gt;

&lt;p&gt;Most of these metrics use an LLM as judge. Recent versions also include non-LLM and ID based variants of context precision and recall when you supply reference contexts. Ragas can also generate synthetic test sets from your documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where you can use Ragas:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use Ragas to evaluate a pipeline you already built, end to end, including rerankers, hybrid search and query rewriting. and calculate metrics like faithfulness, hallucinations, relevance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it asks of you:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Ragas you should build and run the pipeline for every configuration you want to test. Comparing five embedding models means indexing your corpus five times, with five provider accounts and API keys. The LLM-judged evaluations depends on the judge model and cost tokens on each run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: Evaluation with Truvec
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://truvec.dev" rel="noopener noreferrer"&gt;Truvec&lt;/a&gt; is a hosted platform that evaluates the retrieval step on your own documents. You upload a sample of documents (Truvec chunks them based on your preferences) or chunks that you already have, and the platform builds a golden dataset for you, runs selected embedding models against it and scores where the expected chunks land.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where you can use Truvec:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side-by-side model comparison.&lt;/strong&gt; Pick two or more models and run one comparison. Truvec supports multiple embedding models from OpenAI, Cohere, Voyage AI, Google, and open-source models (BGE, Nomic, mxbai, GTE, Qwen3 Embedding). You don't need any provider API key: Truvec runs the models on its own accounts and your plan includes the usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculate rank-based metrics:&lt;/strong&gt; hit rate, recall, precision, MRR, nDCG and F1 at your top k, plus diagnostics: hit rate at every cut-off, rank of the first relevant chunk, and the score gap between the right chunk and the best distractor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculate cost,&lt;/strong&gt; speed and storage: index cost, cost per 1,000 queries, query embedding latency, vector search p50/p95 and vector storage for each model, computed from real token counts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Retrieval Inspector:&lt;/strong&gt; For every question, see the ranked chunks, marked Ground truth or Distractor, and the Expected but not retrieved chunks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Playground&lt;/strong&gt; to run any question against any supported model, with no API setup.&lt;br&gt;
&lt;strong&gt;PDF reports&lt;/strong&gt; with a recommendation, a leaderboard, a head-to-head analysis between models and a question-by-question matrix, for the decision record.&lt;/p&gt;

&lt;p&gt;Truvec does not evaluate the answer your LLM writes, nor does it run your own pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Truvec when:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You’re choosing an embedding model for a new project and want evidence on your own documents, not a leaderboard rank.&lt;br&gt;
You’re considering a migration to a new embedding model and need to know if it’s better enough to justify re-indexing everything.&lt;/p&gt;

&lt;p&gt;Your answers are often wrong or vague and you suspect retrieval. The Misses filter usually tells you in ten minutes whether the problem is the model, the chunking, PDF extraction or the test questions.&lt;/p&gt;

&lt;p&gt;You want to test a different chunking setup quickly without rebuilding your pipeline. You need a report a non-specialist can read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Ragas when:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Retrieval is solid and you need to grade the generated answers: faithfulness, hallucinations, relevance.&lt;br&gt;
You want to score the exact pipeline you run, including rerankers and query rewriting, inside your codebase.&lt;br&gt;
Use both when you’re building a serious RAG product.&lt;/p&gt;

&lt;p&gt;A workflow that works well:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prototype retrieval in Truvec:&lt;/strong&gt; pick the embedding model and chunking with a golden dataset and a comparison.&lt;br&gt;
Build the pipeline with the winning setup.&lt;br&gt;
Evaluate end to end with Ragas, focusing on the generation metrics.&lt;br&gt;
When a new embedding model comes out or your corpus changes, go back to Truvec and re-run the comparison with your current model as the baseline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why isolating retrieval matters
&lt;/h2&gt;

&lt;p&gt;When a RAG pipeline quality drops, you don’t know whether the retriever, the prompt or the LLM is to blame. Isolating retrieval metrics like hit rate@5 helps you identify the issue.&lt;/p&gt;

&lt;p&gt;It also makes decisions cheaper. Comparing six embedding models with an LLM judge means six indexing pipelines and thousands of judge calls. Comparing them on a locked golden dataset is deterministic.&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://truvec.dev" rel="noopener noreferrer"&gt;https://truvec.dev&lt;/a&gt; on October 9, 2026.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>rag</category>
    </item>
  </channel>
</rss>
