RAG pipelines with InterSystems IRIS as the vector database. Six strategies (basic, rerank, CRAG, GraphRAG, multi-query RRF, ColBERT), unified API, RAGAS evaluation.
Project description
IRIS Vector RAG
Production-ready RAG (Retrieval-Augmented Generation) pipelines powered by InterSystems IRIS vector search.
Author: Thomas Dyar (thomas.dyar@intersystems.com)
Quick Start
# 1. Clone and install
git clone https://github.com/intersystems-community/iris-vector-rag.git
cd iris-vector-rag
pip install -e .
# 2. Start IRIS
docker compose up -d
# 3. Configure
cp .env.example .env
# Edit .env — add your OPENAI_API_KEY
# 4. Query
python -c "
from iris_vector_rag import create_pipeline
from iris_vector_rag.core.models import Document
pipeline = create_pipeline('basic')
pipeline.load_documents(documents=[
Document(page_content='RAG combines retrieval with generation for accurate AI.', metadata={'source': 'intro.pdf'}),
Document(page_content='Vector search finds similar content using embeddings.', metadata={'source': 'vectors.pdf'}),
])
result = pipeline.query('What is RAG?', top_k=5, generate_answer=True)
print(result['answer'])
"
Pipelines
All pipelines share the same interface — switch with one line:
from iris_vector_rag import create_pipeline
pipeline = create_pipeline('basic') # Vector similarity search
pipeline = create_pipeline('basic_rerank') # + cross-encoder reranking
pipeline = create_pipeline('crag') # + self-correction + web fallback
pipeline = create_pipeline('graphrag') # + knowledge graph + entity reasoning
pipeline = create_pipeline('multi_query_rrf') # + query expansion + rank fusion
pipeline = create_pipeline('pylate_colbert') # + ColBERT late interaction
| Pipeline | Method | Best For |
|---|---|---|
basic |
Vector similarity | General Q&A, getting started |
basic_rerank |
Vector + reranking | Higher accuracy, medical/legal |
crag |
Vector + evaluation + web | Fact-checking, current events |
graphrag |
Vector + text + graph + RRF | Complex relationships, research |
multi_query_rrf |
Query expansion + fusion | Comprehensive coverage |
pylate_colbert |
ColBERT embeddings | Fine-grained matching |
Response Format
All pipelines return the same structure (LangChain/RAGAS compatible):
result = pipeline.query("What is diabetes?", top_k=5)
result["answer"] # LLM-generated answer
result["retrieved_documents"] # List[Document]
result["contexts"] # List[str] — for RAGAS evaluation
result["sources"] # Source citations
result["metadata"] # Timing, pipeline type, method used
Configuration
Environment variables (loaded automatically from .env):
OPENAI_API_KEY=sk-... # Required for answer generation
IRIS_HOST=localhost # IRIS SuperServer host
IRIS_PORT=1972 # IRIS SuperServer port
IRIS_NAMESPACE=USER # IRIS namespace
IRIS_USERNAME=_SYSTEM # IRIS username
IRIS_PASSWORD=SYS # IRIS password
Evaluate with RAGAS
Compare pipelines side-by-side using real RAGAS metrics:
python examples/compare_pipelines.py --pipelines basic,basic_rerank
Or in code:
from iris_vector_rag import create_pipeline
from ragas import evaluate, EvaluationDataset, SingleTurnSample
from ragas.metrics import faithfulness, context_precision, context_recall
pipeline = create_pipeline('basic')
pipeline.load_documents(documents=docs)
result = pipeline.query("What is diabetes?", top_k=3, generate_answer=True)
sample = SingleTurnSample(
user_input="What is diabetes?",
response=result["answer"],
retrieved_contexts=result["contexts"],
reference="Diabetes is a chronic condition...",
)
scores = evaluate(EvaluationDataset(samples=[sample]),
metrics=[faithfulness, context_precision, context_recall])
Optional Extras
pip install iris-vector-rag[colbert] # ColBERT/PyLate support
pip install iris-vector-rag[dspy] # DSPy prompt optimization
pip install iris-vector-rag[evaluation] # RAGAS evaluation framework
pip install iris-vector-rag[api] # REST API server (FastAPI + Redis)
MCP Server
Use as an AI tool server via Model Context Protocol:
docker build -f Dockerfile.mcp -t iris-vector-rag-mcp .
docker run -p 3000:3000 --env-file .env iris-vector-rag-mcp
Development
pip install -e ".[dspy,evaluation]"
pytest tests/unit/ # Fast, no IRIS needed
pytest tests/unit/ tests/contract/ # Full suite, needs IRIS running
Architecture
iris_vector_rag/
├── pipelines/ # 6 RAG implementations (basic, crag, graphrag, etc.)
├── core/ # Base classes, models, connection management
├── storage/ # IRIS vector store, schema management
├── embeddings/ # Embedding generation and caching
├── services/ # Entity extraction, storage adapters
├── config/ # Configuration management
├── mcp/ # MCP server implementation
└── api/ # Optional REST API (FastAPI)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iris_vector_rag-0.11.1.tar.gz.
File metadata
- Download URL: iris_vector_rag-0.11.1.tar.gz
- Upload date:
- Size: 348.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb51bab6652fc6b631eb8bf55a5c19766ff597079133360e3876d0f9f045dc94
|
|
| MD5 |
8ad88125327f97c0bac2552064996a1d
|
|
| BLAKE2b-256 |
b71cb3b4422b13a2a70db09d76ffa9ca0e73d8b69bf57528360c0d0ef1eba441
|
File details
Details for the file iris_vector_rag-0.11.1-py3-none-any.whl.
File metadata
- Download URL: iris_vector_rag-0.11.1-py3-none-any.whl
- Upload date:
- Size: 377.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
469fd04f14e8a517aed03d12994df5757301541e9a118ef77ba7e10afa316eba
|
|
| MD5 |
2bf5b42eb12649c16e888d94214dfdcd
|
|
| BLAKE2b-256 |
23c6068a2a955d96fd59f2b23ced197dd09a8cc54cb68e865fd0f57bd60aa120
|