Skip to main content

🧊 White Walker

PyPI version Python License: MIT

Multimodal Agentic RAG — Index PDFs & Markdown into hierarchical tree structures, persist in Supabase, and query with LLM-powered retrieval.

White Walker transforms documents into navigable tree indexes using LLM-based structural analysis, stores them in Supabase (or locally), and answers questions by intelligently traversing the tree to find relevant sections.


✨ Features

  • 🌲 Hierarchical Tree Indexing — Automatically detects document structure (TOC, sections, subsections) and builds a navigable tree
  • 🗄️ Supabase Persistence — Trees, raw pages, and metadata stored in PostgreSQL via Supabase
  • 🤖 Agentic Retrieval — LLM navigates the tree to find relevant sections, then synthesizes answers with citations
  • 📄 PDF & Markdown Support — Works with academic papers, technical docs, and any structured document
  • ⚡ Rate-Limited API — Built-in token-bucket rate limiter for NVIDIA NIM API (38 RPM, configurable)
  • 🔌 Pluggable LLM Backend — Default: NVIDIA NIM API, easily extensible

📦 Installation

pip install white-walker

🚀 Quick Start

1. Set Environment Variables

# .env file
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-anon-key
NVIDIA_API_KEY=your-nvidia-nim-api-key

2. Set Up Supabase Tables

Run the SQL in setup_supabase.sql in your Supabase SQL editor to create the required tables (rag_documents, rag_raw_pages, rag_tree_nodes).

3. Index & Query

from white_walker import WhiteWalkerClient

client = WhiteWalkerClient()

# Index a PDF
doc_id = client.index("paper.pdf")

# Query the indexed document
result = client.query(doc_id, "What is the main contribution of this paper?")

print(result["answer"])
print(result["citations"])
print(result["confidence"])  # "high", "medium", or "low"

🏗️ Architecture

PDF / Markdown
       │
       ▼
┌─────────────────┐
│   PDF Ingestor   │  Extracts text, detects TOC, builds hierarchical tree
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Tree Indexer    │  LLM-based section detection, title verification,
│                  │  page-number alignment, node summarization
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Supabase Store  │  Persists tree nodes, raw pages, document metadata
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Agent Retriever  │  LLM navigates tree → finds relevant nodes →
│                  │  fetches page content → synthesizes cited answer
└─────────────────┘

⚙️ Configuration

White Walker uses white_walker/config.yaml for defaults:

Parameter Default Description
model moonshotai/kimi-k2.6 NVIDIA NIM model for indexing & retrieval
toc_check_page_num 20 Max pages to scan for table of contents
max_page_num_each_node 10 Max pages per tree node
max_token_num_each_node 20000 Max tokens per tree node

Override at initialization:

client = WhiteWalkerClient(model="meta/llama-3.1-70b-instruct")

🔑 Environment Variables

Variable Required Description
NVIDIA_API_KEY ✅ NVIDIA NIM API key for LLM calls
SUPABASE_URL Optional Supabase project URL (falls back to local storage)
SUPABASE_KEY Optional Supabase anon/service key

📊 Evaluation

White Walker includes a RAGAS-based evaluation pipeline for benchmarking against multimodal agentic RAG datasets. See evaluate_pipeline.py for details.


📄 License

MIT License — see LICENSE for details.


🙏 Acknowledgments

Built on the foundation of VectifyAI/PageIndex, re-architected for local processing, Supabase persistence, and pluggable LLM backends.

Metadata

Release files for White-Walker 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for White-Walker 0.7.0
File Size Uploaded
white_walker-0.7.0.tar.gz 28.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for White-Walker 0.7.0
File Interpreter ABI Platform
white_walker-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.2 kB

Release files / white_walker-0.7.0.tar.gz

Download URL white_walker-0.7.0.tar.gz
Size 28.9 kB
Tags Source
SHA-256 checksum
How to use checksums
240533cfc8bfdd71be1c511109e3333541dac346cf4ac67e5264a49383776742
BLAKE2b-256 checksum
How to use checksums
0d1a5801e571f3dc8cc1b1c3eba0a36a6b2b254843611c1d778dd80d1634bf8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release files / white_walker-0.7.0-py3-none-any.whl

Download URL white_walker-0.7.0-py3-none-any.whl
Size 33.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
af67a676debc52289355317cdde23bd027f911fbfb6ecba3a9ffb845956dc0d8
BLAKE2b-256 checksum
How to use checksums
40cf255530e063f90577d600dd9d81d9b2414d35519cd13e7fa7b7978d371395
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page