Skip to content

v0.1.11#3

Merged
zTgx merged 21 commits intomainfrom
dev
Apr 4, 2026
Merged

v0.1.11#3
zTgx merged 21 commits intomainfrom
dev

Conversation

@zTgx
Copy link
Copy Markdown
Member

@zTgx zTgx commented Apr 4, 2026

No description provided.

zTgx added 21 commits April 4, 2026 15:30
Add comprehensive benchmark infrastructure with Criterion for measuring
performance across core modules:

- Set up index pipeline benchmarks covering parsing, tree building,
  ToC extraction and full pipeline performance
- Implement retrieval pipeline benchmarks for query analysis, search
  algorithms, judge evaluation and end-to-end retrieval
- Create pilot module benchmarks for intervention decisions, context
  building, response parsing, score merging and full decision flows
- Update roadmap.md to reflect v0.2.0 status with completed features
  including Pilot implementation, backtracking support and new modules
- Add placeholder examples for future implementation including batch
  processing, CLI tool, custom pilot, multi-format support and streaming
- Configure Cargo.toml with benchmark definitions and criterion dependency

These benchmarks provide the foundation for performance optimization
and regression testing as the system evolves.
- Add `child_count()` method for efficient child counting without allocation
- Add `children_iter()` method providing iterator interface to avoid Vec allocation
- Update `children()` to use `children_iter()` internally for consistency
- Add `siblings_iter()` method to get sibling nodes as iterator
- Add `ancestors_iter()` method to get ancestor nodes as iterator
- Add `path_from_root()` method to get complete path from root to node
- Add `depth()` method to get node depth (root = 0)
- Add `first_child()` and `last_child()` convenience methods

refactor(context): use iterator methods instead of collecting into Vec

- Replace `tree.children()` with `tree.children_iter()` in recursive section collection
- Improves memory efficiency by avoiding unnecessary Vec allocations during traversal

refactor(search): use optimized is_leaf check

- Replace manual `tree.children(leaf_id).is_empty()` check with `tree.is_leaf(leaf_id)`
- Uses existing optimized method that was already available in the codebase
- Add RetrievalIndex struct with pre-computed traversal data
- Include methods for accessing leaves, levels, paths, and siblings in O(1) time
- Implement build_retrieval_index method on DocumentTree to create the index
- Add HashMap dependency for caching path and sibling relationships

feat(retrieval): integrate RetrievalIndex into PipelineContext

- Update PipelineContext to include optional RetrievalIndex field
- Automatically build retrieval index when creating new context
- Enable fast access to commonly needed tree traversal operations
- Add leaves_cache field to DocumentTree struct to store cached leaf nodes
- Implement lazy rebuilding of leaves cache with rebuild_leaves_cache() method
- Add invalidate_leaves_cache() method to clear cache when tree is modified
- Update add_child() method to maintain leaves cache consistency
- Modify constructor to initialize cache with root node as initial leaf
- Skip serialization of leaves_cache using serde(skip) attribute
- Return cached leaves when available, otherwise rebuild on demand in leaves() method
- Add `structure` field to TreeNode to store hierarchical path (e.g., "1", "1.1", "1.2.3")
- This provides human-readable paths for LLM navigation and cross-referencing
- Initialize structure field with empty string in Default implementation
- Update test cases to include the new structure field
- Add find_nodes_by_page_range to retrieve nodes overlapping with a page range
- Add get_pages_for_node to get all page numbers covered by a node
- Add find_leaves_by_page_range to get only leaf nodes within a page range
- Add total_pages method to get document's total page count
- Add convenience methods to DocumentTree: find_by_structure,
  find_by_page, and find_nodes_by_page_range
…ark files

Remove criterion benchmark infrastructure that was not implemented,
including all placeholder benchmark files for index, retrieval, and pilot
modules since they contained only placeholder implementations and were
not providing actual performance measurements.
BREAKING CHANGE: The roadmap.md file has been completely removed
as it contained outdated information about the project's future
direction and current status that is no longer relevant.

feat(pilot): integrate semantic navigation guidance into retrieval pipeline

The LLM-based Pilot module is now integrated into the retrieval pipeline
to provide semantic navigation guidance during search operations.
This enables the system to make intelligent decisions about which
document paths to explore based on semantic understanding rather
than purely algorithmic scoring.

The Pilot provides guidance at key decision points including:
- Start: Initial branch selection for root level navigation
- Fork: Decision making when multiple candidate paths exist
- Backtrack: Guidance when need more data or explicit backtracking
- Evaluate: Node assessment and ranking

Additional improvements include:
- Query-specific scoring context for more accurate relevance matching
- Weighted combination of algorithmic and LLM-based scoring
- Budget control with token/call limiting
- Comprehensive logging and debugging information

refactor(search): update beam and greedy search algorithms with Pilot support

Updated both beam search and greedy search implementations to support
Pilot-guided navigation. The changes include query-specific scoring,
weighted merging of algorithmic and Pilot scores, and proper handling
of semantic guidance during search operations.

The search algorithms now:
- Create query-specific scorers for better relevance
- Integrate Pilot decisions with algorithmic scoring
- Maintain visited node tracking to avoid cycles
- Provide fallback mechanisms when no results meet minimum score thresholds

fix(builder): improve LLM client configuration fallback logic

Enhanced the EngineBuilder to provide fallback API key configuration
by checking the summary configuration when retrieval configuration
is not available. This provides more flexible LLM client setup.
The core Pilot interface definition and decision types have been removed
from the pilot.md design document as they are now implemented in code.

fix(builder): make LLM API key required for retrieval functionality

The LLM API key is now required for retrieval since Pilot needs it for
semantic navigation. Updated the builder to enforce this requirement
and added appropriate error handling.

refactor(judge): enhance content aggregation with descendant leaf content

Modified the judge stage to always include both node's own content and
all descendant leaf content for complete context. Added new
collect_leaf_content method to traverse and collect content from
leaf descendants.

docs(readme): update architecture diagram reference

Renamed architecture-v2.svg to architecture.svg and updated the README
to reference the new filename.
Only include original content in retrieval results, not summary
(per design: retrieval should return original text, not summary)

refactor(retrieval): remove debug logging and unused counter from judge stage

Remove unnecessary eprintln! debug statements and visited_count variable
from the judge stage to clean up code and reduce console output
Handle preamble content (content before first heading) and clear the
buffer after storing as preamble to avoid duplication in subsequent
processing.
- Add tracing-subscriber as dev dependency with env-filter feature
- Initialize tracing formatter in markdownflow example
- Add comment explaining how to enable debug output with RUST_LOG=debug
- Implement precision-focused content aggregation with token budget awareness
- Add RelevanceScorer with keyword-based and BM25 scoring strategies
- Create BudgetAllocator with greedy, proportional, and hierarchical allocation
- Build StructureBuilder for markdown and structured output formats
- Design configurable system supporting different scoring and allocation strategies
- Add comprehensive documentation for content aggregation architecture
- Implement fallback mechanisms when no content meets relevance threshold
- Provide detailed performance characteristics and testing strategy
…ge stage

- Add comprehensive content aggregation example demonstrating scoring,
  budget allocation, and structure building
- Export CandidateNode for content aggregation module
- Integrate ContentAggregator into JudgeStage with configurable
  precision-focused aggregation
- Add with_content_aggregator and with_default_content_aggregator
  methods to JudgeStage
- Implement relevance scoring, token budget allocation, and hierarchical
  content selection in judge stage
- Update documentation to reflect new content aggregation capabilities
- Add ContentAggregatorConfig struct with fields for token budget,
  relevance scoring, output formats, and deduplication settings
- Implement conversion from config to retrieval content aggregator config
- Add content configuration option to PipelineRetriever with
  with_content_config method
- Configure content aggregator in Judge stage when enabled
- Update template.toml with comprehensive content aggregator settings
- Add default values and helper methods for content configuration
Add detailed design document outlining the complete refactoring of the
client module to achieve professional, product-level architecture with
clear separation of concerns.

The design addresses several key issues:
- God object anti-pattern in engine.rs
- Mixed abstraction levels
- Lack of session management
- Missing event system
- Scattered state management

The proposed architecture includes:
- Context module for request-scoped configuration
- Session management for multi-document operations
- Dedicated clients for indexing, retrieval, and workspace operations
- Event system for callbacks and progress reporting
- Simplified main engine as orchestrator

Also implement the Builder pattern enhancement with event emitter
support and add the initial context module with ClientContext
functionality for request-scoped configuration overrides.
…ssions

- Implement complete batch_processing.rs example demonstrating concurrent
  document indexing with progress tracking and performance metrics
- Add events.rs example showing event callback system for monitoring
  indexing and query operations
- Create session.rs example illustrating multi-document operations
  with caching and cross-document queries
- Make events module public to enable external access to event system
- Include detailed usage instructions and performance statistics
  in all examples
…oader

Add new ConfigDocs module to generate markdown reference and example
TOML files from configuration types. Enhance ConfigLoader with
environment variable overrides using double underscore separator syntax,
layered configuration support, and improved documentation with examples.

BREAKING CHANGE: Configuration loading now supports layered files and
environment variable overrides through ConfigLoader API.
- Simplify import statement by using vectorless::Engine directly
- Update return type from vectorless::domain::Result to vectorless::Result
- Change EngineBuilder::new() to Engine::builder() for consistency
- Add error handling with map_err for better error propagation
- Add comprehensive examples table with descriptions
- Update documentation to reflect API changes
- Fix grammatical error in Rust description by removing "core"
- Add early development warning notice to inform users about potential breaking changes
- Maintain existing content structure while improving clarity
- Update package version from 0.1.10 to 0.1.11 in Cargo.toml
@zTgx zTgx merged commit dfe376e into main Apr 4, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant