Skip to main content

RAG evaluation library for Indian languages (Hindi, Marathi)

Project description

bharatrag

Open-source RAG evaluation library for Indian languages (Hindi, Marathi). pip install bharatrag

BharatRAG 🇮🇳

RAG Evaluation Library for Indian Languages

Python 3.9+ License: MIT CI GitHub

BharatRAG is the first open-source RAG evaluation library built specifically for Indian languages (Hindi and Marathi).

Existing tools like RAGAS are built and tested on English data. BharatRAG fills the gap — giving developers a reliable way to measure RAG quality in Indic languages.


The Problem

RAG (Retrieval Augmented Generation) systems are being deployed across India for:

  • Government scheme chatbots (PM Kisan, Ayushman Bharat)
  • Health information systems in regional languages
  • EdTech platforms for vernacular learners
  • Banking and insurance customer support

But there is no standard way to evaluate whether these systems are actually working correctly in Hindi, Marathi, or other Indian languages.

RAGAS — the most popular RAG evaluation tool — uses English-first embedding models that produce unreliable scores for Indic text.

BharatRAG solves this.


What it measures

BharatRAG computes the RAG Triad in Hindi and Marathi:

Metric Question it answers
Context Relevance Did we retrieve the right documents?
Groundedness Is the answer based on the context, or hallucinated?
Answer Relevance Does the answer actually address the question?

Benchmark Results

BharatRAG evaluated on 20 Hindi + Marathi QA pairs across government schemes, health, and agriculture domains:

Metric Hindi ✅ Correct Hindi ❌ Hallucinated Marathi ✅ Correct Marathi ❌ Hallucinated
Context Relevance 0.4793 0.4793 0.4327 0.4327
Groundedness 0.9167 0.7000 0.9667 0.2000
Answer Relevance 0.6221 0.5417 0.5072 0.2959
Overall 0.6727 0.5737 0.6355 0.3095

BharatRAG correctly scores hallucinated answers lower than correct answers in both languages. Marathi hallucination detection shows a 2x difference in overall score (0.6355 vs 0.3095).


Installation

pip install bharatrag

Quick Start

from bharatrag import evaluate

results = evaluate(
    questions=["पीएम किसान योजना में कितने रुपये मिलते हैं?"],
    contexts=[[
        "पीएम किसान सम्मान निधि योजना के तहत किसानों को",
        "प्रति वर्ष 6000 रुपये तीन किश्तों में मिलते हैं।"
    ]],
    answers=["पीएम किसान योजना में किसानों को 6000 रुपये मिलते हैं।"],
    language="hindi"
)

print(results)
# {
#   'context_relevance': 0.72,
#   'groundedness': 1.0,
#   'answer_relevance': 0.66,
#   'overall': 0.79,
#   'language': 'hindi',
#   'num_questions': 1
# }

Marathi support

results = evaluate(
    questions=["पीएम किसान योजनेत किती रुपये मिळतात?"],
    contexts=[[
        "पीएम किसान सन्मान निधी योजनेंतर्गत शेतकऱ्यांना",
        "दरवर्षी 6000 रुपये तीन हप्त्यांमध्ये मिळतात."
    ]],
    answers=["पीएम किसान योजनेत 6000 रुपये मिळतात."],
    language="marathi"
)

Individual metrics

from bharatrag.metrics.context_relevance import ContextRelevance
from bharatrag.metrics.groundedness import Groundedness
from bharatrag.metrics.answer_relevance import AnswerRelevance

cr = ContextRelevance(language="hindi")
score = cr.score(
    question="भारत की राजधानी क्या है?",
    contexts=["भारत की राजधानी नई दिल्ली है।"]
)
print(score)  # 0.61

Supported Languages

| Hindi | sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | | Marathi | l3cube-pune/marathi-sentence-bert-nli | | Tamil | l3cube-pune/tamil-sentence-bert-nli | | English | sentence-transformers/all-MiniLM-L6-v2 |

More languages coming soon — Tamil, Bengali, Gujarati.


Benchmark Dataset

BharatRAG ships with a hand-curated benchmark dataset of 20 Hindi + Marathi QA pairs across:

  • Government schemes (PM Kisan, Ayushman Bharat, Jan Dhan, Ujjwala)
  • Health (diabetes, sanitation)
  • Agriculture (wheat sowing, crop insurance)
  • Education (Mid Day Meal, Beti Bachao)

Each example includes a correct answer and a hallucinated answer for evaluation testing.

Dataset location: data/benchmark.json


Project Structure

bharatrag/ ├── bharatrag/ │ ├── init.py # evaluate() function │ ├── embeddings/ │ │ └── indic_embeddings.py # Indic embedding models │ └── metrics/ │ ├── context_relevance.py # Metric 1 │ ├── groundedness.py # Metric 2 │ └── answer_relevance.py # Metric 3 ├── data/ │ └── benchmark.json # 20 Hindi+Marathi QA pairs ├── tests/ │ └── test_metrics.py # 21 pytest tests └── examples/ └── run_benchmark.py # Benchmark runner


Running Tests

pip install -e ".[dev]"
pytest tests/ -v

Tests run automatically on every PR via GitHub Actions.


Why BharatRAG?

Feature RAGAS BharatRAG
English RAG evaluation
Hindi RAG evaluation ❌ Unreliable
Marathi RAG evaluation ❌ Not supported
Indic benchmark dataset
Free, no API key needed

Roadmap

  • Hindi support
  • Marathi support
  • 20-example benchmark dataset
  • Tamil support
  • Bengali support
  • 100-example benchmark dataset
  • LangChain integration
  • LlamaIndex integration
  • HuggingFace Spaces demo

Author

Pradnya Gundu B.E. Artificial Intelligence & Data Science, APCOER Pune


License

MIT License — free to use, modify, and distribute.


Contributing

Contributions welcome! See CONTRIBUTING.md for setup, code style, and what we're looking for.

Especially looking for:

  • New Indian language support
  • More benchmark QA pairs
  • Integration with LangChain/LlamaIndex
  • Test coverage improvements

Open an issue or submit a PR on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bharatrag-0.1.3.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bharatrag-0.1.3-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file bharatrag-0.1.3.tar.gz.

File metadata

  • Download URL: bharatrag-0.1.3.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.13

File hashes

Hashes for bharatrag-0.1.3.tar.gz
Algorithm Hash digest
SHA256 11457bac0098037617a74334904d5dff2a7878ee1f45ba3a379beab6a469d65f
MD5 2b12a58d6693119863a382408e34009c
BLAKE2b-256 13144f0e54cf3fc101e4c5e31c98ef2f8b781b35bc19f1e42629948b9480e719

See more details on using hashes here.

File details

Details for the file bharatrag-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: bharatrag-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.13

File hashes

Hashes for bharatrag-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 da06f1a7f42f0501ac3c31316c910ca02c30f911db2a3ea0a1380d28c0c6ca95
MD5 ecd3bce7c568b54f52295907e57ce869
BLAKE2b-256 517a705953587b7ce54aac34ea2b2b86a60732d35b9a53e43a1c0e57e6f6af6d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page