Skip to content

Complex Network RAG

Topology-Aware Retrieval for Smarter Knowledge Graphs

Complex Network RAG is a production-ready retrieval-augmented generation (RAG) system that uses network topology and structured similarity for intelligent document retrieval. Unlike traditional RAG systems that rely solely on embedding similarity, Complex Network RAG leverages graph structure to discover communities, identify knowledge hubs, and find conceptual bridges between domains.

Key Features

  • Structured Similarity: Field-specific embeddings for documents (title, abstract, tags, etc.)
  • Hybrid Linkage: Combine semantic embeddings with attribute similarity (Jaccard, Dice, exact match)
  • Network Topology: Leverage communities, hubs, and bridges for intelligent retrieval
  • YAML DSL: Declarative configuration for complex similarity strategies
  • Three Interfaces: Fluent API, CLI, and interactive REPL
  • Production Ready: SQLite storage, comprehensive testing (755+ tests), proven at scale

System Architecture

┌─────────────────────────────────────────────────────────────────┐
│                     Three User Interfaces                       │
├───────────────────┬─────────────────────┬──────────────────────┤
│   Fluent API      │    CLI Commands     │   Interactive REPL   │
│   (Python)        │    (Bash/Scripts)   │   (Exploration)      │
└─────────┬─────────┴──────────┬──────────┴───────────┬──────────┘
          │                    │                       │
          └────────────────────┼───────────────────────┘
                      ┌────────▼────────┐
                      │   YAML DSL      │◀── Core Abstraction
                      │  (Declarative   │
                      │ Configuration)  │
                      └────────┬────────┘
          ┌────────────────────┼────────────────────┐
          │                    │                    │
     ┌────▼────┐       ┌──────▼──────┐     ┌──────▼──────┐
     │Structured│       │  Network    │     │  Storage    │
     │Similarity│       │  Analysis   │     │  Layer      │
     │• Field   │       │• Communities│     │• SQLite     │
     │  Embed   │       │• Hubs       │     │• Embeddings │
     │• Attrib  │       │• Bridges    │     │• Metadata   │
     │  Sim     │       │• Topology   │     └─────────────┘
     └──────────┘       └─────────────┘
          │                    │
          └─────────┬──────────┘
            ┌───────▼────────┐
            │  Knowledge     │
            │  Graph         │
            │  (NetworkX)    │
            └───────┬────────┘
            ┌───────▼────────┐
            │  Retrieval     │
            │  Strategies    │
            │• Topology-aware│
            │• Context-rich  │
            └────────────────┘

Why Complex Network RAG?

Traditional RAG systems treat documents as isolated points in embedding space. Complex Network RAG recognizes that knowledge forms a network with meaningful structure:

  • Communities cluster related knowledge (e.g., all ML papers, all medical documents)
  • Hubs connect multiple domains (e.g., "attention mechanism" bridges NLP and vision)
  • Bridges enable cross-domain transfer (e.g., finding analogies between fields)
  • Neighborhoods capture local context beyond simple similarity

This topology-aware approach enables: - Better context through community-aware retrieval - Cross-domain insights via bridge nodes - Robust retrieval that considers both content and structure - Explainable results based on network position

Quick Start

Installation

# Clone repository
git clone https://github.com/yourusername/complex-network-rag.git
cd complex-network-rag

# Install dependencies
pip install -r requirements.txt

# Optional: Install in development mode
pip install -e .

Three Ways to Use Complex Network RAG

Define your similarity strategy declaratively:

# config/papers.yaml
schema:
  title: text
  abstract: text
  tags:
    type: list
    default: []

embeddings:
  title_vec:
    field: title
    model: tfidf

  abstract_vec:
    field: abstract
    model: tfidf
    chunking:
      method: sentences
      max_tokens: 512

  text_vec:
    combine:
      - ref: title_vec
        weight: 0.3
      - ref: abstract_vec
        weight: 0.7

similarities:
  text_sim:
    embedding: text_vec

  tag_sim:
    field: tags
    metric: jaccard

  overall:
    combine:
      - ref: text_sim
        weight: 0.8
      - ref: tag_sim
        weight: 0.2

network:
  edges:
    similarity: overall
    min: 0.4

Use it:

from src.network_rag import NetworkRAG

# Load from config
rag = NetworkRAG.builder().from_config('config/papers.yaml').build()

# Add documents
rag.add('paper1', document={
    'title': 'Attention Is All You Need',
    'abstract': 'The dominant sequence transduction models...',
    'tags': ['transformers', 'attention', 'nlp']
})

# Build network and search
rag.build_network()
results = rag.search('transformer architecture').top(10)

2. Interactive REPL (Great for Exploration)

# Start REPL
network-rag repl

# Interactive session
[no db]> db connect papers.db
 Connected to papers.db

papers.db> add "Attention Is All You Need - introducing transformers"
 Added document: abc123

papers.db [1 docs]> build
 Network built: 1 nodes, 0 edges

papers.db [1 docs]> search "transformers"
Search: transformers
Found 1 results:

1. abc123 (score: 0.892)
   Attention Is All You Need - introducing transformers

See REPL Guide for complete guide.

3. Fluent API (Powerful Python Interface)

from src.network_rag import NetworkRAG

# Build with fluent API
rag = (NetworkRAG.builder()
       .with_storage('knowledge.db')
       .with_tfidf_embeddings(max_features=512)
       .with_similarity_threshold(min_similarity=0.7)
       .from_config('config/papers.yaml')
       .build())

# Add documents with method chaining
with rag.batch() as batch:
    batch.add("Document 1...", metadata={'category': 'ML'})
    batch.add("Document 2...", metadata={'category': 'NLP'})
    batch.add("Document 3...", metadata={'category': 'Vision'})

# Advanced queries
results = (rag.search("neural networks")
           .with_strategy("community")
           .filter(category="ML")
           .expand_neighbors(hops=2)
           .prioritize_hubs()
           .top(10))

# Rich result objects
for result in results:
    print(f"{result.id}: {result.score:.3f}")
    print(f"  Community: {result.community_id}")
    print(f"  Content: {result.content[:100]}...")

See Fluent API Guide for complete API reference.

Core Concepts

Structured Similarity

Instead of embedding entire documents, Complex Network RAG embeds individual fields:

# Different fields can have different strategies
title:     TF-IDF embedding (semantic, exact titles matter)
abstract:  TF-IDF with sentence chunking (semantic, handles long text)
tags:      Jaccard similarity (set overlap, no embedding needed)
authors:   Exact match (boolean, either same or not)

This gives you: - Fine-grained control over what matters - Better performance (no need to embed everything) - Hybrid strategies combining semantics + metadata - Explainable scores (see contribution of each component)

Network Topology

Documents form a similarity graph where edges connect similar documents. This enables:

Communities: Clusters of related knowledge

communities = rag.detect_communities()
# Community 0: ML papers
# Community 1: Medical documents
# Community 2: Legal texts

Hubs: High-degree nodes connecting domains

hubs = rag.get_hub_nodes(min_degree=10)
# Node "attention-mechanisms" connects NLP, Vision, and Speech

Bridges: High-betweenness nodes enabling cross-domain transfer

bridges = rag.get_bridge_nodes(min_betweenness=0.1)
# Node "optimization-theory" bridges ML and Operations Research

Retrieval Strategies

Complex Network RAG offers multiple retrieval strategies:

  • similarity: Traditional cosine similarity (baseline)
  • community: Prefer documents in same community (coherence)
  • hub: Prioritize high-degree nodes (versatile knowledge)
  • bridge: Emphasize cross-domain connectors (transfer learning)
  • hybrid: Intelligent combination of all strategies (recommended)

Project Structure

complex-network-rag/
├── src/                          # Core source code
│   ├── network_rag.py           # Main NetworkRAG class
│   ├── fluent.py                # Fluent API builders
│   ├── cli.py                   # Command-line interface
│   ├── repl.py                  # Interactive REPL
│   ├── storage.py               # SQLite storage backend
│   ├── embeddings.py            # Embedding providers
│   ├── dsl.py                   # DSL parser and config
│   ├── similarity_engine.py     # Similarity computation engine
│   └── ...
├── config/                       # Example YAML configurations
│   ├── papers_full.yaml         # Research papers (complete)
│   └── ...
├── examples/                     # Example scripts
│   ├── repl_demo.md            # REPL tutorial
│   ├── fluent_api.py           # Fluent API examples
│   ├── basic_usage.py          # Basic usage
│   └── ...
├── tests/                        # Comprehensive test suite (1000+ tests)
├── docs/                         # Documentation (see below)
└── README.md                     # This file

Documentation

Getting Started

Core Concepts

API References

Implementation Details

Examples

Research Papers

See config/papers_full.yaml for complete configuration.

from src.network_rag import NetworkRAG

# Load papers config
rag = NetworkRAG.builder().from_config('config/papers_full.yaml').build()

# Add papers
rag.add('transformer', document={
    'title': 'Attention Is All You Need',
    'abstract': 'The dominant sequence transduction models...',
    'authors': ['Vaswani', 'Shazeer', 'Parmar'],
    'tags': ['transformers', 'attention', 'seq2seq']
})

rag.add('bert', document={
    'title': 'BERT: Pre-training of Deep Bidirectional Transformers',
    'abstract': 'We introduce BERT, a new language representation model...',
    'authors': ['Devlin', 'Chang', 'Lee', 'Toutanova'],
    'tags': ['transformers', 'pretraining', 'nlp']
})

# Build and query
rag.build_network()
communities = rag.detect_communities()

# Find papers about transformers
results = rag.search('transformer architecture').with_strategy('hybrid').top(10)

E-commerce Products

See config/products_basic.yaml for complete configuration.

# Products with semantic + metadata matching
rag = NetworkRAG.builder().from_config('config/products_basic.yaml').build()

rag.add('laptop1', document={
    'name': 'MacBook Pro 14"',
    'description': 'Powerful laptop with M3 chip...',
    'category': 'laptops',
    'price': 1999.00,
    'brand': 'Apple'
})

# Query combines semantic similarity (name, description)
# with exact category match and price range
results = rag.search('powerful laptop for development').filter(category='laptops').top(10)

Chat Conversations

See config/conversations.yaml for role-weighted chat embeddings.

Performance

Storage Estimates (768-dim embeddings)

Documents Storage Size Build Time Search Time
1K ~3.5 MB ~0.3s <10ms
10K ~35 MB ~25s <50ms
100K ~350 MB ~5min <200ms

Similarity Thresholds

The min_similarity threshold controls network density:

Threshold Use Case Edge Density Notes
0.6 Exploratory ~5% Dense network, more connections
0.7 General use ~3% Balanced (recommended)
0.8 Large datasets ~0.5% Sparse, high precision
0.9 Very large ~0.05% Very sparse, may miss connections

Testing

Comprehensive test suite with 755+ tests:

# Run all tests
pytest

# Run with coverage
pytest --cov=src --cov-report=html

# Run specific test files
pytest tests/test_network_rag.py -v
pytest tests/test_structured_similarity.py -v
pytest tests/test_yaml_parser.py -v

Test categories: - Unit tests: Individual components (storage, embeddings, similarity) - Integration tests: End-to-end workflows - REPL tests: Interactive shell functionality - API tests: Fluent interface and builders - Parser tests: YAML DSL validation

Contributing

See Claude Code Guide for development setup and guidelines.

Key areas for contribution: - New embedding providers (OpenAI, Cohere, etc.) - Additional chunking strategies - Network visualization tools - Performance optimizations - Documentation improvements

Roadmap

Current (v0.1.0)

  • ✅ Structured similarity with field-level embeddings
  • ✅ Hybrid linkage (embeddings + attribute similarity)
  • ✅ YAML DSL with full validation
  • ✅ Fluent API, CLI, and REPL interfaces
  • ✅ SQLite storage with hierarchical embeddings
  • ✅ Network analysis (communities, hubs, bridges)
  • ✅ Comprehensive testing (755+ tests)

Near Term (v0.2.0)

  • Additional embedding providers (OpenAI, Cohere, HuggingFace)
  • Advanced chunking strategies (sliding window, semantic)
  • REPL Phase 3: Session persistence, script export
  • Network visualization (matplotlib, networkx)
  • Performance optimizations (caching, incremental updates)

Future (v1.0.0)

  • Distributed processing for large datasets
  • Real-time incremental updates
  • Advanced retrieval strategies (PageRank, random walks)
  • Integration with LLM frameworks (LangChain, LlamaIndex)
  • REST API for remote access

Citation

If you use Complex Network RAG in your research, please cite:

@software{complex_network_rag,
  title = {Complex Network RAG: Topology-Aware Retrieval for Knowledge Graphs},
  author = {Your Name},
  year = {2025},
  url = {https://github.com/yourusername/complex-network-rag}
}

License

MIT License - see LICENSE file for details.

Acknowledgments

Support

  • Documentation: See docs/ directory
  • Examples: See examples/ directory
  • Issues: GitHub issue tracker
  • Discussions: GitHub discussions

Complex Network RAG - Making knowledge graphs smarter through topology-aware retrieval.