🤖 AI Engineering — Course Roadmap
This course takes you from writing simple Python to building real AI applications powered by Large Language Models (LLMs) — chatbots, document Q&A, RAG systems, and AI agents. Every topic is explained from first principles; if you can write a basic for loop, you can follow along.
What You'll Learn (10 Phases)
| Phase | Topic | Time |
|---|---|---|
| 1 | Python for Developers — the language of AI | 2–3 weeks |
| 2 | AI Fundamentals — ML, deep learning, LLMs | 2–4 weeks |
| 3 | Prompt Engineering — talking to LLMs well | 1 week |
| 4 | LLM Development — OpenAI, Claude, Gemini APIs | 2–3 weeks |
| 5 | LangChain / LlamaIndex — AI app frameworks | — |
| 6 | Vector Databases — embeddings & semantic search | — |
| 7 | RAG — grounding LLMs in your data (most important) | — |
| 8 | AI Agents — LLMs that take actions | — |
| 9 | AI + Java — Spring AI, LangChain4j | — |
| 10 | AI Deployment — Docker, K8s, monitoring, cost | — |
Projects You'll Build
Beginner
AI Chatbot · Document Q&A Bot · Resume Analyzer
Intermediate
RAG Knowledge Assistant · Customer Support Assistant · Meeting Summarizer
Advanced
Multi-Agent System · Enterprise Knowledge Assistant · Banking Policy Assistant · AI Code-Review Platform
How to Use This Course
- Go phase by phase — each builds on the last.
- Type out and run every code example; don't just read.
- Look for the green "Try it" boxes — small exercises to cement each idea.
Python Fundamentals
Python is the language of AI — almost every AI library is written for it. It's readable, beginner-friendly, and uses indentation (not braces) to group code.
The Building Blocks
Control Flow & Loops
{ } or semicolons. Consistent indentation isn't just style; it's required by the language.is_even(n) that returns True if a number is even (hint: n % 2 == 0), then loop 1–10 printing each number and whether it's even.OOP in Python
Object-Oriented Programming bundles data and behaviour into classes. You'll see it everywhere in AI libraries (e.g. building a chatbot class, an agent class).
Key Ideas
__init__— the constructor, runs when you create an object.self— refers to the current object (likethisin Java/JS).- Inheritance —
class SmartBot(ChatBot):reuses and extends a class.
Collections
Python's four built-in collections hold groups of values. You'll use these constantly — e.g. a list of chat messages, a dict of API parameters.
| Type | Looks like | Use for |
|---|---|---|
| list | [1, 2, 3] | Ordered, changeable sequence |
| tuple | (1, 2) | Ordered, fixed (can't change) |
| dict | {"key": "value"} | Key → value lookups |
| set | {1, 2, 3} | Unique items, no duplicates |
[x for x in ...]) is a Python superpower you'll use to transform data.Exception Handling
When something goes wrong (a network call fails, bad input), Python raises an exception. You handle it with try / except so your program doesn't crash — essential when calling AI APIs that can fail or rate-limit.
try/except with a retry is a habit you'll build early — a crash mid-conversation is a bad user experience.int(text), catching ValueError to print "Please enter a number" instead of crashing.Virtual Environments
A virtual environment is an isolated Python setup per project, so each project's libraries don't clash. AI projects need many specific package versions — venvs keep them tidy.
(venv)).NumPy
NumPy is the foundation of numerical computing in Python. It provides fast arrays (vectors/matrices) — and AI is built on these. An "embedding" (which you'll meet later) is just a NumPy array of numbers.
Pandas
Pandas handles tabular data (rows & columns, like a spreadsheet) via the DataFrame. You'll use it to load and clean the data you feed into AI — CSVs of documents, Q&A pairs, logs.
read_csv, filtering, and iterrows cover 80% of what you'll need.question,answer, load it with Pandas, and print every question in a loop. This is exactly the first step of a Document Q&A bot.What is AI?
Artificial Intelligence (AI) is software that performs tasks we'd normally call "intelligent" — understanding language, recognizing images, making decisions. The terms AI, ML, Deep Learning, and Generative AI are nested, not separate.
How the Terms Nest — Visual
- AI — the broad goal of intelligent machines (includes simple rule-based systems).
- Machine Learning — AI that learns patterns from data instead of being hand-coded.
- Deep Learning — ML using large neural networks.
- Generative AI — deep learning that creates new content (text, images). LLMs live here.
Machine Learning Basics
Machine Learning means a program learns from examples rather than following hand-written rules. You show it data, it finds patterns ("trains a model"), then it makes predictions on new data.
Traditional Code vs ML — Visual
Three Types of ML
| Type | Learns from | Example |
|---|---|---|
| Supervised | Labelled data (input → known answer) | Spam vs not-spam |
| Unsupervised | Unlabelled data (find structure) | Grouping customers |
| Reinforcement | Trial & error + rewards | Game-playing, robotics |
Deep Learning Basics
Deep Learning is machine learning using neural networks with many layers ("deep"). It's what powers modern AI — image recognition, speech, and the LLMs behind ChatGPT.
Why "Deep" Wins
- Learns features automatically — no need to hand-engineer what to look for; layers build up from simple to complex patterns.
- Scales with data & compute — more data + bigger networks = better results (this drove the LLM boom).
- Needs lots of data & GPUs — the trade-off for that power.
Generative AI
Generative AI creates new content — text, images, code, audio — rather than just classifying or predicting. ChatGPT writing an essay, DALL·E drawing a picture, GitHub Copilot writing code: all generative AI.
| Generates | Example models |
|---|---|
| Text / code | GPT-4, Claude, Gemini, Llama |
| Images | DALL·E, Midjourney, Stable Diffusion |
| Audio / speech | Whisper, ElevenLabs |
LLM Fundamentals
A Large Language Model (LLM) is a deep-learning model trained on vast amounts of text to do one deceptively simple thing: predict the next word (token). Do that extremely well, and you get models that converse, summarize, translate, and code.
How an LLM Works (Simply)
It predicts one token, appends it, then predicts the next — repeating to generate whole answers. The "intelligence" emerges from patterns learned across billions of sentences.
Key Terms You'll Use Constantly
| Term | Meaning |
|---|---|
| Token | A chunk of text (~¾ of a word) the model reads/writes |
| Context window | How much text the model can "see" at once |
| Parameters | The model's learned weights (billions of them) |
| Temperature | Randomness/creativity of the output (0 = focused, 1 = creative) |
| Hallucination | When the model confidently states something false |
Neural Networks
A neural network is the structure behind deep learning — layers of simple units ("neurons") loosely inspired by the brain. Each connection has a weight; learning means adjusting those weights.
Data flows left to right: each neuron multiplies its inputs by weights, sums them, applies a small function, and passes the result on. During training, the network compares its output to the correct answer and nudges the weights to do better next time (this is "backpropagation").
Transformers
The Transformer (Google, 2017 — "Attention Is All You Need") is the neural-network design behind every modern LLM. Its breakthrough is attention: the model weighs how much each word relates to every other word, capturing context.
Attention in Plain English
Attention lets the model link "it" to "animal" by scoring relationships between all words at once — and it does this in parallel, which is why Transformers train fast on huge datasets.
Prompt Design
A prompt is the instruction you give an LLM. Prompt engineering is the skill of writing prompts that reliably get the output you want. It's the highest-leverage skill in AI app development — same model, far better results.
Anatomy of a Good Prompt
The Building Blocks
| Element | Why it helps |
|---|---|
| Role ("You are a…") | Sets tone & expertise |
| Clear task | Removes ambiguity |
| Context | Grounds the answer in your situation |
| Output format | Makes results predictable/parseable |
| Constraints | Length, style, what to avoid |
System vs User Prompts
Most chat APIs separate a system prompt (persistent instructions/persona) from user prompts (the actual questions). Put rules and role in the system prompt; put the task in the user message.
Zero-Shot Prompting
Zero-shot means you ask the model to do a task without giving any examples — relying on what it already learned during training. It's the simplest and most common approach.
Few-Shot Prompting
Few-shot means you include a few examples of the task in the prompt, so the model copies the pattern. Great for getting a consistent format or teaching a specific style.
Chain of Thought
Chain-of-Thought (CoT) prompting asks the model to reason step by step before answering. This dramatically improves accuracy on math, logic, and multi-step problems — the model "thinks out loud."
Structured Output
When your program (not a human) consumes the answer, you need it in a predictable format — usually JSON. Ask the model explicitly, and your code can parse it reliably.
Prompt Optimization
Optimization is the loop of improving a prompt through testing until it's reliable, cheap, and fast. Treat prompts like code: iterate, measure, version.
The Optimization Loop
- Write a clear prompt (role, task, format, constraints).
- Test on several real inputs — including tricky edge cases.
- Diagnose failures: wrong format? add an example. Wrong reasoning? add CoT. Too vague? tighten instructions.
- Refine & repeat; keep the best version.
Practical Tips
- Be explicit over clever — spell out exactly what you want.
- Trim tokens — shorter prompts cost less and run faster; remove fluff.
- Lower temperature (≈0) for consistent, factual tasks; raise it for creative ones.
- Put key instructions first and last — models weight the start and end heavily.
- Version your prompts — store them like code so you can compare and roll back.
OpenAI APIs
Now you call a real LLM from code. OpenAI's Chat Completions API takes a list of messages and returns the model's reply. This is the pattern every provider follows.
The Message Roles
| Role | Purpose |
|---|---|
| system | Persistent instructions / persona |
| user | The human's message |
| assistant | The model's previous replies (for context) |
try/except (Phase 1) for rate limits and timeouts.Claude APIs (Anthropic)
Anthropic's Claude is a leading LLM family, strong at reasoning, long context, and following instructions safely. The API is very similar to OpenAI's — messages in, reply out.
system prompt is a separate top-level parameter (not a message), and max_tokens is required. Otherwise the mental model is identical — which is why switching providers is easy.Gemini APIs (Google)
Google's Gemini models are multimodal (text, images, audio, video) with very large context windows. Again, the same request/response shape.
Tokenization
LLMs don't read characters or whole words — they read tokens, chunks of text roughly ¾ of a word. Tokenization is how text is split into these chunks. You're billed per token, so this matters.
- Rule of thumb: ~1 token ≈ 4 characters ≈ ¾ word. 1,000 tokens ≈ 750 words.
- Cost & limits are counted in tokens (input + output).
- Count them with
tiktoken(OpenAI) before sending, to stay within limits/budget.
Context Windows
The context window is the maximum number of tokens a model can consider at once — your prompt plus its response must fit inside it. It's the model's working memory for a single call.
| Window size | Roughly |
|---|---|
| 8K tokens | ~6,000 words |
| 128K tokens | ~a 250-page book |
| 1M+ tokens | thousands of pages (Gemini) |
Function Calling (Tool Use)
Function calling lets an LLM use your code. You describe functions (tools) it can call; when useful, the model returns a request to call one with arguments — your code runs it and feeds the result back. This is how LLMs fetch live data and take actions.
The Flow — Visual
JSON Responses
When your program consumes the output, you want guaranteed-valid JSON. Modern APIs offer a JSON / structured-output mode that forces the model to return parseable JSON matching a schema — more reliable than just asking nicely (Phase 3).
Streaming Responses
LLMs generate token-by-token, so they can stream the answer as it's produced — that "typing" effect in ChatGPT. Streaming makes apps feel fast because users see words immediately instead of waiting for the whole reply.
LangChain Basics
LangChain is the most popular framework for building LLM applications. It provides reusable building blocks — model wrappers, prompt templates, chains, memory, agents, and vector-store integrations — so you don't reinvent plumbing for every app.
ChatOpenAI to ChatAnthropic and everything else stays the same. The | pipe syntax (LCEL) connects components into a pipeline. LlamaIndex is a sibling framework focused on data/RAG.Chains
A chain links multiple steps into a pipeline — e.g. prompt → model → output parser, or the output of one LLM call feeding the next. Chains let you build multi-step logic declaratively.
Agents
A LangChain agent uses an LLM to decide which tools to call and in what order to accomplish a goal — rather than following a fixed chain. The LLM reasons, picks a tool, sees the result, and decides the next step (the loop you'll formalize in Phase 8).
Tools
A tool is a function an agent can call — a calculator, web search, database query, or your own API. You define the function and describe it; the agent decides when to use it (this is function calling, packaged conveniently).
Memory
LLMs are stateless — they forget everything between calls. Memory gives a conversation continuity by storing and re-supplying past messages, so the assistant "remembers" earlier turns.
| Memory type | How it works |
|---|---|
| Buffer | Keep the full chat history (simple, grows with tokens) |
| Windowed | Keep only the last N messages |
| Summary | Summarize old turns to save tokens |
LlamaIndex
LlamaIndex is a framework specialized for connecting LLMs to your data (RAG). Where LangChain is a broad toolkit, LlamaIndex focuses on ingesting, indexing, and querying documents with minimal code.
Embeddings
An embedding turns a piece of text into a list of numbers (a vector) that captures its meaning. Texts with similar meaning get similar vectors — the foundation of semantic search and RAG.
Semantic Search
Semantic search finds results by meaning, not exact words. You embed the query and the documents, then return the documents whose vectors are closest to the query's.
| Keyword search | Semantic search | |
|---|---|---|
| Matches | Exact words | Meaning / intent |
| "car" finds | only "car" | "automobile", "vehicle" |
| Powered by | Inverted index | Embeddings + vector similarity |
Vector Search
A vector database stores embeddings and finds the nearest neighbors to a query vector — fast, even across millions of vectors. This is the engine under semantic search.
- Similarity metric — usually cosine similarity (angle between vectors).
- ANN (Approximate Nearest Neighbor) — algorithms like HNSW find "close enough" matches very fast instead of comparing every vector exactly.
- top-k — you ask for the k most similar items (e.g. top 5 chunks).
Pinecone
Pinecone is a fully managed, cloud vector database — no servers to run, scales automatically. Popular for production RAG when you want zero ops.
ChromaDB
Chroma is an open-source, developer-friendly vector database that runs locally (even in-memory) — perfect for learning, prototyping, and small apps.
Weaviate
Weaviate is an open-source vector database (self-hosted or cloud) with strong built-in hybrid search (vector + keyword) and a flexible schema. A solid production option you can run yourself.
FAISS
FAISS (Facebook AI Similarity Search) is a high-performance library (not a server) for vector similarity search. It's blazing fast and runs in-process — but you manage storage and metadata yourself.
| Tool | Best for |
|---|---|
| Chroma | Learning, local prototypes |
| FAISS | Fast in-process search, full control |
| Weaviate | Self-hosted, hybrid search |
| Pinecone | Managed, zero-ops production |
RAG Fundamentals
RAG (Retrieval-Augmented Generation) lets an LLM answer questions using your data — documents, policies, a knowledge base — instead of only what it learned in training. You retrieve relevant text, inject it into the prompt, and the LLM generates an answer grounded in it.
The RAG Pipeline — Visual
Why RAG Matters
- Up-to-date & private — answer from your latest docs, not stale training data.
- Reduces hallucination — the model cites real retrieved text.
- Cheaper than fine-tuning — no retraining; just update the document store.
- Citations — you can show where each answer came from.
Document Chunking
Documents are too big to embed whole, so you split them into chunks (passages). Chunk quality makes or breaks RAG — too big and retrieval is imprecise; too small and you lose context.
| Strategy | How |
|---|---|
| Fixed-size | e.g. 500 tokens with 50-token overlap |
| Recursive | Split on paragraphs → sentences (keeps structure) |
| Semantic | Split where meaning shifts |
| Document-aware | By headings/sections (Markdown, PDF) |
Embeddings (in RAG)
In RAG, you embed every chunk once (ingestion) and store the vectors; at query time you embed the question and find the nearest chunks. The embedding model choice affects retrieval quality and cost.
- Same model both sides — embed chunks and queries with the same model, or vectors won't be comparable.
- Pick by need — small models (cheap, fast) vs large (more accurate); domain-specific models for specialized text.
- Re-embed on change — if you switch embedding models, re-embed your whole corpus.
Retrieval Strategies
Retrieval is choosing which chunks to feed the LLM. Better retrieval = better answers. Several strategies improve on naive top-k.
| Strategy | Idea |
|---|---|
| Top-k similarity | The k closest chunks (baseline) |
| MMR | Maximize relevance and diversity (avoid duplicates) |
| Metadata filtering | Restrict by tags (e.g. department, date) |
| Query expansion | Rephrase/expand the query for better recall |
| Multi-query | Generate several query variants, merge results |
Context Injection
Context injection is how you place the retrieved chunks into the prompt so the LLM answers from them. The prompt template is critical — it tells the model to use only the provided context and to say "I don't know" otherwise.
Hybrid Search
Hybrid search combines semantic (vector) search with keyword (BM25) search, getting the best of both — meaning and exact matches (names, codes, acronyms that embeddings miss).
| Search | Good at | Weak at |
|---|---|---|
| Vector | Meaning, synonyms | Exact IDs, rare terms |
| Keyword (BM25) | Exact terms, codes | Synonyms, paraphrase |
| Hybrid | Both — fused scores | — |
Reranking
Reranking is a second pass: retrieve a larger set (say top 20), then use a specialized cross-encoder model to re-score them by true relevance to the query, and keep the best few. It sharply improves the quality of what reaches the LLM.
RAG Evaluation
How do you know your RAG system is good? You measure it. RAG has two parts to evaluate — retrieval (did we fetch the right chunks?) and generation (was the answer correct and grounded?).
| Metric | Asks |
|---|---|
| Context Recall | Did retrieval find the relevant info? |
| Context Precision | Were retrieved chunks actually relevant? |
| Faithfulness | Is the answer supported by the context (no hallucination)? |
| Answer Relevance | Does the answer address the question? |
Agent Architecture
An AI agent is an LLM that runs in a loop: it reasons about a goal, acts by calling a tool, observes the result, and repeats until done. It turns a one-shot text generator into something that can complete multi-step tasks autonomously.
The Reason–Act Loop — Visual
This "ReAct" pattern (Reason + Act) is the heart of agents. The LLM is the brain; tools are its hands; the loop continues until the goal is met or a step limit is hit.
Tool Calling
Tool calling is how an agent acts — the same function-calling mechanism from Phase 4, now used repeatedly inside the agent loop. Each turn, the LLM may choose a tool, you run it, and return the result for the next reasoning step.
- Tools = web search, calculator, database query, code runner, your APIs.
- The agent decides which tool and with what arguments.
- Tool results become new observations the agent reasons over.
Multi-Agent Systems
Instead of one do-everything agent, a multi-agent system uses several specialized agents that collaborate — each with its own role, tools, and prompt — often coordinated by an "orchestrator."
Agent Workflows
A workflow adds structure to agents — a defined graph of steps (some LLM, some code, some human approval) rather than a free-for-all loop. This makes agents more reliable and predictable for production.
| Style | Control | Use when |
|---|---|---|
| Free agent (ReAct) | LLM decides everything | Open-ended exploration |
| Workflow / graph | You define the steps; LLM fills them | Production, repeatable tasks |
MCP Concepts (Model Context Protocol)
The Model Context Protocol (MCP) is an open standard for connecting AI assistants to tools and data sources in a uniform way — think "USB-C for AI tools." Instead of custom-coding every integration, an MCP server exposes tools/data that any MCP-aware AI client can use.
- MCP server — wraps a data source or tool (files, a database, an API, GitHub).
- MCP client — the AI app/assistant that connects to servers.
- Benefit — write an integration once; reuse it across many AI tools.
Autonomous Agents
Autonomous agents pursue a high-level goal with minimal human input — planning sub-tasks, executing them, and self-correcting in a long loop (e.g. "research competitors and produce a report").
Spring AI
Spring AI brings LLMs to Java/Spring Boot with the familiar Spring style — auto-configuration, starters, and a portable ChatClient that works across OpenAI, Anthropic, Azure, Ollama, and more.
LangChain4j
LangChain4j is the Java port of LangChain — chains, tools, agents, memory, and RAG for the JVM. Its standout feature is AI Services: declare an interface and it's auto-implemented by an LLM.
OpenAI Integration
Connecting a Spring Boot app to OpenAI (or any provider) follows the same secure pattern you use for databases: configuration via properties/env vars, a client bean, and resilient calls.
- Secrets — API key from env var / Secrets Manager, not in code or Git.
- Resilience — timeouts, retries, circuit breaker (Resilience4j) around the call.
- Async/stream — use
stream()for token streaming to the browser.
RAG with Spring Boot
Spring AI makes RAG (Phase 7) a few lines: a VectorStore abstraction (PGVector, Redis, Pinecone, Chroma…) plus a QuestionAnswerAdvisor that retrieves and injects context automatically.
AI Microservices
In production you often isolate AI logic into its own microservice — so model changes, scaling, and cost are managed independently of your core app.
- Dedicated AI service — owns prompts, RAG, model calls; exposes a clean REST API.
- Scales separately — AI calls are slow & spiky; scale this service on its own.
- Resilience boundary — circuit breakers/timeouts here protect the rest of the system.
- Swappable — change models/providers without touching other services.
AI API Gateway
An AI gateway sits in front of LLM providers and centralizes the cross-cutting concerns of AI calls — keys, routing, rate limits, caching, cost tracking, and fallbacks.
| Gateway handles | Why |
|---|---|
| Key management | One secure place for provider keys |
| Routing / fallback | Failover from one model/provider to another |
| Rate limiting & quotas | Protect budget and providers |
| Caching | Reuse answers to identical prompts (save $) |
| Cost & usage logging | Track spend per team/feature |
Docker (for AI apps)
Containerize your AI app so it runs identically everywhere. AI services have a few extras: Python dependencies, model/API config, and secrets passed at runtime.
-e / secrets), never bake them into the image. For Java AI services, the multi-stage Spring Boot Dockerfile from the Docker tutorial applies directly.Kubernetes (for AI apps)
Kubernetes runs your containerized AI service with scaling, self-healing, and rolling updates. AI workloads have specific needs around secrets, autoscaling, and (for self-hosted models) GPUs.
- Secrets — API keys as K8s Secrets / env vars, not in images.
- Autoscaling — HPA on CPU/latency; AI traffic is spiky.
- Timeouts — LLM calls are slow; tune probes & request timeouts generously.
- GPUs — only if self-hosting models (node selectors/taints); not needed when calling APIs.
Model Serving
Model serving = running a model so apps can send requests to it. You have two paths:
| Approach | Meaning | When |
|---|---|---|
| Hosted API | Call OpenAI/Claude/Gemini | Default — no infra, fast start |
| Self-hosted | Run an open model (Llama, Mistral) yourself | Privacy, cost at scale, offline |
Self-hosting tools: Ollama (easy local), vLLM / TGI (high-throughput production serving on GPUs).
Monitoring
AI apps need the usual monitoring (latency, errors, throughput) plus AI-specific signals — token usage, cost, and answer quality.
| Track | Why |
|---|---|
| Tokens & cost per request | Spend can spike fast |
| Latency (esp. p95) | LLM calls are slow & variable |
| Error/timeout/rate-limit rate | Providers fail intermittently |
| Quality / feedback (👍👎) | Catch hallucinations & drift |
| Prompt & trace logs | Debug what the model actually saw |
AI Security
LLM apps introduce new risks beyond normal web security. The biggest is prompt injection — malicious text (in user input or retrieved documents) that hijacks the model's instructions.
| Risk | Defense |
|---|---|
| Prompt injection | Separate instructions from data; never trust retrieved/user text as commands |
| Data leakage | Don't put secrets in prompts; filter PII; pick providers with no-train policies |
| Excessive agency | Least-privilege tools; confirm risky actions; human-in-the-loop |
| Output handling | Treat LLM output as untrusted — sanitize before executing/rendering |
| Cost abuse (DoS) | Rate limits, max tokens, auth on AI endpoints |
Cost Optimization
LLM bills are token-based and can balloon. A few habits keep costs sane without hurting quality.
- Right-size the model — use a small/cheap model (e.g. mini/flash) for easy tasks; reserve big models for hard ones.
- Trim tokens — concise prompts, retrieve fewer/better chunks (rerank), cap
max_tokens. - Cache — reuse answers for identical/similar prompts; use providers' prompt caching.
- Batch — group requests where possible.
- Route — cheap model first, escalate to a bigger one only if needed.
- Monitor spend — track cost per feature; set budget alerts.
Beginner Projects
Apply Phases 1–4. These cement the basics: calling an LLM, prompting, and handling structured output.
🤖 AI Chatbot
A console/web chat that keeps conversation history and streams replies. Uses: OpenAI/Claude API, message roles, memory, streaming (Phase 4 + 5 memory).
📄 Document Q&A Bot
Paste a document, ask questions about it. Uses: read text, stuff it into the prompt as context, structured prompting. (The "manual RAG" stepping stone before vector DBs.)
📃 Resume Analyzer
Upload a resume + job description; get a match score and suggestions as JSON. Uses: prompt design, JSON mode, extraction (Phase 3 + 4).
Intermediate Projects
Apply Phases 5–7. Now you add real retrieval — embeddings, a vector DB, and RAG.
📚 RAG Knowledge Assistant
Chat over a folder of your docs (PDFs/markdown). Uses: chunking, embeddings, vector DB (Chroma), retrieval + context injection, citations (Phase 6 + 7).
🎧 Customer Support Assistant
Answers from your help-center articles, escalates when unsure. Uses: RAG + "I don't know" guardrail + hybrid search.
📝 Meeting Summarizer
Transcript → summary + action items + decisions as JSON. Uses: chunking long transcripts, map-reduce summarization, structured output.
Advanced Projects
Apply Phases 8–10. Agents, multi-service architecture, Java integration, and production concerns.
🧩 Multi-Agent System
A team of agents (researcher, writer, reviewer) collaborating on a task. Uses: agent loop, tools, multi-agent orchestration, workflows (Phase 8).
🏢 Enterprise Knowledge Assistant
Company-wide RAG with access control, metadata filtering, and citations, deployed as a service. Uses: RAG + hybrid search + reranking + AI microservice (Phase 7 + 9).
🏦 Banking Policy Assistant
Strictly-grounded answers over policy docs with audit logging — accuracy and safety critical. Uses: RAG faithfulness, guardrails, evaluation, AI security (Phase 7 + 10).
🔍 AI-Powered Code Review Platform
Analyzes PRs, flags bugs/smells, suggests fixes. Uses: function/tool calling, structured output, Spring AI / LangChain4j, AI microservice + gateway (Phase 9).