Keep up with latest product news







process.py)Uses skip_rows=365 and has_header=True instead of comment_prefix="#". Polars no longer scans and discards 365 header lines per file; it seeks directly to the data. The filter(source_id != "solution_id") guard is also eliminated since the comment block never enters the dataframe.
Files are sorted by descending size before dispatch. On 8 cores (local CPU) with 20 files this follows LPT (Longest Processing Time) scheduling, minimizing the final idle-thread stall when the last batch of files completes.
max_workers = min(20, os.cpu_count()) — avoids 20 threads competing for 8 cores and reduces context-switching overhead compared to the hardcoded max_workers=len(files) in the baseline.
POLARS_MAX_THREADS=1 prevents polars' internal Rayon thread pool from spawning additional threads per file read, which would over-subscribe the CPU when multiple Python worker threads are already running concurrently.
Changed the runtime Docker volume layout so that only data/out is bind-mounted. Nothing is precomputed, all work stays in the timed run.
Found some more optimizations. Using zgrep now, using csv.reader, some other small changes. Down to 378 meaningful code characters.
Using docker mounts, moved file paths out of Python execution, bringing total RunScript.mac character count down to 452 characters, 433 of which are "meaningful code" (assuming "meaningful code" means "everything after ROUTINE RunScript")


This release represents a complete rewrite and production hardening of the
framework since the initial OEX listing (1.0.1).
Previously listed on OEX as intersystems-iris-rag (rag-templates on PyPI).
Now published as iris-vector-rag on PyPI with a matching OEX module name.
Importable as iris_vector_rag. The iris_rag/ shim preserves legacy imports.
All pipelines share one factory call and one response shape — answer,
retrieved_documents, contexts, sources, metadata — swappable with a
single create_pipeline(type, ...) call:
RAG.SDK.*)Five ObjectScript classes callable directly from IRIS without touching Python:
RAG.SDK.Pipeline — run any pipeline strategy by nameRAG.SDK.Search — BM25, IVFFlat, and vector search pathsRAG.SDK.Schema — table initialization, schema status, pip install hookRAG.SDK.Bridge — overlay support and default table configurationRAG.SDK.Evaluate — RAGAS evaluation from ObjectScriptget_iris_connection() — one path,iris.runtime.get().state — skips TCPIRISINSTALLDIR is set.import iris.dbapi in connection_pool.py — no ImportError atiris is absent.iris-embedded-python-wrapper — handles embedded-kernel,attach_existing_corpusZero-copy bridge: point any pipeline at tables already in IRIS without
re-ingesting data.
Pre-flight checks before any pipeline runs: required tables exist, embeddings
are ≥95% non-NULL, IRIS VECTOR format valid. auto_setup=True creates missing
tables and embeddings on first use.
Side-by-side pipeline comparison with faithfulness, context precision, and
context recall. Uses real PMC biomedical documents — no synthetic data.
[api] extra) with Redis-backed sessions.[mcp] extra) — all pipelines exposed as MCP tools, usableiris-vector-graph integrationGraphRAG, ColBERT/PLAID, BM25, IVFFlat, and shortestPath delegate to
iris-vector-graph — IRIS-native graph and vector operations without leaving
the database.
zpm install iris-vector-rag now also runs
pip install iris-vector-rag==0.11.4 via RAG.SDK.Schema.Install().
