Skip to main content

SAGE Benchmark - RAG and experimental benchmarks for SAGE framework

Project description

SAGE Benchmark

Comprehensive benchmarking tools and RAG examples for the SAGE framework

Python Version License

๐Ÿ“‹ Overview

SAGE Benchmark provides a comprehensive suite of benchmarking tools and RAG (Retrieval-Augmented Generation) examples for evaluating SAGE framework performance. This package enables researchers and developers to:

  • Benchmark RAG pipelines with multiple retrieval strategies (dense, sparse, hybrid)
  • Compare vector databases (Milvus, ChromaDB, FAISS) for RAG applications
  • Evaluate multimodal retrieval with text, image, and video data
  • Run reproducible experiments with standardized configurations and metrics

This package is designed for both research experiments and production system evaluation.

โœจ Key Features

  • Multiple RAG Implementations: Dense, sparse, hybrid, and multimodal retrieval
  • Vector Database Support: Milvus, ChromaDB, FAISS integration
  • Experiment Framework: Automated benchmarking with configurable experiments
  • Evaluation Metrics: Comprehensive metrics for RAG performance
  • Sample Data: Included test data for quick start
  • Extensible Design: Easy to add new benchmarks and retrieval methods

๐Ÿ“ฆ Package Structure

sage-benchmark/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ sage/
โ”‚       โ””โ”€โ”€ benchmark/
โ”‚           โ”œโ”€โ”€ __init__.py
โ”‚           โ””โ”€โ”€ benchmark_rag/           # RAG benchmarking
โ”‚               โ”œโ”€โ”€ __init__.py
โ”‚               โ”œโ”€โ”€ implementations/     # RAG implementations
โ”‚               โ”‚   โ”œโ”€โ”€ pipelines/      # RAG pipeline scripts
โ”‚               โ”‚   โ”‚   โ”œโ”€โ”€ qa_dense_retrieval_milvus.py
โ”‚               โ”‚   โ”‚   โ”œโ”€โ”€ qa_sparse_retrieval_milvus.py
โ”‚               โ”‚   โ”‚   โ”œโ”€โ”€ qa_multimodal_fusion.py
โ”‚               โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚               โ”‚   โ””โ”€โ”€ tools/          # Supporting tools
โ”‚               โ”‚       โ”œโ”€โ”€ build_chroma_index.py
โ”‚               โ”‚       โ”œโ”€โ”€ build_milvus_dense_index.py
โ”‚               โ”‚       โ””โ”€โ”€ loaders/
โ”‚               โ”œโ”€โ”€ evaluation/          # Experiment framework
โ”‚               โ”‚   โ”œโ”€โ”€ pipeline_experiment.py
โ”‚               โ”‚   โ”œโ”€โ”€ evaluate_results.py
โ”‚               โ”‚   โ””โ”€โ”€ config/
โ”‚               โ”œโ”€โ”€ config/              # RAG configurations
โ”‚               โ””โ”€โ”€ data/                # Test data
โ”‚           # Future benchmarks:
โ”‚           # โ”œโ”€โ”€ benchmark_agent/      # Agent benchmarking
โ”‚           # โ””โ”€โ”€ benchmark_anns/       # ANNS benchmarking
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

๐Ÿš€ Installation

Quick Start (Recommended)

Clone the repository with submodules and set up development environment:

# 1. Clone repository
git clone --recurse-submodules https://github.com/intellistream/sage-benchmark.git
cd sage-benchmark

# Or if already cloned, initialize submodules
./quickstart.sh

# 2. Install package with development dependencies
pip install -e ".[dev]"

# 3. Install pre-commit hooks (IMPORTANT for contributors)
pre-commit install

The quickstart.sh script will automatically:

  • Initialize all Git submodules (LibAMM, SAGE-DB-Bench, sageData)
  • Check environment and dependencies
  • Display submodule status

Why install pre-commit? Pre-commit hooks automatically check code quality (formatting, import sorting, linting) before each commit, preventing CI/CD failures.

โšก One-Click Full Pipeline

Run the end-to-end benchmark pipeline in one command:

sage-benchmark-oneclick

This command executes:

  1. Full system benchmark (Q1..Q8)
  2. Aggregate + merge results for HF
  3. Upload to intellistream/sage-benchmark-results
  4. Refresh sage-docs leaderboard data

Useful options:

# Quick smoke path
sage-benchmark-oneclick --quick

# Validate configs only, skip upload for local checks
sage-benchmark-oneclick --dry-run --skip-upload

# Explicit docs path
sage-benchmark-oneclick --docs-root /path/to/sage-docs

# If your environment does not expose sage.benchmark.benchmark_sage,
# provide an explicit benchmark entry command
sage-benchmark-oneclick --benchmark-command "python -m sage.benchmark.benchmark_sage --all --quick"

Manual Installation

If you prefer manual setup:

# Clone repository
git clone https://github.com/intellistream/sage-benchmark.git
cd sage-benchmark

# Initialize submodules (direct level only, not recursive)
git submodule update --init

# Install package
pip install -e .

Or with development dependencies:

pip install -e ".[dev]"

Git Submodules

This repository uses Git submodules for external components:

  • benchmark_amm (src/sage/benchmark/benchmark_amm/) โ†’ LibAMM
  • benchmark_anns (src/sage/benchmark/benchmark_anns/) โ†’ SAGE-DB-Bench
  • sage.data (src/sage/data/) โ†’ sageData

All submodules track the main-dev branch and must be initialized before use.

๐Ÿ“Š RAG Benchmarking

The benchmark_rag module provides comprehensive RAG benchmarking capabilities:

RAG Implementations

Various RAG approaches for performance comparison:

Vector Databases:

  • Milvus: Dense, sparse, and hybrid retrieval
  • ChromaDB: Local vector database with simple setup
  • FAISS: Efficient similarity search

Retrieval Methods:

  • Dense retrieval (embeddings-based)
  • Sparse retrieval (BM25, sparse vectors)
  • Hybrid retrieval (combining dense + sparse)
  • Multimodal fusion (text + image + video)

Quick Start

1. Build Vector Index

First, prepare your vector index:

# Build ChromaDB index (simplest)
python -m sage.benchmark.benchmark_rag.implementations.tools.build_chroma_index

# Or build Milvus dense index
python -m sage.benchmark.benchmark_rag.implementations.tools.build_milvus_dense_index

2. Run a RAG Pipeline

Test individual RAG pipelines:

# Dense retrieval with Milvus
python -m sage.benchmark.benchmark_rag.implementations.pipelines.qa_dense_retrieval_milvus

# Sparse retrieval
python -m sage.benchmark.benchmark_rag.implementations.pipelines.qa_sparse_retrieval_milvus

# Hybrid retrieval (dense + sparse)
python -m sage.benchmark.benchmark_rag.implementations.pipelines.qa_hybrid_retrieval_milvus

3. Run Benchmark Experiments

Execute full benchmark suite:

# Run comprehensive benchmark
python -m sage.benchmark.benchmark_rag.evaluation.pipeline_experiment

# Evaluate and generate reports
python -m sage.benchmark.benchmark_rag.evaluation.evaluate_results

4. View Results

Results are saved in benchmark_results/:

  • experiment_TIMESTAMP/ - Individual experiment runs
  • metrics.json - Performance metrics
  • comparison_report.md - Comparison report

๐Ÿ“– Quick Start

Basic Example

from sage.benchmark.benchmark_rag.implementations.pipelines import (
    qa_dense_retrieval_milvus,
)
from sage.benchmark.benchmark_rag.config import load_config

# Load configuration
config = load_config("config_dense_milvus.yaml")

# Run RAG pipeline
results = qa_dense_retrieval_milvus.run_pipeline(query="What is SAGE?", config=config)

# View results
print(f"Retrieved {len(results)} documents")
for doc in results:
    print(f"- {doc.content[:100]}...")

Run Custom Benchmark

from sage.benchmark.benchmark_rag.evaluation import PipelineExperiment

# Define experiment configuration
experiment = PipelineExperiment(
    name="custom_rag_benchmark",
    pipelines=["dense", "sparse", "hybrid"],
    queries=["query1.txt", "query2.txt"],
    metrics=["precision", "recall", "latency"],
)

# Run experiment
results = experiment.run()

# Generate report
experiment.generate_report(results)

Configuration

Configuration files are located in sage/benchmark/benchmark_rag/config/:

  • config_dense_milvus.yaml - Dense retrieval configuration
  • config_sparse_milvus.yaml - Sparse retrieval configuration
  • config_hybrid_milvus.yaml - Hybrid retrieval configuration
  • config_qa_chroma.yaml - ChromaDB configuration

Experiment configurations in sage/benchmark/benchmark_rag/evaluation/config/:

  • experiment_config.yaml - Benchmark experiment settings

๐Ÿ“– Data

Test data is included in the package:

  • Benchmark Data (benchmark_rag/data/):

    • queries.jsonl - Sample queries for testing
    • qa_knowledge_base.* - Knowledge base in multiple formats (txt, md, pdf, docx)
    • sample/ - Additional sample documents for testing
    • sample/ - Additional sample documents
  • Benchmark Config (benchmark_rag/config/):

    • experiment_config.yaml - RAG benchmark configurations

๐Ÿ”ง Development

Running Tests

pytest packages/sage-benchmark/

Code Formatting

# Format code
black packages/sage-benchmark/

# Lint code
ruff check packages/sage-benchmark/

๐Ÿ“š Documentation

For detailed documentation on each component:

  • See src/sage/benchmark/rag/README.md for RAG examples
  • See src/sage/benchmark/benchmark_rag/README.md for benchmark details

๐Ÿ”ฎ Future Components

  • benchmark_agent: Agent system performance benchmarking
  • benchmark_anns: Approximate Nearest Neighbor Search benchmarking
  • benchmark_llm: LLM inference performance benchmarking

๐Ÿค Contributing

This package follows the same contribution guidelines as the main SAGE project. See the main repository's CONTRIBUTING.md.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Related Packages

  • sage-kernel: Core computation engine for running benchmarks
  • sage-libs: RAG components and utilities
  • sage-middleware: Vector database services (Milvus, ChromaDB)
  • sage-common: Common utilities and data types

๐Ÿ“ฎ Support


Part of the SAGE Framework | Main Repository

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

isage_benchmark-0.1.1.9.tar.gz (105.8 kB view details)

Uploaded Source

Built Distribution

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

isage_benchmark-0.1.1.9-py2.py3-none-any.whl (151.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file isage_benchmark-0.1.1.9.tar.gz.

File metadata

  • Download URL: isage_benchmark-0.1.1.9.tar.gz
  • Upload date:
  • Size: 105.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for isage_benchmark-0.1.1.9.tar.gz
Algorithm Hash digest
SHA256 b7512604777036edd8b4daa16a95d9caeb3ef5f4a7bdc74b4a5364d57ce49694
MD5 cc1520d432e5d2fbccc058d2c8e5cc1d
BLAKE2b-256 99e57d799da6f52daf9623b6fc08da14da3e198e23fad2cd878b17d5c13ffc83

See more details on using hashes here.

File details

Details for the file isage_benchmark-0.1.1.9-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for isage_benchmark-0.1.1.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 05888592bfd01ae1d7ebc11fef93a57f3a9f6925af9f36df1c9db712bddcac69
MD5 833d7efa0e1da09b831f27135b188b35
BLAKE2b-256 b989ba735a2f80cc8c29f4a5cd4ff030f7b5b09eeebb3fb1da0ca830249de877

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