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
feat(docs): update documentation with agent-based navigation and QueryContext
- Replace LLM Navigation with LLM Agent Navigation that uses commands
(ls, cd, cat, find, grep) for tree traversal
- Add QueryContext import and update query examples to use new API
- Change 'What's Next?' to 'How It Works' with detailed workflow steps
- Update architecture diagrams to reflect Evidence-based results instead
of Answer
- Add Navigation Index stage to indexing pipeline with NavEntry +
ChildRoute data
- Update Orchestrator description with DocCards review and evidence
formatting
- Expand Worker section with command details, navigation strategy, and
dynamic re-planning
- Add DocCard Catalog explanation for multi-document optimization
- Update cross-document graph with background task implementation
- Revise summary strategies to reflect Worker agent usage
- Simplify getting started examples by removing unnecessary checks
- Update introduction with agent navigation terminology
- Replace search algorithms with worker navigation commands and
strategies
- Consolidate retrieval strategies into unified agent-based approach
Copy file name to clipboardExpand all lines: docs/blog/2026-04-12-welcome/index.mdx
+15-7Lines changed: 15 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ Traditional RAG systems rely on vector embeddings and similarity search. This ap
16
16
Vectorless takes a different path:
17
17
18
18
-**Hierarchical Semantic Trees** — Documents are parsed into a tree of sections, preserving structure and relationships.
19
-
-**LLM Navigation** — Queries are resolved by intelligently traversing the tree, not by comparing vectors.
19
+
-**LLM Agent Navigation** — Queries are resolved by agents that navigate the tree using commands (ls, cd, cat, find, grep), making every decision through LLM reasoning.
20
20
-**Zero Infrastructure** — No vector DB, no embedding models, no similarity search. Just an LLM API key.
21
21
22
22
## Quick Start
@@ -25,7 +25,7 @@ Vectorless takes a different path:
25
25
26
26
```python
27
27
import asyncio
28
-
from vectorless import Engine, IndexContext
28
+
from vectorless import Engine, IndexContext, QueryContext
29
29
30
30
asyncdefmain():
31
31
engine = Engine(
@@ -38,7 +38,9 @@ async def main():
38
38
doc_id = result.doc_id
39
39
40
40
# Query
41
-
answer =await engine.query(doc_id, "What is the total revenue?")
41
+
answer =await engine.query(
42
+
QueryContext("What is the total revenue?").with_doc_ids([doc_id])
1.**Index** — Documents are parsed into hierarchical semantic trees with pre-computed navigation indexes and keyword mappings.
77
+
2.**Query** — The Orchestrator coordinates multi-document retrieval by dispatching Worker agents. Each Worker navigates the tree using commands, collects evidence, and self-evaluates sufficiency.
78
+
3.**Result** — Evidence is deduplicated, ranked by BM25 relevance, and returned as original document text.
79
+
80
+
## What's Next
73
81
74
-
- Cross-document relationship graph
75
-
-Incremental indexing with content fingerprinting
76
-
-Multi-format support (Markdown, PDF, DOCX)
82
+
- Cross-document graph-aware retrieval with score boosting
83
+
-DOCX format support
84
+
-Streaming query results with real-time progress events
77
85
78
86
The project is open source under Apache-2.0. Contributions welcome!
4.**Return** — Collected evidence only — no answer synthesis
108
110
109
-
Workers use tree commands (`ls`, `cd`, `cat`, `grep`, `find`, `findtree`) and a `check` command for self-evaluation.
111
+
#### Available Commands
112
+
113
+
| Command | Description |
114
+
|---------|-------------|
115
+
|`ls`| List children at current position (with summaries and leaf counts) |
116
+
|`cd <name>`| Enter a child node |
117
+
|`cd ..`| Go back to parent |
118
+
|`cat <name>`| Read node content (automatically collected as evidence) |
119
+
|`head <name>`| Preview first N lines (does NOT collect evidence) |
120
+
|`find <keyword>`| Search the document's ReasoningIndex for a keyword |
121
+
|`findtree <pattern>`| Search for nodes by title pattern (case-insensitive) |
122
+
|`grep <pattern>`| Regex search across content in current subtree |
123
+
|`wc <name>`| Show content size (lines, words, chars) |
124
+
|`pwd`| Show current navigation path |
125
+
|`check`| Evaluate if collected evidence is sufficient |
126
+
|`done`| End navigation |
127
+
128
+
#### Navigation Strategy
129
+
130
+
Workers prioritize keyword-based navigation over manual exploration:
131
+
132
+
1. When keyword index hits are available, Workers use `find` with the exact keyword to jump directly to relevant sections
133
+
2. Workers use `ls` when no keyword hints exist or when discovering unknown structure
134
+
3. Workers use `findtree` when the section title pattern is known but not the exact name
135
+
136
+
#### Dynamic Re-planning
137
+
138
+
After a `check` command finds insufficient evidence, the Worker triggers a re-plan — the LLM generates a new navigation plan based on what's missing. This allows the Worker to adapt its strategy mid-navigation.
110
139
111
140
### Rerank Pipeline
112
141
113
142
After all Workers complete, the Orchestrator runs the final pipeline:
114
143
115
144
1.**Dedup** — Remove duplicate and low-quality evidence
116
145
2.**BM25 Scoring** — Rank evidence by keyword relevance
117
-
3.**Answer Generation** — LLM synthesizes or fuses evidence into a final answer
146
+
3.**Evidence Formatting** — Return original document text with source attribution
147
+
148
+
The system returns raw evidence text — no LLM synthesis or paraphrasing. This ensures the user sees the exact document content that matches their query.
149
+
150
+
## DocCard Catalog
151
+
152
+
When multiple documents are indexed, Vectorless maintains a lightweight `catalog.bin` containing DocCard metadata for each document. This allows the Orchestrator to analyze and select relevant documents without loading the full document trees — a significant optimization for workspaces with many documents.
118
153
119
154
## Cross-Document Graph
120
155
121
-
When multiple documents are indexed, Vectorless automatically builds a relationship graph based on shared keywords and Jaccard similarity. This graph enables cross-document retrieval with score boosting.
156
+
When multiple documents are indexed, Vectorless automatically builds a relationship graph based on shared keywords and Jaccard similarity. The graph is constructed as a background task after each indexing operation.
Copy file name to clipboardExpand all lines: docs/docs/features/cross-document-graph.mdx
+9-23Lines changed: 9 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,36 +23,18 @@ Document A ←── 0.72 ──→ Document B
23
23
24
24
### Graph Building
25
25
26
-
After each indexing operation, the graph is automatically rebuilt:
26
+
After each indexing operation, the graph is automatically rebuilt as a background task:
27
27
28
28
1. Extract keyword profiles from each document's reasoning index
29
29
2. Compute pairwise Jaccard similarity
30
30
3. Create edges for document pairs exceeding the similarity threshold
31
31
4. Store the graph in the workspace
32
32
33
-
### Graph-Aware Retrieval
33
+
The graph builder uses keyword weights from the ReasoningIndex — keywords that appear in titles get 2.0× weight, summaries 1.5×, and content 1.0×. This ensures that structurally important keywords have more influence on the similarity calculation.
34
34
35
-
When using the cross-document strategy, the graph boosts scores for connected documents:
35
+
### Accessing the Graph
36
36
37
-
1. Search each document independently
38
-
2. Identify high-confidence results (score > 0.5)
39
-
3. For each high-confidence result, boost neighbor documents' scores
max_keywords_per_doc: 50 — Max keywords extracted per document
101
83
max_edges_per_node: 10 — Max edges per document node
102
84
```
85
+
86
+
## Current Status
87
+
88
+
The graph is built and persisted during indexing. Graph-aware retrieval features (such as score boosting for connected documents) are planned for a future release. Currently, the graph serves as a relationship discovery and inspection tool accessible via the API.
Copy file name to clipboardExpand all lines: docs/docs/features/summary-strategies.mdx
+20-7Lines changed: 20 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ sidebar_position: 1
4
4
5
5
# Summary Strategies
6
6
7
-
Summaries are critical for retrieval quality. The Pilot uses summaries to evaluate candidate nodes during tree navigation. Without summaries, the Pilot can only use node titles for decision-making, which significantly reduces accuracy.
7
+
Summaries are critical for retrieval quality. The Worker agent uses summaries in the NavigationIndex to decide which branches to explore and where to navigate. Without summaries, the Worker can only use node titles for decision-making, which significantly reduces accuracy.
8
8
9
9
## Available Strategies
10
10
@@ -32,7 +32,7 @@ let strategy = SummaryStrategy::selective(100, true);
32
32
-`min_tokens` — Minimum content tokens to generate a summary (default: 100)
33
33
-`branch_only` — Only generate for non-leaf nodes (default: true)
34
34
35
-
**Trade-off**: Lower indexing cost, but leaf nodes lack summaries. The Pilot falls back to title-only evaluation at leaf level.
35
+
**Trade-off**: Lower indexing cost, but leaf nodes lack summaries. The Worker falls back to title-only evaluation at leaf level.
36
36
37
37
### Lazy
38
38
@@ -56,10 +56,23 @@ let strategy = SummaryStrategy::lazy(true);
56
56
57
57
## How Summaries Are Used
58
58
59
-
During retrieval, the Pilot builds context for each candidate node:
59
+
During retrieval, the Worker agent reads summary data from the NavigationIndex at each decision point:
60
60
61
-
1.**Title** — Always available, highest priority signal
62
-
2.**Summary** — Used for semantic evaluation at fork points
63
-
3.**Content** — Used for BM25 scoring and final result
61
+
1.**`ls` output** — Child nodes show their descriptions (derived from summaries) and leaf counts
62
+
2.**Navigation decisions** — The LLM evaluates summaries to decide which branch to enter
63
+
3.**Keyword index** — Topic tags from summaries are indexed for `find` command lookups
64
+
4.**DocCards** — Root-level summaries power the Orchestrator's document selection
64
65
65
-
When a node has no summary, the Pilot's decision quality degrades. This is why **Full** is the default — it ensures the Pilot always has summaries to work with.
66
+
When a node has no summary, the Worker's navigation quality degrades. This is why **Full** is the default — it ensures the Worker always has summary context to work with.
67
+
68
+
## Navigation-Oriented Summaries
69
+
70
+
Branch nodes receive structured summaries with three components:
Copy file name to clipboardExpand all lines: docs/docs/intro.mdx
+9-6Lines changed: 9 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ It transforms documents into hierarchical semantic trees and uses LLMs to naviga
12
12
13
13
1.**Parse** — Documents (Markdown, PDF) are parsed into hierarchical semantic trees, preserving structure and relationships between sections.
14
14
2.**Index** — Trees are stored with metadata, keywords, and summaries. The pipeline resolves cross-references ("see Section 2.1") and expands keywords with LLM-generated synonyms for improved recall. Incremental indexing skips unchanged files via content fingerprinting.
15
-
3.**Query** — An LLMnavigates the tree to find the most relevant sections. Multiple search algorithms (Beam Search, MCTS, Greedy) are available, and the Pilot component provides LLM-guided navigation at key decision points.
15
+
3.**Query** — An LLM-powered agent navigates the tree to find the most relevant sections. The Orchestrator coordinates multi-document queries, dispatching Workers that use `ls`, `cd`, `cat`, `find`, and `grep` commands to explore the tree and collect evidence.
16
16
17
17
## Quick Start
18
18
@@ -24,7 +24,7 @@ pip install vectorless
24
24
25
25
```python
26
26
import asyncio
27
-
from vectorless import Engine, IndexContext
27
+
from vectorless import Engine, IndexContext, QueryContext
28
28
29
29
asyncdefmain():
30
30
engine = Engine(
@@ -35,7 +35,9 @@ async def main():
35
35
result =await engine.index(IndexContext.from_path("./report.pdf"))
36
36
doc_id = result.doc_id
37
37
38
-
answer =await engine.query(doc_id, "What is the total revenue?")
38
+
answer =await engine.query(
39
+
QueryContext("What is the total revenue?").with_doc_ids([doc_id])
-**Hierarchical Semantic Trees** — Preserves document structure, not flat chunks
77
-
-**LLM-Powered Retrieval** — Structural reasoning over the tree, not vector similarity
78
-
-**Cross-Reference Navigation** — Automatically resolves "see Section 2.1", "Appendix G" references and follows them during retrieval
79
+
-**LLM-Powered Agent Navigation** — Worker agents navigate the tree using commands (ls, cd, cat, find, grep), making every retrieval decision through LLM reasoning
80
+
-**Cross-Reference Resolution** — Automatically resolves "see Section 2.1", "Appendix G" references during indexing
79
81
-**Synonym Expansion** — LLM-generated synonyms for indexed keywords improve recall for differently-worded queries
80
-
-**Multi-Algorithm Search** — Beam Search, MCTS, Greedy, and ToC Navigator with LLM Pilot guidance
82
+
-**Orchestrator Supervisor Loop** — Multi-document queries are coordinated by an LLM supervisor that dispatches Workers, evaluates evidence, and replans when needed
81
83
-**Cross-Document Graph** — Automatic relationship discovery between documents via shared keywords
0 commit comments