Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
cbdb9e9
add index_name to SettingsUpdateOptions
matanor Mar 9, 2026
a51778b
feat(sdk): add filename_exists method to SDK and v1 API endpoint
matanor Mar 9, 2026
21aecf0
sdk version to 0.1.5
matanor Mar 9, 2026
b971c4b
feat(sdk): add onboarding endpoint support for embedding model initia…
matanor Mar 10, 2026
23e995b
feat: add v1 onboarding endpoint with SDK client support
matanor Mar 10, 2026
7708b69
Merge branch 'main' into sdk_for_ragworkbench
matanor Mar 11, 2026
044f014
add query to the SourcesEvent
matanor Mar 15, 2026
4c93d6b
Merge remote-tracking branch 'remotes/origin/sdk_for_ragworkbench' in…
matanor Mar 15, 2026
4111e04
adjust _transform_stream_to_sse to correctly handle the sources.
matanor Mar 15, 2026
5d2d584
feat(evaluation): add OpenRAG evaluation tool
matanor Mar 16, 2026
58f21cf
Add uv support, pipeline improvements, and tests
matanor Mar 16, 2026
1fef30c
test: improve test configuration and cache validation
matanor Mar 16, 2026
a971205
Add evaluation boards and refactor module structure
matanor Mar 17, 2026
9b90b8a
add openai dependency
matanor Mar 17, 2026
eb5eebc
clean up board
matanor Mar 17, 2026
75d9d82
remove unused batching params
matanor Mar 17, 2026
61520c7
updat readme
matanor Mar 17, 2026
3ff6ba1
update to match dependencies (added openai)
matanor Mar 17, 2026
a1d4ee2
update python version
matanor Mar 17, 2026
904cb7f
remove unused params
matanor Mar 17, 2026
7f70ab5
update ragworkbench commit in lock
matanor Mar 17, 2026
7247151
Merge branch 'main' into sdk_for_ragworkbench
matanor Mar 18, 2026
6354eb0
update lock file version
matanor Mar 18, 2026
3a42694
Merge branch 'sdk_for_ragworkbench' into openrag_workbench
matanor Mar 19, 2026
f9d1951
rename openrag_eval to openrag_workbench
matanor Mar 19, 2026
027e32b
update uv lock file
matanor Mar 19, 2026
dfa33d4
env variables for IBM watsonx.ai Configuration
matanor Mar 22, 2026
0d3463f
retry over invalid answers
matanor Mar 22, 2026
6365f13
default chunking params to match openrag defaults
matanor Mar 22, 2026
609c476
update lock file
matanor Mar 22, 2026
0c8cba9
switch to watsonx LLMaaJ
matanor Mar 22, 2026
aab03db
support control of the embedding model provider id
matanor Mar 23, 2026
a3cc4ed
move tests to ollama
matanor Mar 23, 2026
80fcea5
switch to an official release of rag WB
matanor Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions evaluation/openrag_workbench/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# OpenRAG Evaluation Environment Variables

# OpenRAG API Key (required)
# This is your API key for authenticating with the OpenRAG instance.
# Format: orag_your_api_key_here
#
# To obtain an API key:
# 1. Navigate to your OpenRAG instance (e.g., http://localhost:3000)
# 2. Go to Settings or API Keys section
# 3. Generate a new API key
# 4. Copy the key and paste it below
OPENRAG_API_KEY=

# OpenRAG URL (optional)
# Base URL of your OpenRAG instance
# Default: http://localhost:3000
# OPENRAG_URL=http://localhost:3000

# =============================================================================
# IBM watsonx.ai Configuration (Optional)
# =============================================================================
# Required ONLY if using watsonx LLM-as-a-Judge metrics:
# - unitxt.answer_correctness.llmaaj_llama
# - unitxt.answer_correctness.llmaaj_llama4
# Documentation: https://cloud.ibm.com/docs/watsonxdata

# IBM Cloud API Key - Required for watsonx authentication
# Get your API key from: https://cloud.ibm.com/iam/apikeys
# WATSONX_APIKEY=your_ibm_cloud_api_key_here

# watsonx.ai Project ID - Required for watsonx model access
# Get from: https://dataplatform.cloud.ibm.com/projects → Open project → Manage tab → Project ID
# WATSONX_PROJECT_ID=your_watsonx_project_id_here

# watsonx.ai URL - Optional, defaults to US South region
# Common values:
# - https://us-south.ml.cloud.ibm.com (US South - default)
# - https://eu-de.ml.cloud.ibm.com (Frankfurt)
# - https://eu-gb.ml.cloud.ibm.com (London)
# - https://jp-tok.ml.cloud.ibm.com (Tokyo)
# WATSONX_URL=https://us-south.ml.cloud.ibm.com
203 changes: 203 additions & 0 deletions evaluation/openrag_workbench/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# IDEs
.vscode/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Specific to project
mlflow.db
*milvus.db*
output*/

# From unitxt
inference_engine_cache

# Cache directories
cache/

# Task logs
logs/

src/openrag_workbench/data_loaders/ait_qa_pdf/documents/

# RagWorkbench data directory
ragworkbench_data/
79 changes: 79 additions & 0 deletions evaluation/openrag_workbench/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# openrag-workbench

OpenRAG Workbench Tool - an evaluation framework for OpenRAG.

## Installation

### Prerequisites

Install [uv](https://docs.astral.sh/uv/):
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

### Installation

```bash
cd openrag/evaluation/openrag_workbench

# Create virtual environment
uv venv

# Install with dependencies
uv sync
```

## Usage

Run the main evaluation script:

```bash
uv run python -m openrag_workbench.evaluate
```


## Development

For development, install with development dependencies:

```bash
# Install with dev dependencies
uv sync --extra dev

# Run tests with uv
uv run pytest

# Format code with uv
uv run black src/ tests/

# Lint code with uv
uv run ruff check src/ tests/

# Type check with uv
uv run mypy src/
```

## Structure

The project is organized as follows:

```
openrag_workbench/
├── src/openrag_workbench/ # Main package
│ ├── pipelines/ # Ingest and inference pipelines
│ ├── boards/ # Evaluation board configurations
│ └── evaluate.py # Main evaluation script
└── tests/ # Tests
```

The main components are:

### Pipelines (`src/openrag_workbench/pipelines/`)
Contains implementations of RAG pipelines:
- **`ingest.py`**: A RagWorkbench ingestion pipeline implemented with the OpenRAG SDK
- **`inference.py`**: A RagWorkbench inference pipeline implemented with the OpenRAG SDK

### Boards (`src/openrag_workbench/boards/`)
Contains board configurations for evaluation experiments:
- **`table_rich/`**: A definition for RAG experiments over table-rich documents.

69 changes: 69 additions & 0 deletions evaluation/openrag_workbench/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "openrag-workbench"
version = "0.1.0"
description = "OpenRAG Workbench Tool"
readme = "README.md"
requires-python = ">=3.13"
license = {text = "Apache-2.0"}

classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]

dependencies = [
"openrag-sdk",
"ragworkbench==0.1.1",
"pydantic>=2.0.0",
"python-dotenv>=1.0.0",
"openai>=2.0.0",
]

[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"black>=26.1.0",
"ruff>=0.14.14",
"mypy>=1.14.0",
]

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]
include = ["openrag_workbench*"]

[tool.black]
line-length = 88
target-version = ['py311']

[tool.ruff]
line-length = 88
target-version = "py311"
src = ["src"]

[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "C4", "UP"]
ignore = ["E501", "B008"]

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]

[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = "-v -s --strict-markers"
Loading
Loading