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

Language Model Used
Hindi sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
Marathi l3cube-pune/marathi-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.2.tar.gz (14.2 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.2-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bharatrag-0.1.2.tar.gz
  • Upload date:
  • Size: 14.2 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.2.tar.gz
Algorithm Hash digest
SHA256 3336645332e14be4e0c8edeef6a14b10731b3afdc080b937523805b16e83ec2f
MD5 3b0fe88eec2eed7ba3abd233606d785a
BLAKE2b-256 86997d9b916c13afa32cb67d0ad3797a242094261c53a834803c27e0c0a2405a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: bharatrag-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 196686f85b8260b279d20893dd65cef99a826ddda74482d036d085a25337efae
MD5 c28fd9835bdab305ee36c69a5531fafa
BLAKE2b-256 e0bd9792dd43cb0a8f104da5d8e9b4ea8d342304b9c498b457bc88879434c3fb

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