Demo 05 - RAG Part 1
===============================================

Retrieval Augmented Generation (RAG) is a way to extend the knowledge of the LLM used in the AI service.

The RAG pattern is composed of two parts:
* Ingestion: This is the part that stores data in the knowledge base.
* Augmentation: This is the part that adds the retrieved information to the input of the LLM.

# Configuring EasyRag
To configure EasyRag: In the src/main/resources/application.properties file, we have the following configuration:
```
quarkus.langchain4j.easy-rag.path=src/main/resources/rag
quarkus.langchain4j.easy-rag.max-segment-size=100
quarkus.langchain4j.easy-rag.max-overlap-size=25
quarkus.langchain4j.easy-rag.max-results=3
```

* `quarkus.langchain4j.easy-rag.path`: The path to the directory containing the data files.
* `quarkus.langchain4j.easy-rag.max-segment-size`: The maximum number of tokens in a segment. Each document is 
split into segments (chunks) to be ingested by the LLM. This parameter defines the maximum number of tokens in a segment.
* `quarkus.langchain4j.easy-rag.max-overlap-size`: The maximum number of tokens to overlap between two segments.
That allows the LLM to have a context between two segments.
* `quarkus.langchain4j.easy-rag.max-results`: The maximum number of results to return when querying the knowledge base.