File size: 27,002 Bytes
860b5fd
56cf8f7
 
 
 
860b5fd
1b81d8f
860b5fd
 
 
fcead5f
860b5fd
723adc4
 
860b5fd
56cf8f7
 
fcead5f
 
 
723adc4
fcead5f
723adc4
 
 
 
 
 
 
 
 
 
f7154a3
b3242a4
 
 
 
56cf8f7
fcead5f
 
 
 
723adc4
fcead5f
723adc4
f7154a3
723adc4
 
 
fcead5f
 
 
 
 
 
 
 
 
 
 
723adc4
fcead5f
723adc4
fcead5f
 
 
 
 
 
 
 
723adc4
fcead5f
 
 
 
723adc4
 
 
 
fcead5f
723adc4
fcead5f
 
723adc4
fcead5f
723adc4
 
 
 
 
fcead5f
 
723adc4
fcead5f
723adc4
 
 
 
 
 
 
fcead5f
 
 
 
f7154a3
 
723adc4
fcead5f
 
 
 
 
723adc4
fcead5f
 
 
723adc4
fcead5f
 
 
 
 
 
 
 
 
 
 
723adc4
 
 
 
 
 
 
 
fcead5f
723adc4
fcead5f
 
 
 
 
 
 
723adc4
fcead5f
723adc4
c35d9d3
fcead5f
 
723adc4
 
 
 
 
f7154a3
723adc4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fcead5f
56cf8f7
 
 
fcead5f
 
723adc4
 
 
 
 
 
 
 
 
 
f7154a3
723adc4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b3242a4
 
723adc4
b3242a4
f7154a3
b3242a4
723adc4
b3242a4
f7154a3
b3242a4
723adc4
 
 
 
 
 
 
 
 
 
 
b3242a4
723adc4
 
 
 
 
 
f7154a3
723adc4
f7154a3
 
 
 
 
 
723adc4
f7154a3
723adc4
 
 
 
 
 
 
 
 
b3242a4
f7154a3
723adc4
f7154a3
723adc4
 
b3242a4
723adc4
f7154a3
 
 
 
 
723adc4
 
f7154a3
723adc4
 
 
 
 
 
 
f7154a3
 
 
56cf8f7
 
860b5fd
 
b516520
723adc4
fcead5f
723adc4
 
 
 
f7154a3
723adc4
 
 
 
 
 
 
 
 
56cf8f7
 
 
 
 
fcead5f
723adc4
c35d9d3
723adc4
 
 
c35d9d3
fcead5f
723adc4
 
 
 
 
 
 
c35d9d3
723adc4
fcead5f
723adc4
 
 
 
 
c35d9d3
723adc4
fcead5f
723adc4
 
fcead5f
 
56cf8f7
 
723adc4
 
fcead5f
723adc4
fcead5f
 
 
723adc4
 
fcead5f
56cf8f7
860b5fd
 
b516520
fcead5f
b516520
860b5fd
723adc4
fcead5f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
723adc4
fcead5f
 
56cf8f7
 
 
 
fcead5f
56cf8f7
fcead5f
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
---
title: Atlas Document Intelligence API
emoji: 🌿
colorFrom: green
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
---

# 🌿 Atlas β€” Enterprise Vectorless RAG & Document Intelligence Platform

> **Understand Documents. Discover Knowledge. Reason with Exact Page Verification.**<br>
> Production-grade Vectorless RAG platform powered by hierarchical outline reasoning (`PageIndex` + `PyMuPDF`), pure-Python lexical BM25 with **Nucleus (`top_p`) Cumulative Probability Cutoff**, Sub-Node Paragraph Pruning with **Exact Inner-Page Citation Pinning**, an **Interactive Study Studio** (Mind Maps + Quizzes), a **Research & Study FastMCP Suite** (5 zero-paid-key tools), and resilient dual LLM inference (Hugging Face + Groq zero-downtime failover) on PostgreSQL persistence.

---

## πŸ“‘ Ψ¬Ψ―ΩˆΩ„ Ψ§Ω„Ω…Ψ­ΨͺوياΨͺ / Table of Contents
1. [Overview & Core Philosophy](#-overview--core-philosophy)
2. [Complete System Architecture](#-complete-system-architecture)
3. [Vectorless Hybrid Retrieval & Nucleus (`top_p`) Cutoff](#-vectorless-hybrid-retrieval--nucleus-top_p-cutoff)
4. [Key Features & Capabilities](#-key-features--capabilities)
   - [1. Page Boundary Injection & Exact Inner-Page Pinning](#1-page-boundary-injection--exact-inner-page-pinning)
   - [2. Vectorless Hybrid Search (Tree + BM25 + Nucleus RRF)](#2-vectorless-hybrid-search-tree--bm25--nucleus-rrf)
   - [3. Query Intent Routing & Collective Knowledge Dossiers](#3-query-intent-routing--collective-knowledge-dossiers)
   - [4. Interactive Study Studio (Mind Maps + Quizzes)](#4-interactive-study-studio-notebooklm-style)
   - [5. Research & Study FastMCP Suite (5 Zero-Key Tools)](#5-research--study-fastmcp-suite-5-zero-key-tools)
   - [6. Enterprise Persistence & Multi-Tier Memory](#6-enterprise-persistence--multi-tier-memory)
   - [7. Resilient Dual LLM Inference Engine](#7-resilient-dual-llm-inference-engine-hf--groq)
5. [Industry Benchmarks & Quantitative Evaluation (95 Questions)](#-industry-benchmarks--quantitative-evaluation-95-questions)
   - [Subsystem Health & Functional Audit (Table 1)](#subsystem-health--functional-audit-table-1)
   - [IEEE TKDE Research Benchmark β€” 80 Questions (Table 2)](#ieee-tkde-research-benchmark--80-questions-table-2)
   - [FinanceBench-style 10-K Sample β€” 15 Questions (Table 3)](#financebench-style-10-k-sample--15-questions-table-3)
6. [Tech Stack](#-tech-stack)
7. [API Endpoints Reference](#-api-endpoints-reference)
8. [Environment Variables](#-environment-variables)
9. [Live Deployments](#-live-deployments)

---

## 🌟 Overview & Core Philosophy

**Atlas** redefines Document Intelligence and Retrieval-Augmented Generation (RAG) by completely eliminating vector embeddings, arbitrary chunking, and similarity drift. Instead of blindly slicing documents into 500-token chunks and computing cosine distance over a vector database, Atlas models documents as **Hierarchical Semantic Trees** (`PageIndex` + `PyMuPDF`).

Every section, chapter, table, and footnote preserves its parent-child lineage and exact physical page coordinates. When a user queries the system:
1. **Hybrid Retrieval**: Runs lexical BM25 search and weighted RRF fusion in ~2ms, while the LLM tree-search step adds model latency, achieving an end-to-end average query latency of 1.45s.
2. **Nucleus Consensus (`top_p = 0.75`)**: Combines rankings via Weighted Reciprocal Rank Fusion (RRF: `0.6` Tree, `0.4` BM25) and applies temperature-scaled Softmax to dynamically isolate the minimal sufficient set of nodes (single-hop queries truncate to 1 node; multi-hop queries preserve 2 nodes).
3. **Sub-Node Paragraph Pruning & Exact Inner-Page Pinning**: Filters long sections down to high-density paragraphs and pins citations to the exact `--- [PAGE X] ---` where evidence resides.
4. **Fallback & Extended Research**: When out-of-document facts, arXiv papers, mathematical ratios, or YouTube lectures are needed, Atlas activates its built-in **Research & Study FastMCP Suite** with zero external API fees.

---

## πŸ›οΈ Complete System Architecture

```mermaid
flowchart TB
    subgraph Client_Layer["πŸ–₯️ Frontend Client (React 19 + Vite / Vercel)"]
        direction TB
        UI_Sidebar["Sidebar (Sessions, Multi-Chat & Unread Indicators)"]
        UI_Explorer["Document Structure Explorer (Hierarchical Tree View)"]
        UI_Studio["Study Studio (Interactive Mind Map & Flashcard Quiz)"]
        UI_Chat["Concurrent Async Chat (Multi-Session Streaming)"]
        UI_Sources["Interactive Source Badges (πŸ“„ PDF Pages & 🌐 Web Badges)"]
        UI_Memory["Knowledge Memory & Workspace Dossier View"]
        UI_SSE["SSE Stream Parser & Background Dispatcher"]
        UI_Storage[("Browser LocalStorage Cache")]

        UI_Sidebar <--> UI_Chat
        UI_Chat <--> UI_Sources
        UI_Chat <--> UI_SSE
        UI_Chat <--> UI_Storage
        UI_Sidebar <--> UI_Studio
    end

    subgraph API_Layer["⚑ Backend Gateway (FastAPI / Hugging Face Spaces)"]
        direction TB
        Router_Chat["/ask & /chat Routers (Streaming SSE, Multi-Doc)"]
        Router_Studio["/studio Router (/mindmap, /quiz MCQs & Flashcards)"]
        Router_Tools["/tools Router (Web, arXiv, YouTube, Math)"]
        Router_Docs["/documents Router (Upload, Ingestion, Trees)"]
        Router_Memory["/memory Router (Dossiers, Workspace Synthesis)"]
        Router_MCP["FastMCP Server Mount (/mcp via SSE/HTTP)"]
    end

    subgraph FastMCP_Suite["🌐 Research & Study FastMCP Suite (Zero Paid Keys)"]
        direction LR
        Tool_Web["Deep Web Reader (httpx + BS4/Trafilatura, 6s timeout)"]
        Tool_ArXiv["Academic arXiv Tool (export.arxiv.org Atom API)"]
        Tool_YT["YouTube Transcript (Segmenter & Chapter Analyzer)"]
        Tool_Math["Safe AST Math Evaluator (AST Whitelist, Zero eval)"]
        Tool_Atlas["Atlas Internal Tools (list_docs, query, dossiers)"]
    end

    subgraph Core_Engine["🧠 Vectorless RAG & Reasoning Pipelines"]
        direction TB
        Intent_Classifier["Fast Intent Classifier (< 0.02ms Deterministic)"]
        Doc_Service["DocumentService (PageIndex API + PyMuPDF Page Markers)"]
        BM25_Engine["Zero-Dependency Okapi BM25 (Arabic/English Stemmer)"]
        RAG_Pipeline["VectorlessRAG (Weighted RRF + Nucleus top_p Softmax)"]
        Pruner["Sub-Node Paragraph Pruning & Exact Inner-Page Pinning"]
        LLM_Service["LLMService (Tree Search, Grounded Synthesis, Dual Failover)"]
        Memory_Service["MemoryService (Short-Term, Long-Term, Workspace Dossiers)"]
    end

    subgraph AI_Inference["πŸ€– Resilient Dual-Provider LLM Engine"]
        direction LR
        HF_LLM["Hugging Face Serverless (Primary: meta-llama/Llama-3.1-8B-Instruct)"]
        Groq_LLM["Groq Cloud API (Zero-Downtime Fallback: qwen/qwen3.8-27b)"]
        HF_LLM -.->|Auto-Failover on 402/Limit/Error| Groq_LLM
    end

    subgraph Persistence_Layer["πŸ’Ύ Enterprise Persistence & Database"]
        direction TB
        Mem_Store["MemoryStorage (In-Memory Hot Cache)"]

        subgraph DB_System["PostgreSQL / Supabase (AWS eu-west-1)"]
            PG_Pool["Threaded Connection Pool (psycopg2)"]
            T_Meta[("doc_meta (Metadata & Statuses)")]
            T_Indices[("doc_indices (JSONB Trees & Injected Markers)")]
            T_Chats[("chats & messages (Isolated Sessions)")]
            T_Docs[("chat_documents (Multi-Doc Associations)")]
            T_Memory[("knowledge_memory (Per-Doc Dossiers)")]
            T_Global[("global_knowledge_summary (Workspace)")]
        end

        SQLite_Fallback[("SQLite Local Fallback (memory.db)")]
    end

    %% Wiring
    Client_Layer <==>|REST API & SSE Streams| API_Layer
    API_Layer <--> Router_MCP
    Router_MCP <--> FastMCP_Suite
    Router_Studio --> LLM_Service
    Router_Chat --> Intent_Classifier
    Intent_Classifier --> RAG_Pipeline
    RAG_Pipeline --> BM25_Engine & Doc_Service
    RAG_Pipeline --> Pruner
    Pruner --> LLM_Service
    LLM_Service <==> AI_Inference
    Router_Memory --> Memory_Service
    Mem_Store <--> PG_Pool
    PG_Pool --> T_Meta & T_Indices & T_Chats & T_Docs & T_Memory & T_Global
    PG_Pool -.->|Offline Failover| SQLite_Fallback
```

---

## 🧭 Vectorless Hybrid Retrieval & Nucleus (`top_p`) Cutoff

Instead of relying on arbitrary static `top_k=3` cutoffs that pollute LLM context on single-fact queries, Atlas dynamically sizes the retrieved node set via **Temperature-Scaled Softmax Nucleus Retrieval**:

```mermaid
flowchart TD
    Q["User Query"] --> Clf{"Fast Intent Classifier (< 0.02ms)"}

    Clf -->|"Academic Paper"| MCP_Arxiv["FastMCP arXiv Tool (export.arxiv.org)"]
    Clf -->|"Live Market / Web"| MCP_Web["FastMCP Web Reader (Clean Markdown)"]
    Clf -->|"Global / Overview"| Dossier["Pre-computed Executive Dossier + Root Chapters"]
    Clf -->|"Specific / Numerical"| Hybrid["Parallel Hybrid Search (BM25 + Fusion ~2ms)"]

    Hybrid --> Tree["Hierarchical LLM Tree Traversal (Weight 0.6)"]
    Hybrid --> BM25["Pure-Python Okapi BM25 (Weight 0.4)"]

    Tree & BM25 --> Consensus["Consensus Score: S(d) = sum w_L / (60 + rank_L) * Density"]
    Consensus --> Softmax["Temperature-Scaled Softmax (T = 0.15): P(node_i)"]
    Softmax --> Nucleus{"Accumulate P(node_i) until sum >= top_p (0.75)"}

    Nucleus -->|Single-Node Local Query| Top1["Select Minimal Sufficient Top-1 Node"]
    Nucleus -->|Multi-Hop Complex Query| Top2["Preserve High-Relevance Top-2 Nodes (min_k=2)"]

    Top1 & Top2 --> Prune["Sub-Node Paragraph Pruning (> 1200 chars)"]
    Prune --> PagePin["Pin Exact Inner-Page: active_page from --- [PAGE X] ---"]
    PagePin --> PostFilter["Trailing Noise Filter (Drop nodes < 0.22 of Top Score)"]

    PostFilter --> MathCheck{"Contains Numerical Ratio or Calculation?"}
    MathCheck -->|"Yes"| ASTMath["Safe AST Math Evaluator (AST Whitelist, Zero eval)"]
    MathCheck -->|"No"| Synthesis["Grounded LLM Synthesis Stream"]
    ASTMath --> Synthesis

    Synthesis --> Output["Answer with Verifiable Citations (Section: 'Title', Page: X)"]
```

---

## πŸš€ Key Features & Capabilities

### 1. πŸ“„ Page Boundary Injection & Exact Inner-Page Pinning
- **Marker Format**: Injects explicit `--- [PAGE X] ---` tokens during document ingestion for every physical page transition.
- **Sub-Node Paragraph Pruning**: Long sections (> 1,200 characters) are parsed into individual paragraphs, scoring each paragraph against query keywords, phrase bi-grams, and numerical entities.
- **Inner Active Page Tracking**: Tracks the exact preceding page marker for the winning paragraph, exposing `node["active_page"]` to `LLMService`.
- **Result**: Raises Citation Page Accuracy from **38.33% to 83.13%**, eliminating imprecise section-level citations in multi-page sections.

### 2. 🌲 Vectorless Hybrid Search (Tree + BM25 + Nucleus RRF)
- **100% Vectorless**: Consumes zero vector storage, requires no vector database (Qdrant, Chroma, Pinecone), and eliminates cosine drift.
- **Sub-Millisecond Lexical Index**: Powered by a zero-dependency Okapi BM25 implementation supporting Arabic and English tokenization, BM25 title boosting ($3\times$), and inverted index hashing in under **0.5ms**.
- **Nucleus (`top_p = 0.75`) Cumulative Probability Cutoff**: Normalizes consensus candidate scores into a probability distribution via Softmax ($T=0.15$), rejecting long-tail noise candidates ($P < 0.18$).
- **Result**: Pushes Context Precision from **39.16% to 82.50%** on IEEE benchmarks and **81.1%** on the FinanceBench-style 10-K sample.

### 3. 🧠 Query Intent Routing & Collective Knowledge Dossiers
- **Sub-Millisecond Classifier**: Classifies queries in $< 0.02\text{ms}$ into `Local`, `Global / Overview`, `Multi-Hop`, `Comparison`, or `External Tool` routes.
- **Dossier Injection**: For global overview and cross-chapter synthesis queries, Atlas automatically injects the document's pre-computed Executive Dossier from `MemoryService` alongside root chapter summaries.
- **Result**: Boosts Global Questions Retrieval Recall from **41.0% to 52.6%**.

### 4. πŸŽ“ Interactive Study Studio (NotebookLM-Style)
- **Interactive Mind Map (`GET /studio/{doc_id}/mindmap`)**: Automatically transforms the document's hierarchical outline tree and key concept findings into a visual node-edge graph with section titles and page numbers.
- **AI Quiz & Flashcard Generator (`POST /studio/{doc_id}/quiz`)**: Generates 5 high-yield Multiple Choice Questions (with options, correct answer, and explanation) and 5 Flashcards (front/back), each pinned to its exact `(Section, Page)` source citation.
- **Frontend Workspace Integration**: Deep interactive viewer tab allowing users to click graph nodes to jump directly to document sections.

### 5. 🌐 Research & Study FastMCP Suite (5 Zero-Key Tools)
Mounted via official Model Context Protocol (FastMCP) at `/mcp` and exposed through REST endpoints with zero paid API key dependencies:
1. **Deep Web Reader (`read_webpage_markdown`)**: Fetches full web pages using HTTPX and cleans HTML into readable Markdown via BeautifulSoup/Trafilatura with a strict 6-second timeout.
2. **Academic & arXiv Tool (`search_arxiv_papers`)**: Queries the public arXiv Atom API (`export.arxiv.org`) for preprint titles, authors, abstracts, and direct PDF links.
3. **YouTube Lecture Transcript (`fetch_youtube_transcript`)**: Extracts video IDs from any YouTube URL pattern, fetches transcripts, and segments them into 3-minute study chapters.
4. **Safe AST Math Evaluator (`evaluate_math_expression`)**: Evaluates financial ratios, YoY growth rates, percentages, and math expressions using an Abstract Syntax Tree (AST) whitelistβ€”blocking `eval()`, `exec()`, and malicious injection vectors.
5. **Atlas Internal MCP Tools (`atlas_*`)**: Allows external agents (Cursor, Claude Desktop, Antigravity) to list indexed documents, query trees, and fetch executive knowledge dossiers directly.

### 6. πŸ’Ύ Enterprise Persistence & Multi-Tier Memory
- **PostgreSQL / Supabase**: Connected via threaded connection pooling (`psycopg2.pool.ThreadedConnectionPool`, 5 to 20 connections) on AWS `eu-west-1`.
- **Three-Tier Isolated Memory**:
  - *Tier 1 (Short-Term)*: Sliding conversational window per chat session.
  - *Tier 2 (Long-Term)*: Rolling structured summaries preventing prompt bloat.
  - *Tier 3 (Workspace Knowledge)*: Pre-computed per-document dossiers and unified workspace synthesis.
- **Resilient Fallback**: Gracefully degrades to local SQLite (`memory.db`) if cloud persistence is temporarily unreachable.

### 7. πŸ›‘οΈ Resilient Dual LLM Inference Engine (HF + Groq)
- **Primary Provider**: Hugging Face Serverless Inference API (`meta-llama/Llama-3.1-8B-Instruct`).
- **Zero-Downtime Fallback**: Instantaneous automated failover to Groq Cloud API (`qwen/qwen3.8-27b`) upon token credit exhaustion (`402 Payment Required`), rate limits (`429`), or timeouts.

---

## πŸ“Š Industry Benchmarks & Quantitative Evaluation (95 Questions)

Atlas was systematically validated across **95 comprehensive evaluation questions** combining an **80-question IEEE Research Benchmark** (`data.pdf`: *Unifying LLMs and Knowledge Graphs: A Roadmap*, IEEE TKDE 2024, 28 pages) with a **15-question FinanceBench-style 10-K sample** (`financebench_10k_sample.pdf`, 6 pages).

### Subsystem Health & Functional Audit (Table 1)

All 9 integrated subsystems, tools, and routers passed automated verification with strict latency bounds:

| Subsystem / Tool | Audit Status | Latency | Operational Description |
| :--- | :---: | :---: | :--- |
| **Ingestion & Page Boundary Injection** | βœ… PASS | 1,344.9 ms | Ingested 6 pages, 6 sections, 100% page marker coverage |
| **Vectorless Hybrid Retrieval (BM25 + RRF + Pruning)** | βœ… PASS | 2.2 ms | BM25 search 0.47ms, fused top-4 nodes, pruning preserved page markers |
| **MCP: Safe Math Evaluator (`evaluate_math_expression`)** | βœ… PASS | 0.6 ms | AST-whitelisted ratios & exploit blocking verified |
| **MCP: Academic & arXiv Tool (`search_arxiv_papers`)** | βœ… PASS | 8,203.5 ms | Queried public arXiv Atom API (zero paid API keys) |
| **MCP: Deep Web Reader (`read_webpage_markdown`)** | βœ… PASS | 80.6 ms | Clean Markdown extraction with 6s safeguard timeout |
| **MCP: YouTube Transcript (`fetch_youtube_transcript`)** | βœ… PASS | 0.3 ms | URL extractor & 3-minute chapter segmentation |
| **MCP: Atlas Internal Tools (`atlas_*`)** | βœ… PASS | 856.8 ms | List documents, grounded query, and executive dossier |
| **Studio: Interactive Mindmap (`GET /studio/.../mindmap`)** | βœ… PASS | 301.4 ms | Generated node-edge graph (14 nodes, 13 edges) |
| **Studio: Quiz Generator (`POST /studio/.../quiz`)** | βœ… PASS | 1,538.7 ms | Generated 5 MCQs + 5 Flashcards with exact `(Section, Page)` citations |

---

### IEEE TKDE Research Benchmark β€” 80 Questions (Table 2)

Comparison between baseline PageIndex RAG and the upgraded Atlas platform featuring Nucleus (`top_p = 0.75`) RRF and exact inner-page citation pinning:

| Evaluation Metric | Baseline Score (Pre-Upgrades) | Upgraded Atlas (`top_p` Nucleus) | Delta (pp) | Benchmark Status |
| :--- | :---: | :---: | :---: | :---: |
| **Context Precision** | 39.16% | **82.50%** | **+43.34 pp** | 🎯 **+80% Target Achieved** |
| **Citation Page Accuracy** | 38.33% | **83.13%** | **+44.80 pp** | 🎯 **+80% Target Achieved** |
| **Retrieval Recall** | 73.08% | **77.98%** | **+4.90 pp** | πŸš€ Major Uplift |
| **Answer Correctness** | 87.73% | **90.77%** | **+3.04 pp** | βœ… SOTA Quality |
| **Faithfulness (Anti-Hallucination)** | 90.65% | **92.01%** | **+1.36 pp** | βœ… Strictly Grounded |
| **Global Questions Recall** | 41.00% | **52.60%** | **+11.60 pp** | πŸ† Dossier Boost |
| **Average Query Latency** | 1.80 s | **1.45 s** | **-0.35 s** | ⚑ High Velocity |
| **Average Cost per Query** | $0.000919 | **$0.000512** | **-$0.000407** | πŸ’° Zero Embedding Cost |

#### Category Performance Breakdown (IEEE Benchmark, N=80)
- **Summary Questions (N=10)**: **100.0% Context Precision**, **100.0% Citation Accuracy**, **83.7% Recall**.
- **Multi-Hop Questions (N=20)**: **90.0% Context Precision**, **85.0% Citation Accuracy**, **87.5% Recall**.
- **Numerical / Factual Questions (N=10)**: **90.0% Context Precision**, **90.0% Citation Accuracy**, **90.0% Recall**.
- **Local Questions (N=20)**: **85.0% Context Precision**, **85.0% Citation Accuracy**, **85.0% Recall**.
- **Global Overview Questions (N=20)**: **60.0% Context Precision**, **67.5% Citation Accuracy**, **52.6% Recall**.

---

### FinanceBench-style 10-K Sample β€” 15 Questions (Table 3)

Evaluated against `financebench_10k_sample.pdf` (*Atlas Technologies, Inc. SEC Form 10-K Annual Report*). This dataset is a small synthetic sample (N=15, 3 questions per category), so category-level numbers are indicative, not statistically robust.

| Financial Category | N | Retrieval Recall | Context Precision | Answer Correctness | Faithfulness | Citation Page Acc | Avg Latency | Cost / Query |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **Overall (All 15 Questions)** | 15 | **84.4%** | **81.1%** | **94.7%** | **96.9%** | **81.1%** | **1.25 s** | **$0.000406** |
| **Table & Numerical Extraction** | 3 | 66.7% | 66.7% | 83.3% | 88.7% | 66.7% | β€” | β€” |
| **Financial Ratio & Math Reasoning** | 3 | **100.0%** | **100.0%** | **100.0%** | **100.0%** | **100.0%** | β€” | β€” |
| **Multi-Hop Footnote Synthesis** | 3 | 83.3% | 61.1% | 95.0% | 98.0% | 61.1% | β€” | β€” |
| **Global Executive Summary** | 3 | 72.2% | 77.8% | 95.0% | 98.0% | 77.8% | β€” | β€” |
| **Out-of-Document / Live Web Fallback** | 3 | **100.0%** | **100.0%** | **100.0%** | **100.0%** | **100.0%** | β€” | β€” |

```mermaid
pie title FinanceBench-style 10-K Sample Question Distribution by Category
    "Table & Numerical Extraction" : 3
    "Financial Ratio & Math Reasoning" : 3
    "Multi-Hop Footnote Synthesis" : 3
    "Global Executive Summary" : 3
    "Out-of-Document / Live Web Fallback" : 3
```

- πŸ“„ **Full Benchmark Report:** [evaluation/FULL_BENCHMARK_AND_FINANCEBENCH_REPORT.md](evaluation/FULL_BENCHMARK_AND_FINANCEBENCH_REPORT.md)
- πŸ“Š **FinanceBench-style 10-K Sample Dataset:** [evaluation/financebench_sample.json](evaluation/financebench_sample.json)
- πŸ§ͺ **Master Evaluation Runner:** [evaluation/run_full_system_benchmark.py](evaluation/run_full_system_benchmark.py)

---

## πŸ› οΈ Tech Stack

| Layer | Technologies & Libraries | Key Responsibilities |
|---|---|---|
| **API Gateway** | **FastAPI** (Python 3.11, async runtime) | High-performance asynchronous REST endpoints, SSE streams, CORS |
| **Package Management** | **`uv`** (Astral) | Sub-second deterministic dependency resolution & virtual environments |
| **Vectorless Lexical Engine** | **Zero-Dependency Okapi BM25** | In-memory tokenized index, Arabic/English normalization, title boost |
| **RRF & Nucleus Selection** | **Weighted consensus RRF + Softmax** | Dynamic `top_p = 0.75` cumulative cutoff, $T=0.15$, noise filtering |
| **MCP Server Mount** | **`fastmcp` (4.1.0)** + **`mcp` (2.3.0)** | Official Model Context Protocol server mounted via ASGI at `/mcp` (`>=4.1.0` and `>=2.3.0` in `pyproject.toml`, pinned in `uv.lock`) |
| **Research Tools** | **`httpx`**, **`beautifulsoup4`**, **`trafilatura`** | Clean HTML-to-Markdown extraction, public arXiv Atom XML parser |
| **Media & Math Analysis** | **`youtube_transcript_api`**, **Python `ast`** | Video transcript segmenter, exploit-safe AST math evaluator |
| **Primary LLM Provider** | **`huggingface-hub`** (`meta-llama/Llama-3.1-8B-Instruct`) | Outline tree navigation, sub-node pruning synthesis, citations |
| **Fallback LLM Provider** | **`openai`** (`qwen/qwen3.8-27b` via Groq Cloud) | Automated sub-second zero-downtime failover engine (~0.20s TTFT) |
| **Document Ingestion** | **`PageIndexClient`** + **`PyMuPDF` (fitz)** | Hierarchical outline extraction, `--- [PAGE X] ---` injection |
| **Cloud Persistence** | **PostgreSQL (Supabase)** + `psycopg2-binary` | Connection pooled storage for trees (JSONB), chats, and dossiers |
| **Offline Fallback DB** | **SQLite** (`memory.db`) | Local database fallback if cloud database is unreachable |
| **Frontend UI** | **React 19** + **Vite** + **Tailwind CSS 4** | Interactive workspace, study studio, mind maps, real-time SSE |
| **Deployment** | **Docker** on Hugging Face Spaces + **Vercel** | Containerized backend server + global edge-deployed SPA client |

---

## πŸ”Œ API Endpoints Reference

### 1. Research & Chat
- `POST /ask` β€” Stream grounded answers across single/multiple documents, or conversational mode with FastMCP fallback.
- `POST /chat/new` β€” Create a new isolated chat session.
- `GET /chats` β€” List all persisted chat sessions with unread status indicators.
- `GET /chat/{chat_id}/history` β€” Retrieve full conversation turn history for a session.
- `POST /chat/{chat_id}/attach` β€” Attach an indexed document to a chat session.
- `POST /chat/{chat_id}/attach-multiple` β€” Attach multiple documents simultaneously.
- `GET /chat/{chat_id}/documents` β€” List all documents attached to a session.
- `DELETE /chat/{chat_id}/document/{doc_id}` β€” Detach a specific document from a session.
- `DELETE /chat/{chat_id}` β€” Permanently delete a conversation session.
- `PATCH /chat/{chat_id}/title` β€” Rename a conversation session title.

### 2. Study Studio (NotebookLM-Style)
- `GET /studio/{doc_id}/mindmap` β€” Transform document outline tree and key concept findings into a visual node-edge JSON graph with section titles and page numbers.
- `POST /studio/{doc_id}/quiz` β€” Generate 5 Multiple Choice Questions and 5 Flashcards with exact `(Section, Page)` citations.

### 3. FastMCP Research Tools
- `GET/POST /mcp` β€” FastMCP server endpoint supporting Model Context Protocol via SSE/HTTP.
- `POST /tools/web-search` β€” Direct REST endpoint for live DuckDuckGo web searches (`query`, `max_results`).
- `POST /tools/arxiv-search` β€” Query public arXiv Atom API for academic preprints.
- `POST /tools/read-webpage` β€” Fetch URL and extract clean Markdown with a 6-second timeout.
- `POST /tools/youtube-transcript` β€” Extract transcripts and segment YouTube lectures into study chapters.
- `POST /tools/calculate-math` β€” Execute AST-whitelisted financial and mathematical formulas safely.

### 4. Document Library & Tree Ingestion
- `POST /upload` β€” Upload PDF to trigger asynchronous hierarchical tree indexing (HTTP 202).
- `GET /documents` β€” List all ingested documents, page counts, and indexing statuses.
- `GET /documents/{document_id}` β€” Get metadata, page count, and status for a document.
- `GET /documents/{document_id}/tree` β€” Retrieve the full hierarchical outline tree.
- `DELETE /documents/{document_id}` β€” Permanently delete a document and its cached indices.
- `POST /documents/{document_id}/retry` β€” Retry indexing for a failed document.

### 5. Memory & Collective Knowledge
- `GET /memory/knowledge` β€” Retrieve workspace master knowledge summary and all per-document dossiers.
- `POST /memory/knowledge/refresh` β€” Synthesize and rebuild workspace global knowledge memory.
- `GET /memory/dossier/{doc_id}` β€” Fetch structured knowledge dossier for an individual document.
- `GET /memory/chat/{chat_id}` β€” Inspect short-term turns and long-term rolling summary.
- `POST /memory/chat/{chat_id}/summarize` β€” Force-generate or update session long-term memory.

### 6. Health & Diagnostics
- `GET /health` β€” Check API status, database connectivity, FastMCP status, and indexed document counts.

---

## βš™οΈ Environment Variables

Configure these variables in your `.env` file or in **Hugging Face Space Settings β†’ Variables and secrets**:

```env
# Database Persistence (Supabase PostgreSQL on AWS eu-west-1)
DATABASE_URL="postgresql://postgres.USER:PASSWORD@aws-0-eu-west-1.pooler.supabase.com:5432/postgres"

# Hugging Face Inference Token (Primary Provider)
HF_TOKEN="hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Groq Cloud API (Automatic Zero-Downtime Fallback)
GROQ_API_KEY="gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
GROQ_CHAT_MODEL="qwen/qwen3.8-27b"
GROQ_RETRIEVAL_MODEL="qwen/qwen3.8-27b"

# PageIndex Ingestion API Keys (Rotated for High Throughput)
PAGEINDEX_API_KEY_1="your_pageindex_api_key_1"
PAGEINDEX_API_KEY_2="your_pageindex_api_key_2"
PAGEINDEX_API_KEY_3="your_pageindex_api_key_3"

# Optional Model Selection
HF_RETRIEVAL_MODEL="meta-llama/Llama-3.1-8B-Instruct"
HF_CHAT_MODEL="meta-llama/Llama-3.1-8B-Instruct"
```

---

## 🌐 Live Deployments

- **Frontend Application (Vercel):** [https://vectorless-front-8gpg.vercel.app](https://vectorless-front-8gpg.vercel.app)
- **Backend API (Hugging Face Spaces):** [https://amer003100-vectorless-rag.hf.space](https://amer003100-vectorless-rag.hf.space)
- **Interactive Swagger Docs:** [https://amer003100-vectorless-rag.hf.space/docs](https://amer003100-vectorless-rag.hf.space/docs)
- **FastMCP Endpoint:** `https://amer003100-vectorless-rag.hf.space/mcp`