[Gonothi] Evaluating RAG systems and other tools #154
Labels
No labels
state
ready for review
function
analytics
function
communications
function
docs
function
events
function
onboarding
function
operations
good first issue
help wanted
needs
changes
needs
reporter feedback
needs
team vote
needs
triage
scope
bug
scope
improvement
scope
new
state
approved
state
blocked
state
duplicate
state
invalid
state
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
Dependencies
No dependencies set.
Reference
commops/interns#154
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Learn more about different tools that can help with RAG evaluations, finding the right models for your system, CPU/GPU usage statistics, scaling ML workloads etc.
Background
We are building RAG systems for this internship, and we need a consistent way to evaluate the quality and effectiveness of what has been developed. Also explore other tools that may (or may not) help with the project.
Deliverables
This issue is not about implementing/integrating any of the tools yet. It's about exploration and discovery to determine which ones are actually useful, and if so, what needs to be done to include them in the project (the implementation will be carried out in future Sprints).
Share your findings as comments in this issue as you progress through the list.
Summary
Understand the different tools, the value they provide, and integrate those that can positively impact the project.
[Gonothi] Evaluating RAG systemsto [Gonothi] Evaluating RAG systems and other toolsHello, @cybette! I am sharing some progress on exploring the RAG evaluation tools:
"Evals for RAG & Memory" YouTube video — watched it, and it was a helpful primer on why RAG evaluation needs its own approach versus standard model evals. The framing of separating retrieval quality from generation quality was the part that stuck with me — it maps directly onto issues I saw in my own pipeline, where a wrong answer can come either from bad retrieval or from the model mishandling good context.
RAGAS — spent some time exploring this one. It starts off as an evals framework for RAG systems, and it has since grown to also cover evaluating AI agents. It looks like a strong fit for measuring our editorial assistant — metrics like faithfulness and context relevance would let me quantify how well the retrieved guidelines actually ground each review, rather than just eyeballing the outputs as I've been doing so far.
Arize Phoenix (additional tool: https://github.com/sagecodes/ai-build-and-learn/tree/main/topics/arize-phoenix) — I came across this one and think it could be valuable for the project. It's an LLM observability tool that's also relevant for tracing what the model does with the retrieved context, which complements RAGAS nicely (RAGAS for scoring, Phoenix for seeing why). I've registered for a session on it on June 12 and will report back here with what I learn.
Next, I'll look into the remaining items on the list (DeepEval, the Metrik/llmlit references, and Ray) and add findings as I go. Happy to discuss the relevance of Ray for the project with @dominikkawka when there's a good time.
Assisted-by: Claude Opus 4.8
Summary: PyData London 2026 — "The Silent Crash" (Hitendri Bomble)
I read through this talk as part of the RAG evaluation exploration. It argues that traditional NLP metrics fail at evaluating RAG systems, and proposes a more robust framework built on LLM-as-a-judge plus adversarial testing.
Main points
Section summaries
Key concepts
Relevance to our project
This maps directly onto the editorial assistant: the retrieval vs. generation split is exactly the distinction I'd want when debugging why a draft review goes wrong (did it fail to retrieve the right guideline, or did it have the guideline and still misjudge?). Faithfulness and Context Recall are strong candidate metrics, and both RAGAS and DeepEval (already on the eval shortlist) implement them — so this reinforces the direction in the evaluation issue.
Source: PyData London 2026 — "The Silent Crash" (Hitendri Bomble).
Assisted-by: Claude Opus 4.8
Hello, @cybette! In addition to waiting for Hitendri Bomble's contact information, I sent her a LinkedIn connection request, which she generously accepted. Just wanted to let you know about this, and I will await the details before checking off the corresponding item in the issue checklist.
RAGAS vs. DeepEval — comparison for our RAG evaluation
I checked out both frameworks (vibrantlabsai/ragas and confident-ai/deepeval) as candidates for evaluating the editorial assistant. Both are open-source (Apache-2.0), Python, and actively maintained. Here's how they compare.
Side-by-side
RAGAScomposite metric)deepeval test run, plugs into any CI/CDHow each fits our project
RAGAS is the more focused, RAG-native option. Its metrics map cleanly onto what we care about — Faithfulness (are the review's claims grounded in the retrieved guideline?) and Context Recall/Precision (did we retrieve the right guideline chunks?). The built-in test-set generation is appealing since we don't yet have a labeled eval set of draft → expected-review pairs.
DeepEval is broader and more engineering-oriented. The Pytest-style workflow (
deepeval test run) and first-class CI/CD fit nicely with the idea of running evals automatically when the corpus or guidelines change (ties into the rebuild-trigger discussion). It also offers G-Eval for custom criteria — useful because our editorial checks (tone, structure, required elements like featured image / Read More tag) are bespoke and don't map to a stock metric. Notably, DeepEval even ships aRAGAScomposite metric, so it can run RAGAS-style scoring within its own harness.My recommendation
They're complementary rather than mutually exclusive:
If we want to start with one, I'd lean DeepEval first — the custom-criteria support (G-Eval) matches our bespoke editorial checks, it runs locally (important given our hardware constraints and the open-weight, local-first direction), and it can reproduce RAGAS metrics anyway. We can layer in RAGAS's test-set generation afterward.
Next step (if useful): stand up a tiny eval harness with ~5–10 of the good/bad reference articles as test cases and run both on the same set to compare scores directly.
Sources: vibrantlabsai/ragas, confident-ai/deepeval.
Assisted-by: Claude Opus 4.8
Dear mentor, @cybette, I explored llmfit, a terminal tool (TUI) that scans your hardware and tells you which local LLMs will actually run on your machine, and how well. It's directly useful for picking models for the editorial assistant, given our hardware constraints before GPU provision.
What it does:
On my machine (Intel Core Ultra 5 125H, 18 cores, ~24 GB RAM available out of the ~32GB total, Intel Arc shared GPU via SYCL), it lists 4317 of 4319 models and marks the realistic ones as "Good" fit — letting me sort by score and immediately see what's runnable vs. what would overflow memory.
Why it's relevant to us:
Screenshot of the llmfit TUI attached below.
Assisted-by: Claude Opus 4.8
I also looked into Ray and the KubeRay GPU guide as options for scaling ML workloads when we move to cluster hardware.
Ray (ray-project/ray) — an open-source distributed compute engine for ML/AI (~42.8k stars, Apache-2.0). It has a core distributed runtime plus AI libraries (Ray Data, Train, Tune, Serve) for parallelizing Python/ML workloads across many CPUs/GPUs and machines. Relevant to us for scaling: things like running benchmarks/evals over many models in parallel, or serving the RAG model across multiple replicas, rather than one-at-a-time on a single laptop.
KubeRay GPU guide (docs.ray.io) — KubeRay is the operator that runs Ray clusters on Kubernetes. The GPU guide covers requesting GPUs for Ray pods (via
nvidia.com/gpuresource limits), scheduling GPU vs CPU worker groups, and autoscaling GPU nodes on demand. This maps directly onto our OpenShift/Communishift path — it's how you'd give a Ray workload GPU access on a Kubernetes/OpenShift cluster.Relevance to the project:
Sources: ray-project/ray, KubeRay GPU usage guide.
Assisted-by: Claude Opus 4.8
Metrix is the Digital Research Alliance of Canada's monitoring/metrics tool, with a Cloud statistics view that reports resource usage (CPU, GPU, memory, storage) on Alliance cloud projects.
What it offers us: a way to track utilization on Alliance/DRAC cloud resources. This is useful for understanding GPU/CPU consumption and right-sizing if any of our scaled workloads run on Alliance infrastructure. Given my DRAC background, this is a familiar avenue for compute monitoring.
Relevance: more of a compute-monitoring option than a RAG-eval tool, it answers "how much GPU/CPU is my workload using" rather than "how good is my RAG output." Worth keeping in mind for the scaling phase if we use Alliance cloud resources, but not central to the editorial-assistant evaluation work or the main project. Lower priority than the eval frameworks (RAGAS/DeepEval).
Assisted-by: Claude Opus 4.8
Docs2DB (from RHEL Lightspeed) builds a RAG database from documents. Its pipeline is a clear set of CLI steps:
ingest → chunk → embed → load, producing a PostgreSQL + pgvector database and a portable SQL dump others can restore. Notably, it also uses Docling internally (it converts documents to Docling JSON on ingest), which is the same converter RamaLama'sdoc2ragrelies on.How it compares to RamaLama's
doc2rag:.sqldumpramalama ragTakeaway: Both wrap Docling and produce a RAG store. The key difference is the artifact: docs2db ships a Postgres/pgvector dump, while doc2rag ships an OCI image. Our project is already container/Quay-aligned, so
doc2ragremains the natural fit, but docs2db is worth knowing as the Postgres/pgvector alternative (and it's directly relevant to the Fedora Docs RAG work below).Assisted-by: Claude Opus 4.8
FedoraDocsRAG provides a ready-to-use, vectorized database of Fedora documentation (Quick Docs, Sysadmin Guide, CoreOS, Silverblue, and more) for semantic search and RAG-powered Q&A. It's built using docs2db, rebuilt when upstream docs change, and distributed as a downloadable SQL dump.
Usage is simple: download the dump, restore it, and query:
Relevance to us: It's a concrete, working example of the docs2db pipeline applied to Fedora documentation specifically, essentially a parallel to what we're doing, but for general Fedora docs rather than editorial guidelines, and producing a pgvector DB rather than an OCI image. Good reference for how a Fedora-wide RAG corpus is assembled and kept up to date (the "rebuilt when upstream changes" point echoes our own rebuild-trigger discussion). There's also a Fedora Magazine article walking through it end to end.
Assisted-by: Claude Opus 4.8
This proposal (Fedora-Join#337) is about an onboarding Matrix bot that would answer newcomer questions using a RAG backend built from docs2db + FedoraDocsRAG, for instance, grounding the bot's answers in actual Fedora documentation rather than a bare LLM.
Relevance to us: it's the same building blocks (Docling-based ingestion → vector store → RAG Q&A) applied to a community-onboarding use case, and it shows where this tooling is heading inside Fedora. Two useful angles for our work:
Status: exploration only, not something to integrate now, but worth tracking as related work in the Fedora RAG space.
Assisted-by: Claude Opus 4.8
@gtfrans2re wrote in #154 (comment):
Virtually met today with Hitendri, as suggested by @cybette, to discuss RAG evaluation approaches and tools. She recommended testing both RAGAS and DeepEval on the mini-project and shared guidance on evaluation considerations based on her presentation. She also mentioned that she is preparing a GitHub repository with a step-by-step guide for evaluating RAG systems, which she plans to share once completed. Follow-up is available if questions arise during implementation.
Takeaway: Explore and compare RAGAS and DeepEval for the mini-project evaluation workflow, and leverage the upcoming evaluation guide as a reference for best practices.
Assisted-by: Claude Opus 4.8
Closing: Evaluation phase complete
The RAG tool evaluation tracked here is done. @gtfrans2re has explored the relevant tools and systems, and the findings from this work inform the implementation phase now tracked in #160 and #161. Closing to reduce project bloat and keep focus on active deliverables.
Assisted-by: Claude Opus 4.6 (1M context)
Thanks for the update, @jflory7! It was great exploring these RAG tools and mapping out what works best for our needs. I am glad the findings provided a solid foundation for the next steps.