Why Data, Not the Model, Determines RAG Quality

â–¶ Watch (0:03)

The workshop opened with a direct claim: the model is not the differentiator. Whether you run Claude or a self-hosted open source model, the data behind the application determines whether it is useful. The use case was a hypothetical insurance company called Parasel, which wanted to query ServiceNow tickets and critical documentation through an AI ops chat system to reduce ticketing load. PDFs, meeting minutes, and financial documents are examples of the locked-away sources RAG makes queryable.

From PDF Upload to KubeFlow Pipeline: The Event-Driven Architecture

â–¶ Watch (7:32)

Natale Vinto walked through the enterprise event pattern. A user uploads a PDF to MinIO, an open source object store. MinIO fires a Kafka event. KNative Eventing, the serverless layer on Kubernetes, catches the event via a Kafka broker and source, then triggers a KubeFlow pipeline. The demo confirmed this live: uploading the example PDF at roughly the 32-minute mark produced a visible pipeline run inside KubeFlow labeled as an S3 trigger, with the full data ingestion and embedding steps completing without manual intervention.

Vector Embeddings and Milvus: Turning Text into Searchable Numbers

â–¶ Watch (10:40)

Legare Kerrison explained the vector database step. Every piece of text converts to a number representing semantic meaning. Words grouped near each other are semantically similar. This lets the system search millions of documents in seconds. The workshop used a single shared Milvus instance across all users on the cluster. For production, the instructors noted strict multi-tenancy, one MinIO, one Kafka, and one Milvus per namespace, as the correct isolation model.

Dockling, KServe, and LangChain: Serving the Model and Wiring It Together

â–¶ Watch (9:22)

Dockling, a Linux Foundation project, converted PDFs to structured markdown or JSON for the pipeline. KServe handled model deployment, with vLLM as the serving runtime behind an OpenAI-compatible completions endpoint at v1/completions. LangChain then connected Milvus and the model, retrieving the top semantically similar document chunks and adding them as context to the user’s prompt. JupyterHub ran all the Python cells inside containers on OpenShift AI, removing dependency conflicts entirely.

Workshop Structure: Two Units Across 500 Seats on 20 Clusters

â–¶ Watch (12:54)

Christopher Nuland guided participants through two units. Unit 2 covered the API-to-RAG pipeline, pulling from a ServiceNow-style ticket system, and took roughly 45 minutes. Unit 3 covered the event-driven Kafka integration and took 35 to 40 minutes. The lab ran fully web-based across 20 OpenShift clusters with 500 provisioned seats. An AI assistant with a Kubernetes MCP server was embedded in the lab to help troubleshoot failing pods. The clusters stayed live all day, and all tutorial content, scripts, and deployment GitOps repos remained available on GitHub after the session.

Notable Quotes

the data is the key differentiator between if your application is going to be useful or not Cedric Clyburn · ▶ 02:55

we’re showing you how you can fully automate your data science pipeline for rag uh with with an event like Kafka Natale Vinto · ▶ 08:52

we can search millions of documents in seconds Legare Kerrison · ▶ 11:15

the name especially of the Kafka pipeline is very critical because that’s how the broker for Kafka triggers the data science pipeline Christopher Nuland · ▶ 52:26

Key Takeaways

  • RAG quality depends on source data quality, not on the choice of LLM.
  • Uploading a PDF to MinIO triggers a Kafka event that fires a KubeFlow pipeline automatically.
  • Dockling converts PDFs to structured embeddings; Milvus stores them for semantic retrieval.
  • KServe plus vLLM serves models behind a standard OpenAI completions endpoint.
  • The Kafka pipeline name must match exactly or the broker will not trigger the data science pipeline.

About the Speaker(s)

Cedric Clyburn is a Senior Developer Advocate at Red Hat with a background in Kubernetes, DevOps, and container tools. He contributes to open source projects including Podman and vLLM.

Natale Vinto is a Technical Director in the Hybrid Platforms BU at Red Hat with over ten years of experience across telecommunications, DevOps, and Linux. He is the author of “Modernizing Enterprise Java,” “GitOps Cookbook,” and “Applied AI for Java Enterprise Development” for O’Reilly.

Christopher Nuland is a Principal Technical Marketing Manager for AI at Red Hat, where he has worked for over six years. He focuses on machine learning and big data analytics for finance and agriculture sector customers.