You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your LLM reads the map --> Picks relevant sections --> Fetches full content
40
-
```
35
+
<divalign="center">
36
+
37
+

38
+
39
+
</div>
40
+
41
+
Traditional RAG shatters documents into arbitrary chunks and relies on vector similarity -- a black box that destroys structure and loses context. Vectorless takes a fundamentally different approach:
|**Traceability**| Black box ranking | Every choice explainable |
49
+
|**Context**| Fragments | Complete sections |
50
+
51
+
## Architecture
52
+
53
+
<divalign="center">
54
+
55
+

56
+
57
+
</div>
58
+
59
+
Vectorless is designed as a modular stack. Your application talks to the API through one of the official SDKs (TypeScript or Python). The API orchestrates document processing across four infrastructure services:
60
+
61
+
-**Neon (PostgreSQL)** -- stores documents, sections, ToC maps, and metadata
-**Upstash QStash** -- manages background jobs for async document processing
64
+
-**Gemini / Claude** -- LLM used to generate summaries and ToC maps
65
+
66
+
## The Retrieval Flow
67
+
68
+
<divalign="center">
69
+
70
+

71
+
72
+
</div>
73
+
74
+
Retrieval happens in three steps:
75
+
76
+
1.**Get the Document Map** -- call `getToC()` to receive a structured Table of Contents with section titles, summaries, and IDs. This is lightweight metadata, not the full content.
77
+
78
+
2.**LLM Reasons Over the Map** -- pass the ToC to your LLM along with the user's query. The LLM reads the summaries and selects exactly the sections relevant to the question. Every choice is visible and explainable.
41
79
42
-
| Traditional RAG | Vectorless |
43
-
|----------------|------------|
44
-
| Arbitrary chunks | Natural sections |
45
-
| Vector similarity | LLM reasoning |
46
-
| Structure destroyed | Structure preserved |
47
-
| Black box ranking | Every choice traceable |
80
+
3.**Fetch Complete Sections** -- call `fetchSections()` with the IDs your LLM selected. You get back full, unbroken section content -- no fragments, no missing context.
0 commit comments