Metadata-Version: 2.4
Name: rag-axis
Version: 0.0.2
Summary: Production contract layer for RAG systems — typed, explicit, observable, composable.
Author-email: Sai Harsha Kondaveeti <hello@saiharshakondaveeti.com>
License: MIT
Project-URL: Homepage, https://ragaxis.cenewayshorizon.com
Project-URL: Repository, https://github.com/ceneways-horizon/rag-axis
Project-URL: Documentation, https://ragaxis.cenewayshorizon.com
Project-URL: Changelog, https://github.com/ceneways-horizon/rag-axis/blob/main/CHANGELOG.md
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == "openai"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.40.0; extra == "anthropic"
Provides-Extra: qdrant
Requires-Dist: qdrant-client>=1.7.0; extra == "qdrant"
Provides-Extra: weaviate
Requires-Dist: weaviate-client>=4.0.0; extra == "weaviate"
Provides-Extra: pgvector
Requires-Dist: psycopg[binary]>=3.1.0; extra == "pgvector"
Provides-Extra: local
Requires-Dist: sentence-transformers>=2.2.0; extra == "local"
Provides-Extra: postgresql
Requires-Dist: psycopg[binary]>=3.1.0; extra == "postgresql"
Provides-Extra: bm25
Requires-Dist: rank-bm25>=0.2.2; extra == "bm25"
Provides-Extra: rerank
Requires-Dist: sentence-transformers>=2.2.0; extra == "rerank"
Provides-Extra: extraction
Requires-Dist: pypdf>=4.0.0; extra == "extraction"
Requires-Dist: beautifulsoup4>=4.12.0; extra == "extraction"
Requires-Dist: markdown>=3.5.0; extra == "extraction"
Provides-Extra: telemetry
Requires-Dist: opentelemetry-api>=1.20.0; extra == "telemetry"
Requires-Dist: opentelemetry-sdk>=1.20.0; extra == "telemetry"
Requires-Dist: prometheus-client>=0.19.0; extra == "telemetry"
Requires-Dist: structlog>=24.0.0; extra == "telemetry"
Provides-Extra: bench
Requires-Dist: ragas>=0.1.0; extra == "bench"
Provides-Extra: server
Requires-Dist: fastapi>=0.109.0; extra == "server"
Requires-Dist: uvicorn[standard]>=0.27.0; extra == "server"
Requires-Dist: pydantic>=2.5.0; extra == "server"
Requires-Dist: pyyaml>=6.0; extra == "server"
Requires-Dist: sqlalchemy>=2.0.0; extra == "server"
Requires-Dist: alembic>=1.13.0; extra == "server"
Requires-Dist: pydantic-settings>=2.1.0; extra == "server"
Requires-Dist: python-multipart>=0.0.9; extra == "server"
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
Requires-Dist: mypy>=1.8.0; extra == "dev"
Requires-Dist: types-pyyaml; extra == "dev"
Requires-Dist: ruff>=0.2.0; extra == "dev"
Requires-Dist: pre-commit>=3.6.0; extra == "dev"
Requires-Dist: pip-audit>=2.7.0; extra == "dev"
Requires-Dist: httpx>=0.26.0; extra == "dev"
Provides-Extra: all
Requires-Dist: rag-axis[anthropic,bench,bm25,dev,extraction,local,openai,pgvector,postgresql,qdrant,rerank,server,telemetry,weaviate]; extra == "all"
Dynamic: license-file

# rag-axis

> Production contract layer for RAG systems.  
> Typed. Explicit. Observable. Composable.

[![PyPI version](https://img.shields.io/pypi/v/rag-axis.svg)](https://pypi.org/project/rag-axis)
[![Python](https://img.shields.io/pypi/pyversions/rag-axis.svg)](https://pypi.org/project/rag-axis)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Docs](https://img.shields.io/badge/docs-ragaxis.cenewayshorizon.com-blue)](https://ragaxis.cenewayshorizon.com)

---

## What This Is

Every production RAG system fails in the same ways:
silent retrieval degradation, embedding model mismatch,
untracked cost explosions, and context assembly that drops
critical information without logging it.

rag-axis does not abstract these problems away.  
It makes them impossible to hide.

---

## What This Is Not

- Not a LangChain replacement by feature parity
- Not a beginner library
- Not a multi-agent orchestration framework
- Not auto-configuring anything

If a feature does not make a failure mode explicit  
or a production constraint enforceable,  
it does not belong in rag-axis.

---

## Core Guarantees

**Zero silent failures** — every failure mode has a name and a type.  
**Cost visibility** — every result carries tokens consumed, latency, and estimated cost per stage.  
**Explicit over magic** — no hidden routing, no undocumented behaviour.  
**Immutable results** — pipeline results cannot be mutated between stages.  
**Typed adapters** — LLM, embedder, and vector store boundaries are enforced via Protocol.

---

## Status
v0.0.1 — Pre-Alpha. Architecture locked. Core types in development.
APIs are unstable until v1.0.0.

| Package | Status |
|---|---|
| `rag_axis.core` | In development |
| `rag_axis.adapters` | Planned |
| `rag_axis.retrieval` | Planned |
| `rag_axis.context` | Planned |
| `rag_axis.generation` | Planned |
| `rag_axis.telemetry` | Planned |
| `rag_axis.bench` | Planned |

---

## Installation

```bash
pip install rag-axis
```

Requires Python 3.11+.

---

## Audience

This library is for engineers building production RAG systems.  
Not tutorials. Not demos. Not proof of concepts.

If you need something working in five minutes, use LangChain.  
If you need something you can trust in production, use rag-axis.

---

## Documentation

Full documentation, architecture, design principles, and invariants:  
[ragaxis.cenewayshorizon.com](https://ragaxis.cenewayshorizon.com)

Architecture overview: [ARCHITECTURE.md](ARCHITECTURE.md)

---

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) and [docs/contributing/setup.md](docs/contributing/setup.md).

All PRs must pass the [invariant checklist](docs/contributing/invariants.md) before review.

---

## License

MIT — see [LICENSE](LICENSE).
