Skip to main content

A label-driven RAG pipeline built on top of paralabelgen.

Project description

labelrag

labelrag is a Python library for label-driven retrieval-augmented generation pipelines built on top of paralabelgen.

  • PyPI distribution: labelrag
  • Python import package: labelrag
  • Core dependency target: paralabelgen==0.2.0
  • Default extraction path: spaCy via paralabelgen

Install

pip install labelrag

If you want to use the default spaCy-backed labeling path, install a compatible English pipeline such as:

python -m spacy download en_core_web_sm

en_core_web_sm is the recommended default model, but you can point the underlying LabelGeneratorConfig at another installed compatible spaCy pipeline.

Quick Start

Retrieval-only workflow

from labelrag import RAGPipeline, RAGPipelineConfig

paragraphs = [
    "OpenAI builds language models for developers.",
    "Developers use language models in production systems.",
    "Production systems need monitoring and evaluation tooling.",
]

pipeline = RAGPipeline(RAGPipelineConfig())
pipeline.fit(paragraphs)

retrieval = pipeline.build_context("How do developers use language models?")
print(retrieval.prompt_context)
print(retrieval.metadata)

Retrieval plus provider-backed answer generation

from labelrag import (
    OpenAICompatibleAnswerGenerator,
    OpenAICompatibleConfig,
    RAGPipeline,
    RAGPipelineConfig,
)

paragraphs = [
    "OpenAI builds language models for developers.",
    "Developers use language models in production systems.",
    "Production systems need monitoring and evaluation tooling.",
]

pipeline = RAGPipeline(RAGPipelineConfig())
pipeline.fit(paragraphs)

generator = OpenAICompatibleAnswerGenerator(
    OpenAICompatibleConfig(
        model="mistral-small-latest",
        api_key_env_var="MISTRAL_API_KEY",
        base_url="https://api.mistral.ai/v1",
    )
)

answer = pipeline.answer_with_generator(
    "How do developers use language models?",
    generator,
)
print(answer.answer_text)
print(answer.metadata)

Retrieval Model

The current retrieval layer is deterministic and label-driven.

  • fit(...) delegates paragraph analysis to labelgen.LabelGenerator
  • build_context(...) maps the question into the fitted label space
  • retrieval uses greedy coverage over query label IDs
  • label-free queries can fall back to deterministic concept overlap
  • require_full_label_coverage=True suppresses partial retrieval results while preserving attempted coverage trace in metadata

Tie-break order for greedy retrieval is:

  1. larger overlap with remaining query labels
  2. larger overlap on query concept IDs
  3. larger total paragraph label count
  4. lexicographically smaller paragraph_id

OpenAI-Compatible Provider Notes

The built-in answer-generation adapter targets a minimal OpenAI-compatible chat-completions API surface.

It supports:

  • standard base URLs such as https://api.openai.com/v1
  • full endpoint URLs such as https://api.mistral.ai/v1/chat/completions
  • API key injection through config or environment variables
  • non-streaming text generation for answer_with_generator(...)

This adapter is intended to cover providers such as OpenAI, Mistral, and Qwen when they expose an OpenAI-compatible endpoint shape.

Public API

The main public entrypoints are:

  • RAGPipeline
  • RAGPipelineConfig, RetrievalConfig, PromptConfig
  • IndexedParagraph, QueryAnalysis, RetrievedParagraph
  • RetrievalResult, RAGAnswerResult
  • GeneratedAnswer, AnswerGenerator
  • OpenAICompatibleAnswerGenerator, OpenAICompatibleConfig
  • convenience re-export: Paragraph

Detailed API notes are available in docs/public_api.md.

Examples

Runnable examples are available in examples/:

Persistence Notes

save(path) produces a human-inspectable directory containing:

  • config.json
  • label_generator.json
  • corpus_index.json
  • fit_result.json

Public guarantee:

  • a saved and reloaded pipeline should preserve retrieval behavior for the same fitted state, question, and config

Configuration Notes

  • RetrievalConfig.max_paragraphs sets the hard retrieval limit
  • RetrievalConfig.allow_label_free_fallback enables deterministic concept overlap fallback for label-free queries
  • RetrievalConfig.require_full_label_coverage suppresses partial retrieval output when not all query labels can be covered
  • PromptConfig.include_paragraph_ids includes stable paragraph IDs in the rendered prompt context
  • PromptConfig.include_label_annotations includes paragraph label annotations in rendered prompt context
  • PromptConfig.max_context_characters applies a hard cap to rendered context length

Development Checks

.venv/bin/ruff check . --fix
.venv/bin/pyright
.venv/bin/pytest

Release Checks

.venv/bin/python -m build
.venv/bin/python -m twine check dist/*

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

labelrag-0.0.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

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

labelrag-0.0.0-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file labelrag-0.0.0.tar.gz.

File metadata

  • Download URL: labelrag-0.0.0.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for labelrag-0.0.0.tar.gz
Algorithm Hash digest
SHA256 960522c31ce03df26d11cdec0264cd640e7e27274b6e9e31acfe7883c367cb13
MD5 e46bb0a5829e8d3732e75a09e285151d
BLAKE2b-256 a1e8c5f616cfe186e02275af144fa124abb14cb4efa1e3a436a087138ab95253

See more details on using hashes here.

File details

Details for the file labelrag-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: labelrag-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for labelrag-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0b81f1a63db5982922f53295d2b1072d02b0098f9e9776019519c7708d3424e
MD5 b3e46e91bda189c47d1b602d69e25d87
BLAKE2b-256 028908e9aef280f8b84883bcfd44df7cc8479827f563f737ae2e4b848191d6e3

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