llm-zoomcamp Documentation

LLM Zoomcamp - a free online course about real-life applications of LLMs. In 10 weeks you will learn how to build an AI system that answers questions about...

5,010 stars Jupyter Notebook 1 file ยท ~6,183 tokens
RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy llm-zoomcamp on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name llm-zoomcamp -p 8080:8080 --restart always postgres:18
Configured Services & Ports
โš™๏ธ kestra_postgres
image: postgres:18
โš™๏ธ kestra
image: kestra/kestra:v1.3.21
๐Ÿ”Œ Ports: 8080:8080, 8081:8081
docker-compose.yml
yaml (docker-compose.yml)
volumes:
  kestra_postgres_data:
    driver: local
  kestra_data:
    driver: local
  kestra_tmp:
    driver: local

services:
  kestra_postgres:
    image: postgres:18
    volumes:
      - kestra_postgres_data:/var/lib/postgresql
    environment:
      POSTGRES_DB: kestra
      POSTGRES_USER: kestra
      POSTGRES_PASSWORD: k3str4
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
      interval: 30s
      timeout: 10s
      retries: 10

  kestra:
    image: kestra/kestra:v1.3.21
    pull_policy: always
    user: "root"
    command: server standalone
    volumes:
      - kestra_data:/app/storage
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp/kestra-wd:/tmp/kestra-wd
    environment:
      SECRET_GEMINI_API_KEY: ${SECRET_GEMINI_API_KEY}
      SECRET_TAVILY_API_KEY: ${SECRET_TAVILY_API_KEY}
      SECRET_OPENAI_API_KEY: ${SECRET_OPENAI_API_KEY}
      KESTRA_CONFIGURATION: |
        datasources:
          postgres:
            url: jdbc:postgresql://kestra_postgres:5432/kestra
            driverClassName: org.postgresql.Driver
            username: kestra
            password: k3str4
        kestra:
          server:
            basicAuth:
              username: "[email protected]"
              password: Admin1234!
          repository:
            type: postgres
          storage:
            type: local
            local:
              basePath: "/app/storage"
          queue:
            type: postgres
          tasks:
            tmpDir:
              path: /tmp/kestra-wd/tmp
          url: http://localhost:8080/
          ai:
            type: gemini
            gemini:
              model-name: gemini-2.5-flash
              api-key: ${GEMINI_API_KEY}
    ports:
      - "8080:8080"
      - "8081:8081"
    depends_on:
      kestra_postgres:
        condition: service_started

1. Project Overview & Quickstart (DataTalksClub/llm-zoomcamp)

File: README.md

Resource Link
๐ŸŽฌ Course launch stream Watch on YouTube
Course materials GitHub repository
Video lectures YouTube playlist
Documentation Zoomcamp Logistics ยท LLM Zoomcamp
Cohort schedule & deadlines courses.datatalks.club
Slack community #course-llm-zoomcamp
Announcements Telegram
2025 cohort projects courses.datatalks.club/llm-zoomcamp-2025/projects

About the Course

LLM Zoomcamp teaches you how to build practical, production-ready LLM applications step by step. Over 10 weeks you'll learn Retrieval-Augmented Generation, vector search, embeddings, AI agents, function calling, evaluation, monitoring, hybrid search, reranking, and more - all free, open-source, and hands-on.

Who Should Join

This course is for people who learn by doing. After completing it, you'll have a working codebase and the hands-on experience to build your own LLM-powered applications.

  • Software Engineers: Add LLMs, RAG, and modern search capabilities to real products
  • Data Engineers: Understand how vector search, hybrid search, and retrieval pipelines fit into production systems
  • ML Practitioners: Get a structured way to evaluate and monitor LLM-based applications

Prerequisites

  • Python: You can write code confidently
  • Command Line: Comfortable with terminal
  • Docker: Basic familiarity
  • ML / LLMs: Not required
  • Hardware: Any laptop or PC. No GPU needed
  • Expenses: ~$1-5 in API credits

[!NOTE]
If you can write a Python function and have heard of ChatGPT, you have enough to get started.

How to Take the Course

There are two ways to follow the course: live and self-paced.

Live Cohort Self-Paced
Start June 8, 2026, 17:00 CET Anytime
Lectures Pre-recorded Pre-recorded
Homework Graded Available but not scored
Leaderboard โœ… Yes โŒ No
Peer Review โœ… Yes โŒ No
Certificate โœ… Yes โŒ No
Cost Free Free
Register Sign up here Just start learning!

[!IMPORTANT]
"Live cohort" does not mean live classes. All lectures are pre-recorded. "Live" means working with others, having deadlines, getting your homework and project scored, review your peers, and getting a certificate at the end.

Self-paced steps:

  1. Follow the materials on GitHub
  2. Ask questions and share progress in Slack
  3. Do homeworks (self-checked) and build a project for your portfolio

Syllabus

[Module 1: Agentic RAG](01-agentic-rag/)

  • Build a RAG pipeline with keyword search
  • Make it agentic with function calling
  • Semantic search with embeddings
  • minsearch, sqlitesearch, and PGVector

[Module 3: Orchestration](03-orchestration/)

  • AI orchestration with Kestra

[Workshop: Data Ingestion](cohorts/2026/workshops/dlt.md)

  • Build dlt pipelines to ingest and analyze LLM traces
  • Filesystem and REST API sources, DuckDB, and marimo dashboards

[Module 4: Evaluation](04-evaluation/)

  • Measure retrieval and answer quality
  • Offline and online evaluation

[Module 5: Monitoring](05-monitoring/)

  • Monitor user feedback and system health
  • Live dashboards

[Module 6: Best Practices](06-best-practices/)

  • LangChain
  • Hybrid search: combine vector and keyword search
  • Rerank results for higher precision

[Module 7: End-to-End Project](07-project-example/)

  • A complete project example: a fitness assistant built with LLMs

[Capstone Project](project.md)

  • Ship a complete end-to-end project of your choice from scratch

Recommended approach:

  1. Watch the video for each module
  2. Complete the homework to reinforce the concepts
  3. Build your capstone project applying everything end-to-end

Capstone Project

The capstone is your chance to apply everything end-to-end. You'll build a complete, working RAG application built and owned by you.

What you'll build:

  • A searchable knowledge base. Choose a dataset, ingest, clean, and store it for retrieval
  • A retrieval pipeline. Implement the full RAG flow: retrieve context, assemble prompts, call an LLM, return grounded answers
  • An evaluation process. Measure how well your system retrieves and answers using search metrics or LLM-as-a-Judge
  • A user-facing interface. A simple UI or API (Streamlit, FastAPI, or similar) so others can try your app
  • Monitoring & feedback loops. Track queries, feedback, and performance over time

Past community project ideas

  • Fitness & nutrition assistant
  • Study companion for textbooks or course notes
  • Medical FAQ assistant
  • Codebase Q&A bot
  • News summarization and retrieval tool

[!NOTE]
See the full capstone project guidelines and browse all 2025 and 2024 cohort submissions for inspiration.

Certificate

To earn your certificate:

  1. Complete the final project. Build a real-world RAG application demonstrating all course concepts
  2. Peer review 3 projects. Evaluate and provide written feedback on three fellow students' submissions
  3. Meet the deadlines. Submit your project and reviews within the cohort schedule

Certificates are issued after all peer reviews are completed. Self-paced learners are not eligible for certification but can build portfolio projects freely.

See the certificate guide for how the certificate is issued and how to add it to LinkedIn.

Instructors

  • Alexey Grigorev - Founder of DataTalks.Club and creator of the Zoomcamp series. Principal data scientist.
  • Will Russell - Developer Relations at Kestra.
  • Timur Kamaliev - AI engineer building production LLM systems, RAG pipelines, and agentic applications.

Testimonials

"This course gave me hands-on experience in building LLM-powered applications, including prompt engineering, retrieval-augmented generation (RAG), pipeline orchestration, and vector search optimization."

โ€” Alexander Daniel Rios, LLM Zoomcamp Graduate

"Not gonna lie - this course took longer than planned. By the end, I was running on fumes, forcing myself to push through the final modules. But I made it. What I loved: hands-on experience building real AI systems (not just theory!), deep dives into RAG, vector databases, evaluation, and monitoring, and the wealth of production-ready practices that matter in enterprise environments."

โ€” Vasiliy Chernykh, LLM Zoomcamp Graduate

Read more testimonials from past graduates โ†’

Community & Support

Getting Help on Slack

Join the #course-llm-zoomcamp channel on DataTalks.Club Slack for discussions, troubleshooting, and networking with fellow learners and the course team.

To keep discussions useful for everyone:

Learning in Public

We actively encourage sharing your progress online throughout the course. Post what you're building on LinkedIn, X, or a blog. It helps you get noticed and connect with others in the field. It also earns you bonus points toward your homework and project scores.

AI Shipping Labs

If you want extra support and structure while going through the course, AI Shipping Labs is an optional paid community focused on AI engineering. On top of the free course it adds office hours, accountability sprints, personalized onboarding, and member-only workshops. It is also a way to support the course.

Everything we do at DataTalks.Club is free and will stay free. AI Shipping Labs is only for people who want extra on top of the free content. See the AI Shipping Labs guide for what's included and how membership works.

Sponsors

A huge thanks to our sponsors for making this course possible!

[!TIP]
Interested in supporting the DataTalks.Club community? Reach out to [email protected].

FAQ

A few common questions. For everything else, see the full LLM Zoomcamp FAQ.

Q: Is this course really free?
A: Yes. All videos, materials, and homework are free. You may spend $1-5 in OpenAI API credits if you run the code yourself.

Q: Do I need a GPU?
A: No. All exercises are designed to run on a standard laptop using cloud APIs.

Q: What does "live cohort" mean? Are there live classes?
A: No mandatory live classes. All lectures are pre-recorded. "Live" means deadlines, scored homework, a leaderboard, peer review, and certificate eligibility.

Q: Can I take it self-paced, and will I get a certificate?
A: Yes, you can start anytime. Certificates require completing the final project and peer reviews during a live cohort.

Contributing

Found a bug in the course materials? Know how to improve an explanation or fix broken code? Contributions are welcome and appreciated.

  1. Fork the repository
  2. Make your fix or improvement
  3. Open a pull request with a clear description

Every contribution helps future learners. Thank you ๐Ÿ™

About DataTalks.Club

DataTalks.Club is a global online community of data enthusiasts - a place to learn, share knowledge, ask questions, and support each other through free courses, events, and an active Slack community.

[!NOTE]
Most activity happens on Slack. Join us there for updates, discussions, and community events. Learn more at DataTalks.Club docs.


File: 02-vector-search/README.md

In this module, we extend the RAG pipeline from
module 1 with vector search. Vector search
matches documents by semantic meaning instead of exact keyword
overlap. We start from embeddings and end with persistent vector
indexes (sqlitesearch, PGVector) and ONNX-based embedders for
lightweight deployments.

Lessons

The lessons cover vector search end to end, from embeddings to
persistent indexes.

  1. What is Vector Search - Keyword search vs vector search, why it matters
  2. Embeddings - Turning text into vectors with sentence-transformers
  3. Embedding Our Dataset - Generating embeddings for the FAQ dataset
  4. Vector Search - Vector search with numpy
  5. Vector Search with minsearch - In-memory vector search
  6. RAG with Vector Search - Replacing keyword search with vector search in our RAG pipeline
  7. Vector Search with sqlitesearch - Persistent vector search backed by SQLite
  8. Vector Search with PGVector - Production vector search with PostgreSQL and pgvector
  9. ONNX Embedder (Optional) - Using ONNX Runtime instead of PyTorch for embeddings
  10. Next Steps - When to use vector search and what's next

Homework

Original workshop recording

This module was taught as a live workshop, which we chopped into the
per-lesson videos above. To watch the full uncut recording:

Old content

Earlier cohorts taught vector search differently. See the archived
materials for the 2024 and
2025 cohorts.

Notes


File: cohorts/2025/README.md

LLM Zoomcamp 2025 Edition

Important links:

Module 1: Introduction to LLMs and RAG

Module 2: Vector Search

Workshop: dlt

Module A: Agents

Module 3: Evaluation


File: cohorts/2024/competition/README.md

LLM Zoomcamp 2024 Competition

In the competition, you need to use LLMs to solve high school mathematics problems.
Your task is to develop models that can accurately solve these problems and submit your predictions.

For more details, visit the competition page.

Getting started

Getting started code: starter_notebook.ipynb

You will need to install langchain for this code:

bash
pip install -qU langchain-openai langchain

Thanks Blaq for contibuting the notebook!

Note that the solution is not deterministic: when you run
it again on the same record, sometimes the solution is different
from the initial run.

Which might be more a feature than a bug:
what if you run it multuple times and get the majority vote?

Community solutions

Evaluation

We use accuracy as the evaluation metric. Sometimes multiple
answers are correct. In this case, a solution is correct if
it matches at least one of the possible answers.

You can find the code for evaluation in scorer.py - it's taken from kaggle
and this is exactly the code we use in the competition.


File: cohorts/2024/05-orchestration/README.md

Data Preparation in RAG

Getting started

  1. Clone repository
bash
git clone https://github.com/mage-ai/rag-project
cd rag-project
  1. navigate to the rag-project/llm directory, add spacy to the requirements.txt.
  2. Then update the Dockerfile found in the rag-project directory with the following:
yaml
RUN python -m spacy download en_core_web_sm
  1. Run
bash
`./scripts/start.sh`

Once started, go to http://localhost:6789/

For more setup information, refer to these instructions

0. Module overview

1. Ingest

In this section, we cover the ingestion of documents from a single data source.

2. Chunk

Once data is ingested, we break it into manageable chunks.

The Q&A data is already chunked - the texts are small
and easy to process and index. But other datasets might
not be (book texts, transcripts, etc).

In this video, we will talk about turning large texts
into smaller documents - i.e. chunking.

Code

3. Tokenization

Tokenization is a crucial step in text processing and preparing the data for effective retrieval.

Code

4. Embed

Embedding data translates text into numerical vectors that can be processed by models.

Previously we used sentence transformers for that. In this video we show a different strategy for it.

Code

5. Export

After processing, data needs to be exported for storage so that it can be retrieved for better contextualization of user queries.

Here we will save the embeddings to elasticsearch

please make sure to use the name given to your elasticsearch service in your docker compose file followed by the port as the connection string, e.g below

<docker-compose-service-name> http://elasticsearch:9200

Code

6. Retrieval: Test Vector Search Query

After exporting the chunks and embeddings, we can test the search query to retrieve relevant documents on sample queries.

Code

7. Trigger Daily Runs

Automation is key to maintaining and updating your system.
This section demonstrates how to schedule and trigger daily runs for your data pipelines, ensuring up-to-date and consistent data processing.

Homework

See here.

Notes

2. Official Technical Reference & Guides (DataTalksClub/docs)

DataTalks.Club Zoomcamps Notes

This website is currently under development and contains community-contributed notes and resources. Content is being actively added and improved by DataTalks.Club community.

Course Duration Next Cohort Description Register Repository
Machine Learning Zoomcamp 16 weeks September 15, 2025 ML engineering with deployment focus covering regression, classification, deep learning, and practical projects Register
AI Dev Tools Zoomcamp 6 weeks November 18, 2025 Modern AI development tools and workflows for building, testing, and deploying AI applications Register
Data Engineering Zoomcamp 9 weeks January 2026 Complete data engineering bootcamp covering Docker, SQL, Terraform, GCP, Kafka, and Spark Register
MLOps Zoomcamp 12 weeks โ€“ Production ML systems & best practices including experiment tracking, model deployment, and monitoring Register
LLM Zoomcamp 10 weeks June 2026 Large Language Models course covering fine-tuning, RAG systems, and LLM application development Register
Stock Market Analytics Zoomcamp 8 weeks April 2026 Financial data analysis and algorithmic trading strategies using Python and modern analytics tools Register

Running Locally

This site is built with Rustkyll. To run it locally:

bash
make install   # Install dependencies (first time only)
make serve     # Start the development server at http://localhost:4000

Available make targets:

  • make help - Show all available targets
  • make install - Download the pinned Rustkyll release binary
  • make serve - Start the Rustkyll development server
  • make serve-livereload - Start server with live reload
  • make build - Build the site for production
  • make clean - Remove generated files and caches

Manual commands

bash
mkdir -p .bin
curl -fsSL -o .bin/rustkyll https://github.com/alexeygrigorev/rustkyll/releases/download/v0.4.6/rustkyll-linux-amd64
chmod +x .bin/rustkyll
.bin/rustkyll serve

What's in this Repository

  • Course Notes: Detailed notes from each course session
  • Resources: Links to datasets, tools, and materials
  • Tips & Tricks: Best practices and helpful hints
  • Examples: Sample projects and implementations

About DataTalks.Club

DataTalks.Club of the biggest global online community of data enthusiasts with more than 79,000 members. We organize free online events, courses, and other community activities.

All the activity at DataTalks.Club mainly happens on Slack. We post updates there and discuss different aspects of data, career questions, and more.

At DataTalksClub, we organize online events, community activities, and free courses. You can learn more about what we do at DataTalksClub Community Navigation.

Contributing

We welcome contributions from the community! You can help by:

  • Reporting Issues: Found an error or broken link? Let us know
  • Improving Content: Submit pull requests with corrections or enhancements
  • Adding Notes: Share your own course notes and insights
  • Answering Questions: Help fellow learners in discussions

How to Contribute

  1. Fork this repository
  2. Create a new branch for your changes
  3. Make your improvements
  4. Submit a pull request with a clear description

Contact