Ask questions by meaning, not just keywords
Find relevant content even when the exact words don't match β then follow relationships to discover what's connected. One query does it all.
Hybrid search, graph traversal, and AI workflow orchestration β in one installation. No separate services. No glue code.
pip install purple8-graph# With DiskANN on-disk vector index (larger-than-RAM indexes)
pip install "purple8-graph[diskann]"
# With production monitoring (Prometheus + OTEL)
pip install "purple8-graph[prod]"
# With SAML/SSO
pip install "purple8-graph[saml]"docker run -d \
--name purple8-graph \
-p 8000:8000 \
-e JWT_SECRET=your-secret-min-32-chars \
-v purple8-data:/data \
purple8/purple8-graph:latestfrom purple8_graph import GraphEngine
import numpy as np
engine = GraphEngine("./my_graph")
# Add nodes β no schema required
engine.add_node("doc1", labels=["Document"], properties={
"title": "Understanding transformers",
"region": "APAC",
"embedding": np.random.rand(384).tolist(), # your real embedding
})
engine.add_node("alice", labels=["Person"], properties={"name": "Alice Chen"})
engine.add_edge("doc1", "alice", "AUTHORED_BY")
# Hybrid Cypher query β vector search + graph traversal in one round-trip
results = engine.execute_cypher("""
CALL db.vector.search('Document', $vec, 10) YIELD node, score
WHERE node.region = 'APAC' AND score > 0.80
MATCH (node)-[:AUTHORED_BY]->(author:Person)
RETURN node.title, author.name, score
ORDER BY score DESC
""", {"vec": query_embedding})Full quickstart β Β· Hybrid search guide β Β· Cypher reference β
| Purple8 | Neo4j + Vector | KΓΉzu + HNSW | FalkorDB | |
|---|---|---|---|---|
| Vector + graph in one query | β | β two phases | β manual wiring | β |
| Durable disk storage | β RocksDB | β | β | β οΈ in-memory |
| Data-first (no DDL) | β | β | β | β |
| AI workflow orchestration | β Journey | β | β | β |
| One installation β no server | β | β JVM | β | β Redis |
| p50 at 100k docs | 3.53 ms | 60β150 ms | 30β80 ms | <10 ms (RAM only) |