AI Engineer World's Fair 2024
Navigating RAG Optimization with an Evaluation-Driven Compass
Read the talk
Navigating RAG Optimization with an Evaluation-Driven Compass
A documentation question-answering system improves through ten experiments that separate missing evidence from noisy context, then use reranking and hybrid search to address distinct failures.
From a talk by Atita Arora and Deanna Emery
Before you start: Familiarity with embeddings, vector search, and language-model prompts will help you follow the experiments.
Start with the simplest retrieval pipeline
Split documents into chunks, embed those chunks, and store their vectors. When a user asks a question, retrieve the relevant chunks and add them to a prompt for a language model. This is the starting point for retrieval-augmented generation, or RAG: the model answers with information drawn from an external knowledge source. The implementation is straightforward to describe, but each step introduces a choice that can change the answer.
More advanced pipelines add query expansion or rewriting before retrieval, then reranking or fusion afterward. Agentic versions can route questions to task-specific agents and incorporate optimization systems such as DSPy. These additions create more opportunities to improve results—and more components whose contribution needs to be measured.
The architectures Atita Arora presents share a vector database. For knowledge management, that layer must support relevant retrieval, large document collections, and efficient resource use. The demonstration uses Qdrant, an open-source vector search database written in Rust.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
An incorrect answer can begin upstream
Before changing the model, trace the evidence through the pipeline. Information might be absent from the source collection or lost during extraction. Either gap can produce an incomplete answer even when retrieval and generation behave as intended. During ingestion, chunk boundaries determine which facts remain together, while the embedding model determines how well the system represents the terminology in those chunks.
Retrieval adds three closely related decisions: which documents are relevant, how many to retrieve, and in what order to present them. Generation can inherit the resulting omissions or distractions, then introduce another failure by straying from the supplied context. A fluent answer therefore does not tell you which stage succeeded.
The query itself can also be vague or ambiguous. Beyond an individual answer, an application must maintain coherent conversations, handle hundreds or thousands of concurrent users, and meet security and compliance requirements. These are separate concerns from whether one retrieved passage contains the right fact, but they remain part of productionizing RAG.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Improve what enters the context
The first interventions follow the path of the data.
- Extraction and cleaning: Recover information that was missed and remove defects before indexing it.
- Embedding choice: Start with a general-purpose model, then test whether a model that understands the domain's terminology improves retrieval.
- Metadata: Attach useful document attributes and filter on them to exclude irrelevant material.
- Chunking: Test smaller chunks or semantic boundaries instead of assuming the initial split is appropriate.
These changes affect what evidence is available and how precisely it can be retrieved.
Context size requires its own experiment. Lost in the Middle motivates examining where useful evidence appears within a long context; simply supplying more text need not make that evidence easier for the model to use. Arora also points to HNSW, BM25, and graph-based retrieval approaches as options to explore. Once candidates have been retrieved, reranking can prioritize the documents that deserve space in the final context.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Choose changes with evidence
Generation offers additional levers, including prompt design and chain-of-thought prompting. Retrieval can combine dense vectors for semantic matching with sparse vectors when exact terms matter, over one field or several. Different language models may produce different answers from the same context, while agents can handle task-specific information fetching or access to custom data.
A menu of techniques is not a sequence of required upgrades. With so many possible changes, the practical problem is deciding which failure to address next. Evaluation supplies the feedback: establish how the system behaves, make a targeted change, and measure whether it moves the application toward its goal.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Build an evaluation around the documents
Because a RAG system depends on its underlying documents, Deanna Emery starts with evaluation data tailored to the application and domain. The dataset should contain realistic inputs and expected outputs. Quotient supports running these experiments and can help generate an initial evaluation dataset when one is not already available.
The evaluation workflow connects retrieval to answer generation:
- Submit the evaluation questions to the populated Qdrant database.
- Attach the returned contexts to the evaluation examples.
- Submit those examples to Quotient, which orchestrates prompt formatting, language-model execution, and metric computation.
This makes the retrieved context part of the experiment rather than treating the final answer as the only observable result.
The companion walkthrough uses notebook outputs executed before the presentation. Its application is question answering over Qdrant's documentation, intended to help users find answers quickly. That concrete use case determines what the experiments should optimize.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Distinguish missing evidence from noisy evidence
A documentation assistant should be helpful, but inaccurate instructions can actively misguide a user. Emery therefore makes faithfulness the principal optimization metric, with the aim of minimizing hallucinations.
The metrics answer different questions in this demonstration:
| Metric | Diagnostic question |
|---|---|
| Context relevance | Does the retrieved context contain the information needed to answer? |
| Chunk relevance | How much retrieved information is useful rather than noise? |
| Faithfulness | Does the answer remain faithful to the supplied context? |
| General text quality | How does the generated text perform on the accompanying quality measures? |
The distinction between the first two is crucial. A context can contain the necessary answer while surrounding it with a large amount of irrelevant material. The experiment needs to detect both conditions. These are the speakers' working metric definitions; no numerical formula is needed to follow the subsequent diagnosis.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Separate chunk size from retrieval window
The initial configuration is deliberately simple: an embedding model, a chunking strategy, a retrieval window, and Mistral Instruct for generation. The first question is whether the model needs more context. Experiment two increases the chunking parameters to supply larger chunks.
Emery reports that larger chunks slightly improve text quality and increase context relevance, but substantially reduce faithfulness and chunk relevance. More of the necessary information is now present, yet a smaller portion of the retrieved material is useful. The additional context has not produced a more faithful answer.
That combination suggests a narrower intervention: restore the smaller chunks, but retrieve more of them. This changes the retrieval window without retaining the larger chunk size. Among the first three experiments, smaller chunks with a larger retrieval window achieve the best relevance and faithfulness scores. The useful lesson is the distinction between larger chunks and more chunks: both add context, but they change its composition differently.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Change models, then inspect individual failures
The next two experiments test a different embedding model and a different generation model. The alternative embedding model does not improve the result in this experiment. In experiment five, switching to GPT-3.5 while retaining the same RAG configuration improves all reported metrics. This establishes a stronger naive baseline before adding another retrieval stage.
The aggregate scores still conceal an uneven experience. A large variance in context relevance indicates that some questions retrieve useful evidence much less reliably than others. Emery opens the two examples with the worst hallucination performance and inspects their retrieved documents.
Those documents appear to overemphasize recurring words such as Qdrant, support, and search. They repeat terms from the questions but contain unrelated information. This is a diagnosis drawn from the retrieved text: matching familiar vocabulary is not sufficient to recover the passage that answers a particular question.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Retrieve broadly, then rerank
Expanding the retrieval window could improve the chance of finding the missing evidence, but passing every additional document to the generator would also add noise. Reranking separates those decisions: retrieve a broader candidate set, score those candidates again, and send only the top few onward. The candidate window can grow without forcing the final context to grow with it.
The selection step can be expressed directly in Python. Here, scores contains one relevance score per retrieved candidate, with larger scores indicating greater relevance; scoring happens before this function is called.
python
from collections.abc import Sequence
def select_context(
candidates: Sequence[str],
scores: Sequence[float],
final_count: int,
) -> list[str]:
if len(candidates) != len(scores):
raise ValueError("Each candidate needs one score")
if final_count < 1:
raise ValueError("final_count must be positive")
ranked = sorted(
zip(candidates, scores),
key=lambda item: item[1],
reverse=True,
)
return [text for text, _ in ranked[:final_count]]
The separate final_count makes the boundary explicit: retrieval decides which documents are eligible, while reranking decides which eligible documents reach generation.
The next three experiments compare rerankers from mixedbread, Cohere, and Jina ColBERT against the best naive configuration. Emery reports that reranking generally improves context relevance and faithfulness, with Cohere achieving the best scores on those two metrics in this comparison. The chart also displays chunk relevance and the accompanying text-quality measures: ROUGE-L, BERTScore, and BERT sentence similarity.
Returning to the same two difficult examples reveals where that improvement occurred. For the second previously failing example, reranking retrieves documents containing the answer, and context relevance and faithfulness are close to one. Looking at the documents alongside the scores connects the metric movement to a concrete change in available evidence.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Recover evidence that reranking cannot find
The first difficult example still performs poorly. Even after expanding the candidate window and reranking it, the system has not identified the relevant documents. Reranking cannot promote evidence that retrieval never supplies. Qdrant's documentation contains specialized terminology, jargon, and acronyms, making the limitations of a general-purpose embedding model a plausible next explanation.
Fine-tuning or training an embedding model could address that mismatch, but requires time and money. The next experiment instead changes how candidates are found: hybrid search combines dense vectors with sparse vectors that help capture documents sharing the query's terminology. Dense retrieval supplies semantic matches; sparse retrieval adds a route to evidence whose exact technical vocabulary matters.
Emery tests hybrid retrieval both with and without reranking. Hybrid search with Cohere reranking achieves the best reported performance across all metrics except chunk relevance. That exception preserves an important distinction: the configuration that performs best overall does not necessarily produce the highest proportion of useful retrieved material.
On both inspected difficult examples, hybrid search with reranking brings context relevance and faithfulness close to one. These are results for those two examples, not the dataset aggregate. The retrieved material now better contains the information needed to answer, supporting the diagnosis that domain-specific terminology was a significant retrieval obstacle.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Keep the experiment loop tied to the application
Across ten experiments on Qdrant documentation question answering, Emery reports that faithfulness rises from 0.76 to just under 0.85, while the generic question-answering prompt remains unchanged. Retrieval settings, retrieval methods, and the generation model do change. The scores describe this demonstration's evaluation, rather than answer-accuracy percentages.
The progression is an experimental method: make incremental changes, evaluate a combination of metrics, inspect patterns in the underlying examples, form a hypothesis, and repeat. Aggregate scores identify a direction; individual retrieved documents help explain why the system is failing and what to test next.
Continued improvement depends on keeping that evidence relevant. Domain understanding helps identify useful interventions, and an up-to-date evaluation dataset keeps the tests aligned with the application. The closing constraint is to avoid over-engineering: add complexity when a carefully chosen combination of metrics and observed failures gives it a purpose.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Companion repository linking the talk's hybrid retrieval and reranking example, alongside other RAG evaluation workshops.
Experiments showing how the position of relevant evidence affects multi-document question answering and key-value retrieval.
Rust-based vector database with vector search, payload filtering and client libraries.
Current guides to composing language-model programs and optimizing them against evaluation metrics.
Further reading
Notebook and saved experiment files covering chunking, embedding models, generation models, rerankers and hybrid retrieval.
Updates since the talk
Current instructions for combining dense and sparse searches and composing retrieval stages through Qdrant's Query API.
Read the complete timestamped transcript
- 0:00
[on-hold music] Hello, everyone. Welcome to our talk.
- 0:15
Uh, my name is Atita, and I work as a solution architect, uh, at Q- uh, Qdrant. And, um-
- 0:21
I am-
- 0:21
Together with me, I have, uh, Deanna.
- 0:23
I'm Deanna Emery, and I'm founding AI researcher at Quotient AI.
- 0:26
Cool. So we would be talking about navigating RAG optimization with an evaluation-driven compass. So I think the track is about RAG, so let's, uh, talk and extend what we already know and what we've already seen so far.
- 0:40
So in this talk today, we will be discussing some of the key essential topics for anyone interested in building or productionizing the most popular implementation of generative AI, that is RAG, Retrieval-Augmented Generation.
- 0:53
Uh, in simple terms, RAG combines the capabilities of, uh, searching and retrieving through the vast amount of information stored in knowledge source, um, usually a vector database. Um, and then we use this information to generate relevant and coherent responses, leveraging the capabilities of a large language model.
- 1:13
We will be talking through the known challenges of this approach, and, uh, how can you combat, uh, them by adopting an evaluation-based, uh, optimization techniques to get the desired results.
- 1:23
So without further ado, let's get started. So yeah, as, uh, simple as it's, uh, defined, RAG can be implemented in many different ways, as we can see on the slide.
- 1:34
Apologies for the busy slide, as I wanted to cover all the aspects of how, um, RAG can be implemented. And, uh, we will be starting with the simplest one, the naive RAG.
- 1:43
This, uh, involves three key steps. First, we split the documents, uh, using the specific chunking strategy. Next, we process the document embedding and store them into a vector database.
- 1:55
For each user query, we then retrieve the most relevant document chunks based on our retrieval strategy. Finally, we add these retrieved chunks to our prompt to generate an answer using a chosen LLM.
- 2:08
Advanced versions involve enhancement to user queries, such as, um, query expansion or rewriting, and, uh, post-retrieval treatments like, um, result re-ranking or fusion. The further advanced version of, uh, RAG includes, uh, query routing, um, to task-based, uh, agents and self-improvement modules like DSPy.
- 2:31
However, there's one tool that is common in all these implementations if you notice, no matter if you want to build a naive or agentic RAG, and that is a vector database.
- 2:40
One of the most common use cases for building RAG is for knowledge management. There are aspects like retrieval performance, scalability to support large data volume, and resource optimization are paramount.
- 2:54
Speaking of vector database, Qdrant is open source, uh, vector search database built on Rust and, uh, is purpose-built to support your generative AI applications built on large scale of data.
- 3:06
If you haven't already checked out, uh, please do check out.
- 3:10
So coming back to our topic, it is, uh, worth to understand and acknowledge, um, the challenges that come along with all the goodness of RAG. I'm repurposing our naive RAG, uh, architecture to highlight common possible issues on each level.
- 3:22
After all, the first step to solving any problem is to recognize there is one. To begin with, during the data processing stage, we could have, um, issues with, uh, information missing from our dataset or information that fails to get extracted from our source of information.
- 3:38
This would result in incorrect and incomplete responses. On data ingestion, there is a constant battle to determine the optimum chunking strategy, along with determining a suitable embedding model that basically understands the specificity and jargons, uh, used in your dataset.
- 3:55
Information retrieval itself is quite interesting and a very evol-- ever-evolving, uh, field. Having spent seventeen years in, uh, the space myself, I can probably say that, um, relevancy is an unsolved problem.
- 4:08
So the challenge with determining relevant documents, retrieval size or retrieval window, if you may call it, and the order of documents is unskippable. Response generation can face challenges such as incorrect and incomplete answers to all the previously mentioned issues, and the issues of straying from the provided context.
- 4:29
To add, our query is also vulnerable to ambiguous or vague, uh, questions. There are certainly other challenges like generating coherent responses, maintaining user conversations, scaling a RAG for hundred or thousands of concurrent users, along with data security and compliance issues.
- 4:47
So looks like RAG isn't really a piece of cake after all. Fortunately, as for, like, the challenges, we have plenty of improvement techniques as well for the RAG. Let's look at them next.
- 4:58
So we saw challenges zooming into data quality, data that missed to get generated. After all, the foundation of great responses is, uh, it lies in the richness and, uh, accuracy of its, uh, information or context in case of RAG, which can be controlled through adopting data cleaning and advanced data extraction methodologies.
- 5:17
It is not a bad idea to use a general purpose embedding model to begin with, but for added improvements, it would be a good idea to use an embedding model that comprehends the terminologies of your domain.
- 5:28
Metadata. It is a very versatile feature that can help you retrieve, um, um, uh, your, um, added, um, understanding of your documents and, uh, improving your retrieval. Plus, leveraging the metadata filtering during the retrieval, it can also help you out with filtering out the irrelevant documents.
- 5:45
So it is also probably a good idea to invest your, uh, time into determining and improving your chunking strategy, which we spoke about earlier. Sometimes just by reducing the chunk size or adding semantic chunking can work wonders.
- 5:57
We would be seeing that also when Deanna walks us through all the experimentation. So we have been aware of Lost in the middle problem, and this is where it may be a good idea to determine an apt context size needed for your RAG to generate a helpful response.
- 6:12
Also, using suitable indexing algorithms like HNSW, BM25, or even graphs, they can do wonders.
- 6:20
Talking about suitable context size also prioritizes the document re-ranking as one of the key improvement parameters to ensure the most relevant documents, uh, that are provided in the context for LLM to generate a helpful response.
- 6:34
With LLMs in the picture, we cannot, um, overlook the difference a good prompt or thinking about questions as a chain of thought can make to the progress of-- process of, uh, response generation.
- 6:46
Semantic understanding is clearly desired. We know that, uh, text search alone doesn't works. But if the dataset has the requirement for the exact matches, it may be worth exploring dense as well as sparse vectors, and you can do that on one or many fields.
- 7:01
Similar to the embedding model, it may be worth switching and experimenting with different LLMs as well to ensure that, uh, the desired response is generated. And lastly, for better handling of task-driven, uh, user queries, such as fetching specific information or using custom data, it is beneficial to address these, uh, challenges using agents, which are well-suited for the
- 7:21
job. So with so many different levers to tweak in RAG pipeline, it's hard to know what's going wrong, what to change, where to start. This is why evaluation is very important.
- 7:33
Without an evaluation-based guided flow, it is difficult to accurately measure progress and ensure optimal performance. Evaluation also helps you to iteratively refine applications, making informed decisions, and ultimately achieve goals more effectively.
- 7:48
So on that topic, I would like to welcome Deanna, who's gonna basically walk us through how we did this, uh, experimentation.
- 7:55
Uh, thanks, Atita, for the perfect setup. [laughs] [audience applauding] Um, so this is where Quotient comes in, and I'm going to steal that from you. Thank you. Um, so because the quality of RAG is so dependent on the underlying documents, a thorough evaluation of a RAG system has to be customized to suit that specific domain and dataset.
- 8:19
Um, so Quotient's evaluation solution fills this need by enabling developers to measure the effectiveness of their LLM products accurately. Quotient's platform accelerates the experimentation process. With an evaluation dataset that contains realistic examples of inputs and expected outputs for your AI solution, you can quickly experiment and iterate to optimize
- 8:44
your RAG solutions. And if you don't have an evaluation dataset, don't worry. Uh, Quotient can help you get started by generating one for you, and you can hear more from us on this at the AI, SIISL, and Waves meetup on Friday.
- 9:00
So how does this work in practice? Once you have your Qdrant vector database set up, you can populate your evaluation dataset by submitting queries to return the contexts for the LLM.
- 9:12
You can then submit your evaluation dataset to Quotient, which handles the full orchestration, including the prompt formatting, execution of LLMs, and the metric computations.
- 9:23
So to see it in action, we've put together a demo walkthrough where we'll show you a workflow for making evaluation-informed changes to optimize your RAG system using Quotient and Qdrant.
- 9:36
For the sake of time, we've executed the notebook ahead of time, and we'll be walking you through the code outputs. And if you scare-- scan the QR code here, you can find the notebook on GitHub.
- 9:46
In this demo, we are building a RAG solution for question answering on Qdrant's documentation, and this will help enable Qdrant users to get help quickly.
- 9:59
So before we can begin evaluation, it's important to take a step back and consider what we're optimizing for. Given this use case, it's generally important to get helpful answers to the questions, but it's perhaps more important that the answers do not contain any inaccurate information that could misguide users.
- 10:17
And so in other words, we want to minimize hallucinations. And with that in mind, we will be looking at the following metrics shown here with a focus on faithfulness.
- 10:27
Uh, the first two metrics are both focused on measuring the quality of the retrieval side of RAG. Context relevance tells us whether the necessary information to answer the question is in the retrieved documents.
- 10:39
Chunk relevance tells us how much of the information retrieved is actually useful for answering the question versus just noise. Faithfulness is our hallucination metric. And, and then because be-- the focus of this talk is going to be optimizing the retrieval side of RAG, we're sticking to some of the more general text quality metrics here.
- 11:01
So when we're first getting started, we want to consider a simple naive RAG implementation to help us better optimize the data processing and vector database setup. So we start off by choosing a reasonable embedding model and chunking parameters, retrieval window, and the Mistral instruct model.
- 11:21
And then to see if we require additional context to answer the questions, we set up a second experiment where we increase the chunk parameters.
- 11:31
And so here are the results of those first two experiments. You can see that by increasing the chunk size in experiment two, we had some minor improvements in our text quality metrics.
- 11:42
That said, we had a considerable drop in our faithfulness, which is the metric we're optimizing for. Of note, you can see that the context relevance increased, meaning that we retrieved more of the necessary information to answer the question.
- 11:57
But the chunk relevance dropped considerably, meaning that a smaller portion of the retrieved documents was actually relevant. And so what this implies is that if we simply retrieve more documents but use the smaller chunk size from before, we might get better results.
- 12:15
And so we try this out. As expected, the smaller chunk size, uh, with the larger w- retrieval window achieved the highest relevance scores and the best faithfulness score, uh, meaning that we have a lower occurrence of hallucinations.
- 12:31
In our next two iterations, we test out a new embedding model as well as a different LLM, switching to GPT 3.5. And while the embedding model experiment in the light gray didn't quite work out, for experiment five in the dark gray, we found that using the same RAG configuration but changing the LLM improved performance across all our
- 12:51
metrics. So here we're looking at the aggregated metrics for our top-performing RAG configuration, and the large variance in the context relevance, which is highlighted in red, implies that some of the questions are having a harder time retrieving the right documents.
- 13:07
So to better understand what's going on, we have to look into the data. And here we've shown the two worst-performing data points in terms of hallucination. This third column here shows us the retrieved documents, and it's a lot of text, so I'll just summarize.
- 13:23
Um, so it seems like we're returning a lot of unrelated documents that are likely over-indexing on specific words in the query like Qdrant, support, and search, and we're returning documents that repeat these terms many times.
- 13:39
So to address this issue, one possible solution could be expanding our retrieval window to capture more documents and thereby making it more likely we get the right information. But in doing so, we'd also be adding a lot of noise to our context.
- 13:53
So by now, we likely need to expand out of naive RAG and start to add in some more advanced techniques, and this is where re-ranking comes in. So we could try using a different embedding model to re-rank the retrieved documents and then return only the top few, thus weeding out some of the more unrelated ones.
- 14:11
So we try this out. We perform three different re-ranking experiments, trying re-rankers from Mixed Bread, Cohere, and Gina's Colbert model, and we plot them here against our top naive RAG approach in blue.
- 14:23
And you can see that, in general, our context relevances, and with it our faithfulness, have improved with this strategy, with Cohere achieving the best relevance and faithfulness scores.
- 14:36
If we return to those same two worst-performing data points from experiment five now and look at how our re-ranking implementation did, you can see that in the second example, we're now retrieving documents that contain the desired answer, and with it, our context relevance and faithfulness are close to one.
- 14:53
That said, in the first example, we're still getting poor results, and this suggests that even after expanding our retrieval windows, we're still unable to identify the relevant documents. So if we think about the Qdrant documentation and the text within it, it contains a lot of special terminology, jargon, acronyms, and so it's unsurprising that these generally trained embedding
- 15:14
models are going to be limited in performance. So we could try fine-tuning or training our own model to address this issue, but this could be time-consuming and costly. Um, so another option to try is hybrid search, which combines sparse and dense vectors, and these sparse vectors help us capture documents that share similar terminology.
- 15:37
So we tried two implementations of this, one where we incorporate hybrid search with a re-ranker and one without. And you can see that, uh, using the Cohere re-ranker with hybrid search gives us the best performance across all metrics except for chunk relevance.
- 15:53
So looking at this, uh, hybrid search re-ranking experiment now on these same two data points, you can see that the context relevance and faithfulness scores are both close to one now, a significant improvement over our prior ones.
- 16:05
And we're also better to retrieve, better able to retrieve the information necessary to answer these questions. And so this suggests that domain-specific terminology has a big effect on our overall performance.
- 16:18
So to summarize, the table here shows what gains in performance we were able to make over just ten experiments. Starting from a faithfulness score of .76, we worked our way up to a score of just under .85, and notably, all of these gains were made without changing from a generic question answering prompt.
- 16:37
So there's certainly many more experiments to run, and we have plenty of room for improvement. But you can see how starting from scratch you can improve your RAG system by making incremental changes, evaluating using a combination of metrics that together can help you identify underlying issues, then observing patterns in your data, forming a hypothesis, and repeating the
- 16:57
process.
- 17:00
Thank you, Deanna. So to summarize, um, this talk and the experimentation, in this talk, we covered several key aspects of improving RAG. The baseline takeaway is that, uh, there is no substitute for evaluation-based or data-driven improvements.
- 17:17
We emphasize leveraging domain understanding to achieve significant, uh, wins and, uh, outlined various techniques for enhancement in our experiments. To ensure continuous improvement, it is crucial to keep your evaluation dataset up to date.
- 17:31
Lastly, avoid over-engineering your RAG application without considering a combination of carefully chosen metrics. If this talk piqued your interest and you are interested to get in touch with us, before that, some key references and the QR code.
- 17:48
Please feel free to scan them, get in touch with us. We're going to be around and looking forward to all your questions. [audience applauding] [upbeat music]