diff options
| author | Paul Buetow <paul@buetow.org> | 2025-12-24 09:47:03 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-12-24 09:47:03 +0200 |
| commit | 5b9df6aa49b806b23fc36c8bef443f563744671b (patch) | |
| tree | d7bc49c3747c6771d0ceb59dfa2b65389e31e734 /gemfeed | |
| parent | d35af06aa48a513283d3461a1424ddf32722e0b5 (diff) | |
Update content for md
Diffstat (limited to 'gemfeed')
| -rw-r--r-- | gemfeed/2025-12-24-x-rag-observability-hackathon.md (renamed from gemfeed/DRAFT-x-rag-observability-hackathon.md) | 34 | ||||
| -rw-r--r-- | gemfeed/index.md | 1 |
2 files changed, 19 insertions, 16 deletions
diff --git a/gemfeed/DRAFT-x-rag-observability-hackathon.md b/gemfeed/2025-12-24-x-rag-observability-hackathon.md index ad8e7c78..bcc23ef9 100644 --- a/gemfeed/DRAFT-x-rag-observability-hackathon.md +++ b/gemfeed/2025-12-24-x-rag-observability-hackathon.md @@ -1,5 +1,7 @@ # X-RAG Observability Hackathon +> Published at 2025-12-24T09:45:29+02:00 + This blog post describes my hackathon efforts adding observability to X-RAG, a distributed Retrieval-Augmented Generation (RAG) platform built by my brother Florian. I especially made time available over the weekend to join his 3-day hackathon (attending 2 days) with the goal of instrumenting his existing distributed system with observability. What started as "let's add some metrics" turned into a comprehensive implementation of the three pillars of observability: tracing, metrics, and logs. [X-RAG source code on GitHub](https://github.com/florianbuetow/x-rag) @@ -46,7 +48,7 @@ This blog post describes my hackathon efforts adding observability to X-RAG, a d ## What is X-RAG? -X-RAG is a distributed RAG (Retrieval-Augmented Generation) platform running on Kubernetes. The idea behind RAG is simple: instead of asking an LLM to answer questions from its training data alone, you first retrieve relevant documents from your own knowledge base, then feed those documents to the LLM as context. The LLM synthesises an answer grounded in your actual content—reducing hallucinations and enabling answers about private or recent information the model was never trained on. +X-RAG is the extendendible RAG (Retrieval-Augmented Generation) platform running on Kubernetes. The idea behind RAG is simple: instead of asking an LLM to answer questions from its training data alone, you first retrieve relevant documents from your own knowledge base, then feed those documents to the LLM as context. The LLM synthesises an answer grounded in your actual content—reducing hallucinations and enabling answers about private or recent information the model was never trained on. X-RAG handles the full pipeline: ingest documents, chunk them into searchable pieces, generate vector embeddings, store them in a vector database, and at query time, retrieve relevant chunks and pass them to an LLM for answer generation. The system supports both local LLMs (Florian runs his on a beefy desktop) and cloud APIs like OpenAI. I configured an OpenAI API key since my laptop's CPU and GPU aren't fast enough for decent local inference. @@ -68,15 +70,15 @@ The data layer includes Weaviate (vector database with hybrid search), Kafka (me ``` ┌─────────────────────────────────────────────────────────────────────────┐ -│ X-RAG Kubernetes Cluster │ +│ X-RAG Kubernetes Cluster │ ├─────────────────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Search UI │ │Search Svc │ │Embed Service│ │ Indexer │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ └────────────────┴────────────────┴────────────────┘ │ -│ │ │ -│ ▼ │ +│ │ │ +│ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Weaviate │ │ Kafka │ │ MinIO │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ @@ -105,7 +107,7 @@ The `kindest/node` image contains everything needed: kubelet, containerd, CNI pl ``` ┌─────────────────────────────────────────────────────────────────────────┐ -│ Docker Host │ +│ Docker Host │ ├─────────────────────────────────────────────────────────────────────────┤ │ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ │ │ xrag-k8-control │ │ xrag-k8-worker │ │ xrag-k8-worker2 │ │ @@ -190,19 +192,19 @@ Getting all logs in one place was the foundation. I deployed Grafana Loki in the ``` ┌──────────────────────────────────────────────────────────────────────┐ -│ LOGS PIPELINE │ +│ LOGS PIPELINE │ ├──────────────────────────────────────────────────────────────────────┤ │ Applications write to stdout → containerd stores in /var/log/pods │ -│ │ │ -│ File tail │ -│ ▼ │ -│ Grafana Alloy (DaemonSet) │ -│ Discovers pods, extracts metadata │ -│ │ │ -│ HTTP POST /loki/api/v1/push │ -│ ▼ │ -│ Grafana Loki │ -│ Indexes labels, stores chunks │ +│ │ │ +│ File tail │ +│ ▼ │ +│ Grafana Alloy (DaemonSet) │ +│ Discovers pods, extracts metadata │ +│ │ │ +│ HTTP POST /loki/api/v1/push │ +│ ▼ │ +│ Grafana Loki │ +│ Indexes labels, stores chunks │ └──────────────────────────────────────────────────────────────────────┘ ``` diff --git a/gemfeed/index.md b/gemfeed/index.md index ee3e8b1d..786c6e03 100644 --- a/gemfeed/index.md +++ b/gemfeed/index.md @@ -2,6 +2,7 @@ ## To be in the .zone! +[2025-12-24 - X-RAG Observability Hackathon](./2025-12-24-x-rag-observability-hackathon.md) [2025-12-07 - f3s: Kubernetes with FreeBSD - Part 8: Observability](./2025-12-07-f3s-kubernetes-with-freebsd-part-8.md) [2025-11-02 - 'The Courage To Be Disliked' book notes](./2025-11-02-the-courage-to-be-disliked-book-notes.md) [2025-11-02 - Perl New Features and Foostats](./2025-11-02-perl-new-features-and-foostats.md) |
