Skip to main content

Transactional Graph + Vector retrieval system for InterSystems IRIS with hybrid search, openCypher, and GraphQL APIs

Project description

IRIS Vector Graph

The ultimate Graph + Vector + Text Retrieval Engine for InterSystems IRIS.

Python 3.11+ InterSystems IRIS License: MIT

IRIS Vector Graph is a general-purpose graph utility built on InterSystems IRIS that supports and demonstrates knowledge graph construction and query techniques. It combines graph traversal, HNSW vector similarity, and lexical search in a single, unified database.


Why IRIS Vector Graph?

  • Multi-Query Power: Query your graph via SQL, openCypher (v1.3 with DML), or GraphQL — all on the same data.
  • Transactional Engine: Beyond retrieval — support for CREATE, DELETE, and MERGE operations.
  • Blazing Fast Vectors: Native HNSW indexing delivering ~1.7ms search latency (vs 5.8s standard).
  • Zero-Dependency Integration: Built with IRIS Embedded Python — no external vector DBs or graph engines required.
  • Production-Ready: The engine behind iris-vector-rag for advanced RAG pipelines.

Installation

pip install iris-vector-graph

Note: Requires InterSystems IRIS 2025.1+ with the irispython runtime enabled.

Quick Start

# 1. Clone & Sync
git clone https://github.com/intersystems-community/iris-vector-graph.git && cd iris-vector-graph
uv sync

# 2. Spin up IRIS
docker-compose up -d

# 3. Start API
uvicorn api.main:app --reload

Visit:


Unified Query Engines

openCypher (Advanced RD Parser)

IRIS Vector Graph features a custom recursive-descent Cypher parser supporting multi-stage queries and transactional updates:

// Complex fraud analysis with WITH and Aggregations
MATCH (a:Account)-[r]->(t:Transaction)
WITH a, count(t) AS txn_count
WHERE txn_count > 5
MATCH (a)-[:OWNED_BY]->(p:Person)
RETURN p.name, txn_count

Supported Clauses: MATCH, OPTIONAL MATCH, WITH, WHERE, RETURN, UNWIND, CREATE, DELETE, DETACH DELETE, MERGE, SET, REMOVE.

GraphQL

query {
  protein(id: "PROTEIN:TP53") {
    name
    interactsWith(first: 5) { id name }
    similar(limit: 3) { protein { name } similarity }
  }
}

SQL (Hybrid Search)

SELECT TOP 10 id, 
       kg_RRF_FUSE(id, vector, 'cancer suppressor') as score
FROM nodes
ORDER BY score DESC

Scaling & Performance

The integration of a native HNSW (Hierarchical Navigable Small World) functional index directly into InterSystems IRIS provides massive scaling benefits for hybrid graph-vector workloads.

By keeping the vector index in-process with the graph data, we achieve subsecond multi-modal queries that would otherwise require complex application-side joins across multiple databases.

Performance Benchmarks (2026 Refactor)

  • High-Speed Traversal: ~1.84M TEPS (Traversed Edges Per Second).
  • Sub-millisecond Latency: 2-hop BFS on 10k nodes in <40ms.
  • RDF 1.2 Support: Native support for Quoted Triples (Metadata on edges) via subject-referenced properties.
  • Query Signatures: O(1) hop-rejection using ASQ-inspired Master Label Sets.

Why fast vector search matters for graphs

Consider a "Find-and-Follow" query common in fraud detection:

  1. Find the top 10 accounts most semantically similar to a known fraudulent pattern (Vector Search).
  2. Follow all outbound transactions from those 10 accounts to identify the next layer of the money laundering ring (Graph Hop).

In a standard database without HNSW, the first step (vector search) can take several seconds as the dataset grows, blocking the subsequent graph traversals. With iris-vector-graph, the vector lookup is reduced to ~1.7ms, enabling the entire hybrid traversal to complete in a fraction of a second.


Interactive Demos

Experience the power of IRIS Vector Graph through our interactive demo applications.

Biomedical Research Demo

Explore protein-protein interaction networks with vector similarity and D3.js visualization.

Fraud Detection Demo

Real-time fraud scoring with transaction networks, Cypher-based pattern matching, and bitemporal audit trails.

To run the CLI demos:

export PYTHONPATH=$PYTHONPATH:.
# Cypher-powered fraud detection
python3 examples/demo_fraud_detection.py

# SQL-powered "drop down" example
python3 examples/demo_fraud_detection_sql.py

To run the Web Visualization demos:

# Start the demo server
uv run uvicorn src.iris_demo_server.app:app --port 8200 --host 0.0.0.0

Visit http://localhost:8200 to begin.


iris-vector-rag Integration

IRIS Vector Graph is the core engine powering iris-vector-rag. You can use it in your RAG pipelines like this:

from iris_vector_rag import create_pipeline

# Create a GraphRAG pipeline powered by this engine
pipeline = create_pipeline('graphrag')

# Combined vector + text + graph retrieval
result = pipeline.query(
    "What are the latest cancer treatment approaches?",
    top_k=5
)

Documentation


Changelog

v1.4.5 (2025-01-31)

  • Large Value Support: rdf_props.val changed from VARCHAR(4000) to LONGVARCHAR (up to 2GB)
  • JSON Documents: Store JSON documents and large text in node properties
  • upgrade_val_column(): Migrate existing databases to LONGVARCHAR

v1.4.4 (2025-01-31)

  • Bulk Loading Support: %NOINDEX INSERTs, disable_indexes(), rebuild_indexes()
  • Fast Ingest: Skip index maintenance during bulk loads, rebuild after

v1.4.3 (2025-01-31)

  • Composite Indexes: Added (s,key), (s,p), (p,o_id), (s,label) based on TrustGraph patterns
  • 12 indexes total: Optimized for label filtering, property lookups, edge traversal

v1.4.2 (2025-01-31)

  • Performance Indexes: Added indexes on rdf_labels, rdf_props, rdf_edges for fast graph traversal
  • ensure_indexes(): New method to add indexes to existing databases
  • Composite Index: Added (key, val) index on rdf_props for property value lookups

v1.4.1 (2025-01-31)

  • Embedding API: Added get_embedding(), get_embeddings(), delete_embedding() methods
  • Schema Prefix in Engine: All engine SQL now uses configurable schema prefix

v1.4.0 (2025-01-31)

  • Schema Prefix Support: set_schema_prefix('Graph_KG') for qualified table names
  • Pattern Operators Fixed: CONTAINS, STARTS WITH, ENDS WITH now work correctly
  • IRIS Compatibility: Removed recursive CTEs and NULLS LAST (unsupported by IRIS)
  • ORDER BY Fix: Properties in ORDER BY now properly join rdf_props table
  • type(r) Verified: Relationship type function works in RETURN/WHERE clauses

Author: Thomas Dyar (thomas.dyar@intersystems.com)

Project details


Release history Release notifications | RSS feed

This version

1.4.5

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iris_vector_graph-1.4.5.tar.gz (445.1 kB view details)

Uploaded Source

Built Distribution

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

iris_vector_graph-1.4.5-py3-none-any.whl (55.3 kB view details)

Uploaded Python 3

File details

Details for the file iris_vector_graph-1.4.5.tar.gz.

File metadata

  • Download URL: iris_vector_graph-1.4.5.tar.gz
  • Upload date:
  • Size: 445.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for iris_vector_graph-1.4.5.tar.gz
Algorithm Hash digest
SHA256 17fcad0eece393c6c05174b2e8cdcec63d5ca963c15a344e03d2023c01fa4672
MD5 2e6ae0bacc8ec0dd5d07a314e1ff67f2
BLAKE2b-256 1eb3f2f02927a00e03737d6a9508baaaf72dc40650439b5429631566217610e0

See more details on using hashes here.

File details

Details for the file iris_vector_graph-1.4.5-py3-none-any.whl.

File metadata

File hashes

Hashes for iris_vector_graph-1.4.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3c9d55f61d757f69c199e8fa1d09c5c35f9a816032594680ce640e3e34b1277b
MD5 00e2eca69d34c3ee74e6af2ef03562e9
BLAKE2b-256 623b718e1e7a7c73055f3f8a6283623e05c3b8185811d94689eda96a9a635b0b

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