For the last two years, the RAG (Retrieval-Augmented Generation) concept has become increasingly popular by combining the power of LLMs with the ability to build AI systems that operate over specific enterprise knowledge bases. However, Naive RAG architectures have limitations and in many cases are not as effective as they could be. One of the most well-known optimization strategies to address this is Agentic RAG.

Through live coding with Spring AI 2 and Spring Boot 4, we'll build an Agentic RAG system as an extension of a running production application Video Production Store. The system will be able to autonomously decide when and how to gather needed information from different data sources - vector or relational databases. The process will follow these incremental steps for continuous software development. Step 1: We'll create a Naive RAG by implementing the RAG ETL pipeline, then implement the Retrieve, Augment, and Generation phases following best practices of separation of concerns and layered architecture. Step 2: Once we've verified that our Naive RAG works well, we'll transform it into an Agentic RAG by adding an agent in the Retrieval phase. This agent will make intelligent decisions about which data source to query - the vector database for technical knowledge or the relational database. Step 3: We'll evolve the system into a distributed architecture by integrating directly with the production application via a dedicated REST client library. Step 4: We'll evolve the system to integrate with an MCP (Model Context Protocol) server. Instead of using local tools for data retrieval, the agent will communicate with a dedicated MCP server to gather the needed data. The workshop follows an incremental live-coding format. At the start, the completed project will be demonstrated so the direction is clear from the beginning. Due to time constraints, some code will be written together while other fragments will be copied from prepared checkpoints and explained in detail. Particular attention will be paid to how the change of specific technical parameters or strategies will affect the quality of the final result. For a detailed step-by-step description of the workshop structure, including project architecture, technology stack, and development steps, download the full Workshop Guide. https://drive.google.com/file/d/1IzMERN0Gr3_Eufgje6scYydUHEmUS_5Q/view

Talk Level:
INTERMEDIATE

Bio:
Jordan Jovkov is a Team Lead / Senior Software Developer. He entered programming in 1993 and quickly realized that this would be his career passion. During high school, he was part of the school's informatics team and took part in olympiads and competitions. He has worked as a developer, team leader, and responsible person for certain projects. He has participated in the development and maintenance of critical projects for Bulgarian government institutions. He has delivered lectures at DEV.BG and SoftUni. He has also been a teaching assistant at the Technical University of Sofia, as well as at the Java Academy of the Bulgarian Java User Group. He has experience in the whole software development lifecycle. In a previous company, he was a key figure in the process of training new colleagues in the Java team. Beyond the technical aspects, he also enjoys working with people. In this regard, he has experience managing small teams, communicating with other IT departments, organizing collaboration with other IT companies, as well as installing and supporting software for clients. He always strives to follow good practices and create quality software products.