WTH is Retrieval Augmented Generation (RAG)?
Tags: beginners, ai, datascience, computerscience
Published: 2023-10-28 05:07:43

Language models have been at the forefront of modern AI research. The journey began with traditional recurrent networks and evolved into the era of transformers, with models such as BERT, GPT, and T5 leading the way. However, the latest innovation in this domain, known as Retrieval Augmented Generation (RAG), offers a promising advancement that combines the power of retrieval-based models with sequence-to-sequence architectures.

## What is Retrieval Augmented Generation (RAG)?
Retrieval Augmented Generation is a method that combines the powers of large pre-trained language models (like the one you're interacting with) with external retrieval or search mechanisms. The idea is to enhance the capability of a generative model by allowing it to pull information from a vast corpus of documents during the generation process.


Here's a breakdown of how retrieval augmented generation works:

- **Retrieval step**: When presented with a question or prompt, the RAG model first retrieves a set of relevant documents or passages from a large corpus. This is done using a retrieval mechanism, often based on dense vector representations of the documents and the query.

- **Generation step**: Once the relevant passages are retrieved, they are fed into a generative model along with the original query. This model then generates a response, leveraging both its pre-trained knowledge and information from the retrieved passages.

- **Training**: The entire system, including the retrieval and generation components, can be fine-tuned end-to-end on a downstream task. This means that the model can learn to improve its retrieval choices based on the quality of the generated responses.

The key advantage of RAG is that it allows the model to pull in real-time information from external sources, making it more dynamic and adaptable to new information. It's particularly useful for tasks where the model needs to reference specific details that might not be present in its pre-trained knowledge, like fact-checking or answering questions about recent events.

### How RAG Works?
![RAG Workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yx7tjookzrz8o2y7kk5x.png)

#### Let's break down the diagram step by step:
**1. Input Query**: This is the starting point where a user provides a query or a question that they want an answer to.

**2. Encoding**:
The input query is processed and encoded into a representation that can be used for further steps. This encoding captures the essence of the query in a format that the system can work with.

**3. Encoded Query**:
This is the result of the encoding step. It's a representation of the original query that's ready for the retrieval process.

**4. Document Retrieval**:
Using the encoded query, the system searches a large corpus of information to retrieve relevant documents or passages. This is done using a dense retrieval method which is efficient and can fetch the most relevant pieces of information.

**5. Retrieved Documents**:
These are the documents or passages that the system believes are most relevant to the encoded query. They contain potential answers or information related to the original query.

**6. Context Encoding**:
The retrieved documents are then encoded, similar to how the original query was encoded. This step prepares the documents for the generation process.

**7. Encoded Documents**:
This is the result of the context encoding step. It's a representation of the retrieved documents that's ready to be combined with the encoded query.

**8. Combine Encoded Query & Documents**:
The encoded query and the encoded documents are combined together. This combination provides a rich context that the system will use to generate a final answer.

**9. Generation using LLM (Large Language Model)**:
This is where the magic happens! Using the combined context from the previous step, a Large Language Model (like GPT-3 or GPT-4) generates a coherent and relevant answer. It tries to provide the best possible response based on the information it has.

**10. Output (Answer)**:
This is the final result. It's the answer or response generated by the system in reply to the original input query.

### Advantages of RAG
- **Scalability**: Instead of having a monolithic model that tries to memorize every bit of information, RAG models can scale by simply updating or enlarging the external database.

- **Memory Efficiency**: While traditional models like GPT have limits on the amount of data they can store and recall, RAG leverages external databases, allowing it to pull in fresh, updated, or detailed information when needed.

- **Flexibility**: By changing or expanding the external knowledge source, one can adapt a RAG model for specific domains without retraining the underlying generative model.

### RAG Applications
RAG can be extremely useful in scenarios where detailed, context-aware answers are required, such as:

- Question Answering Systems: Providing detailed answers to user queries by pulling from extensive knowledge bases.

- Content Creation: Assisting writers or creators by providing relevant information or facts to enrich their content.

- Research Assistance: Helping researchers quickly access pertinent data or studies related to their query.

### Real-Time Use Case
Retrieval-Augmented Generation (RAG) has a range of potential applications, and one real-life use case is in the domain of chat applications:

Retrieval-Augmented Generation (RAG) enhances chatbot capabilities by integrating real-time data. Consider a sports league chatbot. Traditional Large Language Models (LLMs) can answer historical questions but struggle with recent events, like last night's game details. 

RAG allows the chatbot to access up-to-date databases, news feeds, and player bios. This means users receive timely, accurate responses about recent games or player injuries. For instance, Cohere's chatbot provides real-time details about Canary Islands vacation rentals, from beach accessibility to nearby volleyball courts. Essentially, RAG bridges the gap between static LLM knowledge and dynamic, current information.

Here is the simplified sequence diagram illustrating the process of a chat application using Retrieval Augmented Generation (RAG) with the Large Language Model (LLM):

![RAG Application](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2k06t31v6nphp2lxnxpl.png)

**1. User Sends Query:**
The process begins when the user sends a query or message to the chat application.

**2. ChatApp Forwards Query:**
Upon receiving the user's query, the chat application (ChatApp) forwards this query to the Retrieval Augmented Generation (RAG) model for processing.

**3. RAG Retrieves & Generates Response:**
The RAG model, which integrates retrieval and generation capabilities, processes the user's query. It first retrieves relevant information from a large corpus of data and then uses the Large Language Model (LLM) to generate a coherent and contextually relevant response based on the retrieved information and the user's query.

**4. LLM Returns Response:**
Once the response is generated, the LLM sends it back to the chat application (ChatApp).

**5. ChatApp Displays Response:**
Finally, the chat application displays the generated response to the user, completing the interaction.

In essence, the diagram showcases a streamlined interaction where a user's query is processed by the RAG model (with the help of an LLM) to produce a relevant response, which is then displayed back to the user by the chat application.

### RAG for AI Applications

![RAG for AI](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p47qulh4wqzezng0t6z3.png) Image source: [YouTube](https://youtu.be/KgBVRLeahGo?si=-QpRpgOpUonSPjQI)

The diagram represents the Retrieval-Augmented Generation (RAG) process for AI applications. The flow starts with end users posing a query or "Ask" as represented by step 1. This inquiry is directed to a "Gen AI app," which then proceeds to "Search" and "Retrieve" relevant information from a "Company data" repository, as denoted by step 2. Once the data is fetched, it is used as a "Prompt" to instruct the "LLMs" (which likely stands for some form of language models) in step 3. The LLMs then generate an appropriate response based on the prompt and the initial query, synthesizing the retrieved data to provide a coherent and informed answer back to the end user. This RAG process combines the capabilities of information retrieval with the advanced generative capabilities of language models to offer detailed and contextually accurate answers.

{% embed https://dev.to/pavanbelagatti/a-beginners-guide-to-building-llm-powered-applications-with-langchain-2d6e %}

### SingleStore Database
Integrating SingleStore (formerly known as MemSQL) with the Retrieval Augmented Generation (RAG) model in a AI application can be a powerful combination. SingleStore is a distributed, relational database that excels in high-performance, real-time analytics. By integrating SingleStore, you can ensure that the RAG model has fast and efficient access to vast amounts of data, which can be crucial for real-time response generation.

![singlestore database for RAG](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rcoeyxsjxkuppzl1031s.png)

By integrating SingleStore with the RAG model, you can harness the power of real-time analytics and fast data retrieval, ensuring that your chat application provides timely and relevant responses to user queries.

For more in-depth understanding, follow Mr.Madhukar's talk on 'Building a Generative Ai App on Private Enterprise Data With Retrieval Augmented Generation (Rag)' on Youtube.
{% embed https://youtu.be/KgBVRLeahGo?si=BaHAZ5kXgIY724n3 %}

#### Try RAG 
Sign up for [free SingleStore cloud](https://www.singlestore.com/cloud-trial/?utm_campaign=singlestore-for-ai&utm_medium=referral&utm_source=pavan&utm_term=pavanrag) account to to try different RAG examples with their Notebooks feature.

Once you sign up, create a new Notebook and use any existing use-cases.

![notebook](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfopqdqh3fm3xtyh2nkh.png)

Pick the use case and start working
![notebooks usecase](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rnotlqdljkom8n8l05w7.png)

Run every command in your Notebook and execute it with the run command.

SingleStore enables you to integrate RAG within minutes. 

Take a look at my similar type of articles.
{% embed https://dev.to/pavanbelagatti/wtf-is-a-vector-database-a-beginners-guide-16p %}

{% embed https://dev.to/pavanbelagatti/wth-is-prompt-engineering-h03 %}

#### Conclusion
Retrieval Augmented Generation (RAG) represents a significant leap in the evolution of language models. By combining the power of retrieval mechanisms with sequence-to-sequence generation, RAG models can provide richer, more detailed, and contextually relevant outputs. As the field advances, we can expect to see even more sophisticated integrations of these components, paving the way for AI models that are not just knowledgeable, but also resourceful.