Catalog PyPI
Back to packageRELEASE DETAILS

0.6.0

PyPI

aidial-rag-eval

Library for RAG evaluation

ai
Published15 May 2026
Direct dependencies10
Transitive dependenciesNot calculated

README

Version 0.6.0 documentation

AI DIAL RAG EVAL

PyPI version

Overview

Library designed for RAG (Retrieval-Augmented Generation) evaluation, where retrieval and generation metrics are calculated.

Usage

Install the library using pip:

pip install aidial-rag-eval

spaCy language model

The generation metrics require the English language model for spaCy. Download it after installation:

python -m spacy download en_core_web_sm

Alternatively, you can install the model directly via URL:

pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl

Or as a Poetry dependency:

en-core-web-sm = {url = "https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl"}

Example

The example of how to get retrieval metrics along with answer inference based on the context.

import pandas as pd
from langchain_openai import AzureChatOpenAI
from aidial_rag_eval import create_rag_eval_metrics_report
from aidial_rag_eval.metric_binds import CONTEXT_TO_ANSWER_INFERENCE,\
    ANSWER_TO_GROUND_TRUTH_INFERENCE, GROUND_TRUTH_TO_ANSWER_INFERENCE,\
    ANSWER_TO_FACTS_INFERENCE, FACTS_TO_ANSWER_INFERENCE

llm = AzureChatOpenAI(model="gemini-2.5-flash-lite")

df_ground_truth = pd.DataFrame([
    {
        "question": "What is the diameter of the Earth and the name of the biggest ocean?",
        "documents": ["earth.pdf"],
        "facts": ["The diameter of the Earth is approximately 12,742 kilometers.", "The biggest ocean on Earth is the Pacific Ocean."],
        "answer": "The Earth's diameter measures about 12,742 kilometers, and the Pacific Ocean is the largest ocean on our planet."
    },])
df_answer = pd.DataFrame([
    {
        "question": "What is the diameter of the Earth and the name of the biggest ocean?",
        "documents": ["earth.pdf"],
        "context":  [
            "The Earth, our home planet, is the third planet from the sun. It's the only planet known to have an atmosphere containing free oxygen and oceans of liquid water on its surface. The diameter of the Earth is approximately 12,742 kilometers.",
            "The Pacific Ocean is the largest and deepest of Earth's oceanic divisions, extending from the Arctic Ocean in the north to the Southern Ocean in the south."
        ],
        "answer": "The Earth has a diameter of approximately 12,742 kilometers."
    },
])

df_metrics = create_rag_eval_metrics_report(
    df_ground_truth,
    df_answer,
    llm=llm,
    metric_binds=[
        CONTEXT_TO_ANSWER_INFERENCE,
        ANSWER_TO_GROUND_TRUTH_INFERENCE,
        GROUND_TRUTH_TO_ANSWER_INFERENCE,
        ANSWER_TO_FACTS_INFERENCE,
        FACTS_TO_ANSWER_INFERENCE,
    ],
)
print(df_metrics[["facts_ranks", "recall", 'precision', 'mrr', 'f1', 'ctx_ans_inference', 'ans_gt_inference', 'gt_ans_inference', 'ans_fct_inference', 'fct_ans_inference']])

It is expected to see the following results:

recallprecisionmrrf1ctx_ans_inferenceans_gt_inferencegt_ans_inferenceans_fct_inferencefct_ans_inference
0.50.50.50.51.00.51.00.51.0

In this table:

  • "recall" of 0.5 indicates that only 1 out of 2 ground truth facts were found in the context.
  • "precision" of 0.5 reflects that just 1 context chunk out of 2 includes any ground truth facts.
  • The prefix of the inference metrics signifies the premise and hypothesis in the following format: premise_hypothesis_inference.
    • "ctx" refers to 'context'
    • "ans" refers to 'answer'
    • "gt" refers to 'ground truth answer'
    • "fct" refers to 'facts'
  • "ctx_ans_inference" of 1.0 means our answer can be fully derived from the context.
  • "ans_gt_inference" of 0.5 means the ground truth answer is only partially entailed by our answer.
  • "gt_ans_inference" of 1.0 means our answer can be fully derived from the ground truth answer.
  • "ans_fct_inference" of 0.5 means only half of the ground truth facts are entailed by our answer (the Pacific Ocean fact is missing).
  • "fct_ans_inference" of 1.0 means our answer can be fully derived from the ground truth facts.

The algorithm is token-intensive. Considering the balance between quality and price, the following models are recommended:

  • gemini-3.1-flash-lite
  • gemini-2.5-flash-lite
  • gpt-5-mini
  • gpt-5-nano
  • gpt-5.4-mini

Developer environment

This project uses Python>=3.11 and Poetry>=2.2.1 as a dependency manager.

Check out Poetry's documentation on how to install it on your system before proceeding.

To install requirements:

poetry install

This will install all requirements for running the package, linting, formatting and tests.

Lint

Run the linting before committing:

make lint

To auto-fix formatting issues run:

make format

Test

Run unit tests locally for available python versions:

make test

Run unit tests for the specific python version:

make test PYTHON=3.11

The generation evaluation requires an access to the LLM. The generation evaluation tests (located in tests/llm_tests directory) use cached LLM responses by default. To run the tests with real LLM responses, you need add --llm-mode=real argument to the test command:

make test PYTHON=3.11 ARGS="--llm-mode=real"

The test run with real LLM responses requires the following environment variables to be set:

VariableDescription
DIAL_URLThe URL of the DIAL server.
DIAL_API_KEYThe API key for the DIAL server.

Copy .env.example to .env and customize it for your environment.

Clean

To remove the virtual environment and build artifacts run:

make clean

Build

To build the package run:

make build

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 10

Native requirements
10 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
numpy<3,>=1.26.4runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pandas<3.0.0,>=2.2.2runtime
fsspec
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
fsspec<2025.0.0,>=2024.3.1runtime
s3fs
Environment
{
  "extras": "",
  "marker": "extra == \"s3fs\"",
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
s3fs<2025.0.0,>=2024.3.1; extra == "s3fs"runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.7.1runtime
spacy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
spacy<4,>=3.8.9runtime
tqdm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
tqdm<5.0.0,>=4.66.4runtime
langchain-core
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
langchain-core<2,>=0.3.85runtime
more-itertools
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
more-itertools<11.0.0,>=10.5.0runtime
pyarrow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.15,>=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyarrow>=20.0.0runtime

Distribution files

2 collected
aidial_rag_eval-0.6.0-py3-none-any.whl

bdist_wheel · 44.73 KB · Python py3

Source file
aidial_rag_eval-0.6.0.tar.gz

sdist · 29.84 KB · Python source

Source file

Repository

PENDING
epam/ai-dial-rag-eval

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:30 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:1f3d4e128cdc04073cf39dfb09e81c6bd59a26aab68abd7ce8c26c616eb51fd1

Other collected versions

View all collected versions →