Events

Community Events & Workshops

Join live workshops, coding sessions, and community activities. Register for upcoming events or watch recordings of past ones.

List Calendar
Subscribe to all events
Add to Google Calendar Add to Apple Calendar

Use this URL in Outlook or any calendar app.

Filtered by: rag Clear

Past recordings

Workshop

Building AI Agents with MCP, PydanticAI and OpenAI

We build a course FAQ assistant from the bottom up. First we expose a plain Python `search(query)` function to the OpenAI Responses API. Then we turn the same idea into a reusable agent loop, compare `toyaikit`, OpenAI Agents SDK, and PydanticAI, and finally move the FAQ tools behind an MCP server that can be used from a notebook, PydanticAI, Cursor, and VS Code. ## Links The main resources: - [AI Bootcamp: From RAG to Agents](https://maven.com/alexey-grigorev/from-rag-to-agents) - [Prerequisite workshop: Building a Coding Agent](/events/building-coding-agent-python-django) - [Data Engineering Zoomcamp FAQ source document](https://docs.google.com/document/d/19bnYs80DwuUimHM65UV3sylsCn2j1vziPOwzBwQrebw/edit?tab=t.0) - [Parsed FAQ JSON](https://github.com/alexeygrigorev/llm-rag-workshop/blob/main/notebooks/documents.json) - [FAQ parsing notebook](https://github.com/alexeygrigorev/llm-rag-workshop/blob/main/notebooks/parse-faq.ipynb) ## The system you will build The final setup looks like this: ```mermaid flowchart LR NOTEBOOK["Jupyter notebook"] OPENAI["OpenAI Responses API"] FRAMEWORKS["Agents SDK<br/>PydanticAI"] MCPCLIENT["MCP clients<br/>toyaikit, PydanticAI, Cursor"] MCPSERVER["FastMCP server<br/>SSE or stdio"] TOOLS["FAQ tools<br/>search, add_entry"] INDEX["minsearch index<br/>FAQ JSON"] NOTEBOOK -->|function calling| OPENAI NOTEBOOK --> FRAMEWORKS FRAMEWORKS -->|tool calls| TOOLS NOTEBOOK -->|MCP client| MCPCLIENT MCPCLIENT -->|MCP protocol| MCPSERVER MCPSERVER --> TOOLS TOOLS --> INDEX ``` The FAQ data comes from the Data Engineering Zoomcamp FAQ. The first half of the workshop keeps the tools inside the notebook so you can see the agent loop directly. The second half moves the same tools into `mcp_faq/`, which makes them reusable by any MCP client.

September 01, 2025
Workshop

Build Your Own Search Engine

We build a search engine from scratch over DataTalks.Club Zoomcamp FAQ documents, starting with TF-IDF text search, adding cosine similarity and field boosting, then moving through SVD/LSA and BERT embeddings to vector search. The `TextSearch` class built during the workshop became the basis for the [minsearch](https://github.com/alexeygrigorev/minsearch) library used in later RAG and agent workshops. What we cover: - TF-IDF text search with sklearn, cosine similarity, field boosting and keyword filtering - A reusable `TextSearch` class (the foundation of minsearch) - Vector search using SVD and NMF embeddings - BERT embeddings for semantic search that respects word order Originally delivered at a [DataTalks.Club](https://www.youtube.com/@DataTalksClub) live session in 2024, updated in 2026 with refreshed examples and tooling. ## Links Resources not included in the workshop materials list: - [DataTalks.Club YouTube channel](https://www.youtube.com/@DataTalksClub) ## The search engine you will build The workshop covers two approaches to search over the same FAQ data: ```mermaid flowchart LR DOCS["FAQ documents<br/>DE/ML/MLOps Zoomcamp"] TEXT["Text search<br/>TF-IDF + cosine similarity<br/>field boosting + filtering"] VEC["Vector search<br/>SVD / NMF / BERT embeddings<br/>cosine similarity"] CLASS["TextSearch class<br/>(became minsearch)"] DOCS --> TEXT DOCS --> VEC TEXT --> CLASS VEC --> CLASS ``` Text search uses TF-IDF vectorization with field boosting (question weight 3x) and keyword filtering. Vector search replaces sparse representations with dense embeddings (SVD, NMF, then BERT) to handle synonyms and word order. The `TextSearch` class combines TF-IDF across multiple fields with boost weights and keyword filters, and later became the [minsearch](https://github.com/alexeygrigorev/minsearch) library.

May 21, 2024