English | 简体中文
Interactive Visualization Engine for AI-Enhanced Knowledge Graphs & Hypergraphs
OntoSight is a lightweight yet powerful Python library designed to bridge the gap between static graph visualizations and dynamic AI-driven exploration. It allows developers to create highly interactive, searchable, and "chat-ready" visualizations for complex knowledge structures with just a few lines of code.
- Three Visualization Types:
- Graphs (
view_graph): Traditional node-edge networks for pairwise relationships - Hypergraphs (
view_hypergraph): Multi-node relationships and complex pathways - Nodes (
view_nodes): Pure entity collections without edges - perfect for archives, semantic spaces, and clusters
- Graphs (
- AI-Ready Callbacks: Flexible
on_searchandon_chathooks to integrate with any LLM (GPT-4, Claude, Llama 3) or Vector Database (Milvus, Pinecone, Chroma). - Interactive Exploration: Built-in detail panels, filtering, and real-time highlighting.
- Framework Agnostic: Works with any data source. Define your schema using Pydantic and let OntoSight handle the rest.
- Developer First: Python-native API with automatic web-server management and browser launching.
pip install ontosightTraditional node-edge networks for pairwise relationships. Best for social networks, dependency graphs, and classic KGs.
| Main View | Intelligent Search | AI Chat |
|---|---|---|
![]() |
![]() |
![]() |
from pydantic import BaseModel
from ontosight import view_graph
class Entity(BaseModel):
name: str
type: str
nodes = [Entity(name="Alice", type="Person"), Entity(name="Wonderland", type="Place")]
edges = [{"source": "Alice", "target": "Wonderland", "label": "visits"}]
view_graph(
node_list=nodes,
edge_list=edges,
node_id_extractor=lambda n: n.name,
node_ids_in_edge_extractor=lambda e: (e["source"], e["target"])
)Visualize relationships that connect more than two entities. Perfect for collaborative networks, chemical reactions, or complex logical pathways.
| Main View | Intelligent Search | AI Chat |
|---|---|---|
![]() |
![]() |
![]() |
from ontosight import view_hypergraph
# A hyperedge connects multiple nodes
hyperedges = [{"id": "he1", "members": ["A", "B", "C"], "label": "Collaboration"}]
view_hypergraph(
node_list=[{"id": "A"}, {"id": "B"}, {"id": "C"}],
edge_list=hyperedges,
node_id_extractor=lambda n: n["id"],
node_ids_in_edge_extractor=lambda e: e["members"]
)Pure entity collections without explicit edges. Use force-clustering and semantic search to explore large-scale archives or embedding spaces.
| Main View | Intelligent Search | AI Chat |
|---|---|---|
![]() |
![]() |
![]() |
from ontosight import view_nodes
recipes = [
{"name": "Pasta", "cuisine": "Italian"},
{"name": "Sushi", "cuisine": "Japanese"}
]
view_nodes(
node_list=recipes,
node_id_extractor=lambda r: r["name"],
node_label_extractor=lambda r: r["name"]
)OntoSight is built for the Age of AI. While it doesn't ship with a specific LLM, it provides the "plumbing" to make your graph interactive and intelligent.
You can define a custom search callback to perform semantic search using embedding models.
def my_vector_search(query: str):
# Logic to call your Vector DB (e.g., Milvus)
# returns matching_nodes, matching_edges
pass
view_graph(..., on_search=my_vector_search)Connect a Chat interface directly to your Graph. When a user asks a question, the LLM can provide a textual answer, and OntoSight will auto-highlight the relevant subgraph.
def my_chat_handler(question: str):
# 1. Send question to LLM (e.g., GPT-4)
# 2. Get relevant nodes/edges from your Retrieval logic
return "Alice is in Wonderland.", (relevant_nodes, relevant_edges)
view_graph(..., on_chat=my_chat_handler)- Schema-Driven Detail Panels: Automatically generates UI panels based on your Pydantic models.
- Hypergraph Modeling: Visualize relationships between multiple nodes simultaneously.
OntoSight is released under the Apache License 2.0.








