Source Code:
src/gaia/agents/chat/tools/rag_tools.pyComponent: RAGToolsMixin
Module:
gaia.agents.chat.tools.rag_tools
Import: from gaia.agents.chat.tools.rag_tools import RAGToolsMixinOverview
RAGToolsMixin provides comprehensive document retrieval and query capabilities for the Chat Agent, implementing hybrid search (semantic + keyword), document summarization, and quality evaluation tools. Key Features:- Hybrid semantic + keyword search for optimal retrieval
- Per-file targeted search for fast lookups
- Adaptive chunk retrieval based on document size
- Multi-section iterative summarization for large documents
- Retrieval quality evaluation
- Document management (indexing, listing, dumping)
- Semantic embeddings search with multiple query reformulations
- Keyword boost for exact term matches
- Hash-based deduplication
- Adaptive max chunks (5-25) based on document size
- Page number extraction with lookback for citation
Requirements
Functional Requirements
-
Document Query (query_documents)
- Multi-key semantic search with reformulation
- Keyword boost for exact matches
- Adaptive chunk limits (5-25 based on doc size)
- Page extraction for citations
- Debug mode with full retrieval metrics
-
File-Specific Query (query_specific_file)
- Fast per-file retrieval
- Same hybrid search strategy as query_documents
- File disambiguation support
-
Text Search (search_indexed_chunks)
- Exact text pattern matching in RAG chunks
- Case-insensitive search
- Limited to 100 matches for performance
-
Retrieval Evaluation (evaluate_retrieval)
- Keyword overlap calculation
- Sufficiency assessment
- Confidence scoring
- Next-step recommendations
-
Document Management
- Index single documents with statistics
- Index entire directories (recursive option)
- List indexed documents
- Export cached extracted text
- RAG system status reporting
-
Document Summarization (summarize_document)
- Multi-section iterative approach for large docs
- Three summary types: brief, detailed, bullets
- Page-based section boundaries
- Overlap between sections for context
- Structured output with metadata
Non-Functional Requirements
-
Performance
- Hash-based deduplication (O(1) instead of O(N))
- Adaptive chunk limits prevent context overflow
- Cached text reuse (no VLM re-extraction)
- Timeout handling for long summarizations
-
Quality
- Citation-ready with page numbers
- Structured instruction format for LLM
- Debug info for retrieval analysis
- Graceful degradation on failures
-
Usability
- Clear status messages
- Numbered chunk IDs for reference
- File statistics on indexing
- Helpful error hints
API Specification
File Location
Public Interface
Implementation Highlights
Hybrid Search Architecture
Iterative Summarization
Testing Requirements
File:tests/agents/chat/test_rag_tools_mixin.py
Key test scenarios:
- Hybrid search with keyword boost
- Per-file targeted search
- Exact text search in chunks
- Retrieval evaluation metrics
- Document indexing with statistics
- Directory indexing (recursive)
- Iterative summarization for large docs
- Page extraction with lookback
- Debug mode output validation
- Graceful degradation on failures
Dependencies
- RAG SDK for indexing and retrieval
- Chat SDK for summarization
- SessionManager for path validation
Usage Examples
Example 1: Query Documents with Debug
Example 2: Summarize Large Document
Example 3: Targeted File Search
Acceptance Criteria
- RAGToolsMixin implemented with 10 tools
- Hybrid search (semantic + keyword) works
- Adaptive chunk limits scale with doc size
- Page extraction with lookback implemented
- Iterative summarization handles large docs
- Debug mode provides full metrics
- Hash-based deduplication for performance
- Graceful fallback on RAG unavailability
- Citation instructions included in results
- All tools return consistent error format
RAGToolsMixin Technical Specification