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.