Skip to main content

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};