
Understand the NexaCorp use-case, why RAG is needed, and what this course will focus on.
Sets expectations and explains how the system evolves module by module.
Get IntelliJ IDEA Ultimate for free and follow this course using a professional development environment.
Redeem your 90-day access and get started quickly.
Create the Spring Boot project, add Spring AI dependencies, and configure the OpenAI provider.
Verify setup using a simple health check endpoint.
Implement a basic /api/chat endpoint using Spring AI.
Send prompts to the LLM and validate responses using Postman or curl.
Understand Spring AI’s core abstractions and provider model.
Learn how models, clients, and configuration fit together.
Confirm the end-to-end AI call works correctly.
Discuss limitations of plain LLM chat and prepare for RAG in the next module.
Revisit the NexaCorp problem and define clear system boundaries.
Understand what the Internal Knowledge Assistant should and should not do.
Explore all fixed data sources used throughout the course.
Learn how different question types map to different knowledge sources.
Set up PostgreSQL using Docker and load course data using SQL scripts.
Inspect structured knowledge directly from the database.
Run Redis locally using Docker and connect via Redis Insight.
Understand Redis’ future role in the RAG system.
Test plain LLM chat against internal questions and observe failures.
Build a clear mental model of why RAG is required.
Learn what ingestion means in a RAG system and why it must be a pipeline.
Understand repeatability, idempotency, and common ingestion failures.
Load PDF documents and extract raw text using PDFBox.
Understand why PDF text is noisy and difficult to work with.
Ingest clean Markdown-based wiki documents.
Preserve structure and compare wiki ingestion with PDFs.
Ingest structured database records for RAG usage.
Handle time-sensitive data like announcements correctly.
Combine all ingestion sources into a single orchestration pipeline.
Produce a unified IngestedDocument model with content and metadata.
Understand why chunking is mandatory for RAG systems.
See how naive fixed-size chunking breaks semantic meaning.
Implement a basic fixed-size chunker.
Use it as a baseline to evaluate chunking limitations.
Add overlap to fixed-size chunking to reduce boundary issues.
Learn why overlap alone does not solve semantic problems.
Chunk wiki documents using their inherent structure.
Understand why semantic chunking works well for Markdown.
Handle PDFs realistically using pragmatic chunking strategies.
Prioritize traceability and metadata over perfect semantics.
Chunk database records so they participate in retrieval uniformly.
Treat each database record as an atomic chunk.
Unify all chunkers behind a single orchestration pipeline.
Produce a consistent list of Chunk objects across all sources.
Inspect chunk metadata across PDFs, wiki, and database sources.
Understand why metadata is critical for retrieval and filtering.
Understand why keyword search fails for AI systems and how embeddings enable semantic understanding. Learn where embeddings fit in a production-grade RAG architecture.
Implement an embedding pipeline using Spring AI to convert document chunks into vector representations. Generate embeddings in a test-driven, backend-friendly way.
Learn what vector databases do, how similarity search works, and why metadata matters. Compare common vector store options used with Spring AI.
Store embeddings and metadata into a real vector database using Spring AI. Ensure idempotent writes and prepare the system for retrieval in later modules.
Understand what retrieval really means in RAG systems and how it differs from simple similarity search. Learn how retrieval fits into end-to-end AI workflows.
Define clean retrieval outputs instead of returning raw text. Design retrieval models that preserve metadata and support reliable downstream processing.
Implement basic semantic retrieval using embeddings and vector similarity search with Spring AI. Retrieve top-K relevant chunks for a user query.
Prevent incorrect knowledge by applying metadata filters during retrieval. Learn how source type, document identity, and time sensitivity affect results.
Introduce ranking as a separate system concern. Apply simple, practical ranking strategies without heavy machine-learning re-rankers.
Wire the retrieval pipeline into a Spring Boot chat service. Maintain clean separation between controllers, services, and retrieval logic.
Validate retrieval behavior end to end using tests. Inspect retrieved context, verify metadata integrity, and confirm cross-source retrieval works correctly.
Understand why naive prompts fail in real systems and why prompt orchestration is a backend reliability concern, not just prompt wording.
Learn how to design stable prompt models that clearly separate system instructions, retrieved context, and user questions.
Define global system rules that control how the LLM behaves, independent of retrieval or user input.
Convert retrieved chunks into deterministic, prompt-ready context while preserving metadata and traceability.
Implement grounding rules that force the LLM to answer only from retrieved knowledge or safely respond with “I don’t know.”
Generate source-attributed answers using metadata so responses are traceable, explainable, and trustworthy.
Integrate Chat Prompt in Chat Service. Inspect and validate final prompts to ensure reliable behavior before scaling, optimizing, or hardening the system.
Understand why real RAG systems fail over time without proper handling of updates, deletions, and stale knowledge.
Introduce a dedicated lifecycle service to explicitly manage ingestion and deletion without mixing concerns.
Implement stable document identity and idempotent ingestion so the same knowledge is not duplicated or corrupted.
Learn how deleting knowledge affects chunks and embeddings, and how to prevent removed content from being retrieved.
Handle updates by safely removing old embeddings and re-ingesting new content without partial or mixed states.
Integrate all the lifecycle operations together. Expose minimal, explicit API endpoints to trigger lifecycle operations in a controlled and auditable way.
Most RAG courses stop at loading a few documents and asking questions.
This course goes further.
Spring AI + RAG: Build Production-Grade AI with Your Data teaches you how to design, build, and operate a real Retrieval-Augmented Generation (RAG) system the way backend engineers build serious systems — with clear boundaries, explicit pipelines, and production-minded decisions.
Includes free 90-day access to IntelliJ IDEA Ultimate for a professional development experience.
Includes professionally prepared subtitles in Spanish, Portuguese (Brazil), Japanese, and Chinese.
This is not a prompt-engineering or chatbot tutorial.
It is a backend-first system design course focused on correctness, reliability, and long-term maintainability.
You will build a complete Internal Knowledge Assistant for a fictional company, using:
Spring Boot
Spring AI
PostgreSQL
Redis / vector stores
The same codebase evolves throughout the course, exactly like a real backend system.
What Makes This Course Different
RAG is treated as a system, not a prompt trick
Ingestion, chunking, retrieval, and prompting are separate, testable pipelines
Metadata is a first-class concern, not an afterthought
Knowledge can be added, updated, and deleted safely
Everything is implemented using Spring AI abstractions, not custom hacks
No Python, no LangChain, no demo-only shortcuts
By the end, you will not just “use Spring AI” — you will understand how to own and evolve an AI system in production.
What You Will Learn
How to design ingestion pipelines for PDFs, Markdown, and databases
Why chunking strategies directly affect retrieval quality
How embeddings and vector stores fit into backend architecture
How to build metadata-aware retrieval pipelines
How to control LLM behavior with explicit prompt orchestration
How to manage knowledge lifecycle: add, update, delete
How to build RAG systems that remain correct as data changes
Course Modules Overview
This course is organized as a progressive backend system build, where each module introduces exactly one new system concern.
Module 1 — Setup & Spring AI Baseline
Spring Boot + Spring AI setup and a minimal chat endpoint to establish the foundation.
Module 2 — RAG Readiness
Use-case framing, data sources, and infrastructure setup (PostgreSQL, Redis).
Module 3 — Ingestion Pipelines
Designing repeatable ingestion for PDFs, wiki content, and database records.
Module 4 — Chunking Strategies
Source-specific chunking approaches and a unified chunking pipeline.
Module 5 — Embeddings & Vector Storage
Generating embeddings and persisting them with metadata in a vector store.
Module 6 — Retrieval Pipelines
Metadata-aware similarity search and clean retrieval integration into chat.
Module 7 — Prompt Orchestration & Reliability
Grounded prompts, explicit behavior control, and citation-based, source-attributed answers.
Module 8 — Knowledge Lifecycle
Safe add, update, and delete workflows to keep the system correct over time.
Who This Course Is For
Java and Spring Boot developers
Backend engineers integrating AI into real systems
Developers who already understand REST APIs, databases, and Spring fundamentals
Engineers who want to move beyond demo-level RAG implementations
Who This Course Is NOT For
Absolute beginners to Java or Spring
No-code or prompt-only AI learners
Frontend-focused developers looking for chatbot-only examples
Learners expecting quick "load a PDF and chat" style examples
Outcome
After completing this course, you will be able to:
Design RAG systems confidently
Build production-grade AI pipelines using Spring AI
Reason about correctness, reliability, and system boundaries
Apply the same architecture to other real-world use-cases
This course gives you the mental model and engineering discipline needed to build AI systems that last.