vectorless/retrieval/mod.rs
1// Copyright (c) 2026 vectorless developers
2// SPDX-License-Identifier: Apache-2.0
3
4//! Retrieval system for Vectorless document trees.
5//!
6//! This module implements a hybrid retrieval architecture combining:
7//! - **Adaptive Strategy Selection**: Automatically chooses between keyword, semantic, and LLM strategies
8//! - **Multi-Path Search**: Beam search and MCTS for exploring multiple tree paths
9//! - **Incremental Retrieval**: Stops early when sufficient information is collected
10//!
11//! # Architecture
12//!
13//! ```text
14//! ┌─────────────────────────────────────────────────────────────────┐
15//! │ RetrievalOrchestrator │
16//! │ │
17//! │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
18//! │ │ Analyze │───►│ Plan │───►│ Search │───►│ Evaluate │ │
19//! │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
20//! │ ▲ │ │
21//! │ └──────────────┘ │
22//! │ (NeedMoreData) │
23//! └─────────────────────────────────────────────────────────────────┘
24//! ```
25//!
26//! # Pipeline Stages
27//!
28//! | Stage | Description |
29//! |-------|-------------|
30//! | [`AnalyzeStage`] | Query analysis (complexity, keywords, targets) |
31//! | [`PlanStage`] | Strategy and algorithm selection |
32//! | [`SearchStage`] | Execute tree search |
33//! | [`EvaluateStage`] | Sufficiency checking |
34//!
35//! # Quick Start
36//!
37//! ```rust,ignore
38//! use vectorless::retrieval::pipeline::{RetrievalOrchestrator, RetrievalStage};
39//! use vectorless::retrieval::stages::{AnalyzeStage, PlanStage, SearchStage, EvaluateStage};
40//!
41//! let orchestrator = RetrievalOrchestrator::new()
42//! .stage(AnalyzeStage::new())
43//! .stage(PlanStage::new())
44//! .stage(SearchStage::new())
45//! .stage(EvaluateStage::new());
46//!
47//! let response = orchestrator.execute(tree, query, options).await?;
48//! ```
49
50mod context;
51mod decompose;
52mod pipeline_retriever;
53mod reference;
54mod retriever;
55mod types;
56
57pub mod cache;
58pub mod complexity;
59pub mod content;
60pub mod pilot;
61pub mod pipeline;
62pub mod search;
63pub mod stages;
64pub mod strategy;
65pub mod sufficiency;
66
67pub use context::{
68 ContextBuilder, PruningStrategy, TokenEstimation, format_for_llm, format_for_llm_async,
69 format_tree_for_llm, format_tree_for_llm_async,
70};
71pub use pipeline_retriever::PipelineRetriever;
72pub use retriever::{RetrievalContext, Retriever, RetrieverError, RetrieverResult};
73pub use types::*;
74
75// Re-export StrategyPreference as Strategy for convenience
76pub use types::StrategyPreference as Strategy;
77
78// Pipeline exports
79pub use pipeline::{
80 CandidateNode, ExecutionGroup, FailurePolicy, PipelineContext, RetrievalMetrics,
81 RetrievalOrchestrator, RetrievalStage, SearchAlgorithm, SearchConfig, StageOutcome,
82};
83
84// Re-export PipelineContext as RetrievalContext for stages (alias for clarity)
85pub use pipeline::PipelineContext as StageContext;
86
87// Stage exports
88pub use stages::{AnalyzeStage, EvaluateStage, PlanStage, SearchStage};
89
90// Strategy exports
91pub use strategy::{
92 CrossDocumentConfig, CrossDocumentStrategy, DocumentEntry, DocumentId, DocumentResult,
93 HybridConfig, HybridStrategy, KeywordStrategy, LlmStrategy, MergeStrategy,
94 PageRange, PageRangeConfig, PageRangeStrategy, RetrievalStrategy, SemanticStrategy,
95 StrategyCapabilities, StrategyCost,
96};
97
98// Search exports
99pub use search::{BeamSearch, GreedySearch, SearchConfig as SearchAlgConfig, SearchResult};
100
101// Sufficiency exports
102pub use sufficiency::{SufficiencyChecker, SufficiencyLevel, ThresholdChecker};
103
104// Complexity exports
105pub use complexity::ComplexityDetector;
106
107// Cache exports
108pub use cache::PathCache;
109
110// Content aggregation exports
111pub use content::{
112 AggregationResult, AllocationResult, AllocationStrategy, BudgetAllocator, ContentAggregator,
113 ContentAggregatorConfig, ContentChunk, ContentRelevance, OutputFormat, RelevanceScorer,
114 ScoreComponents, ScoringStrategyConfig, SelectedContent, StructureBuilder, StructuredContent,
115};
116
117// Pilot exports
118pub use pilot::NoopPilot;
119pub use pilot::{
120 BudgetConfig, InterventionConfig, InterventionPoint, Pilot, PilotConfig, PilotDecision,
121 PilotMode, RankedCandidate, SearchDirection, SearchState,
122};
123
124// Decompose exports (multi-turn retrieval)
125pub use decompose::{
126 DecompositionConfig, DecompositionResult, QueryDecomposer, ResultAggregator, SubQuery,
127 SubQueryComplexity, SubQueryResult, SubQueryType,
128};
129
130// Reference following exports
131pub use reference::{
132 expand_with_references, FollowedReference, ReferenceConfig, ReferenceExpansion,
133 ReferenceFollower,
134};