How sothawang/local_retrieval_system works
Local Retrieval System is a cross-platform, offline multimodal desktop app. Users add local documents or images to a library; the app parses content, computes embeddings, and indexes it for later text or image search. Search combines semantic and keyword retrieval and presents ranked results. The README documents accessibility settings and supported formats; the tree supports the module paths below, but sampled source did not include the Dart implementations, so detailed internal call wiring is limited to documented workflow relationships.
Main entry points: local_file_parser.dart File parser · ui Library and search · document_indexer.dart Document indexer · hybrid_retriever.dart Hybrid retriever
Components 24
User interface
- App entry
lib/main.dart - Library and search
lib/ui - Accessibility settings
lib/ui/app_settings_controller.dart
File ingestion
- Backend assembly
lib/app/app_backend.dart - File parser
lib/parsing/local_file_parser.dart - Parser selection
lib/parsing/parser_factory.dart - PDF extraction
lib/parsing/pdfium_engine.dart - Tika bridge
lib/parsing/tika_bridge.dart - OCR engine
lib/parsing/ocr_engine.dart
Embedding inference
- Embedding engine
lib/embedding/embedding_engine.dart - Text embedding
lib/embedding/services/text_embedding_service.dart - Image embedding
lib/embedding/services/image_embedding_service.dart - BERT model
assets/bert_model/bert.tflite - MobileCLIP models
assets/mobileclip_model
Indexing and retrieval
- Document indexer
lib/retrieval/indexing/document_indexer.dart - Retrieval engine
lib/retrieval/retrieval_engine.dart - Hybrid retriever
lib/retrieval/retrievers/hybrid_retriever.dart - Keyword retriever
lib/retrieval/retrievers/keyword_retriever.dart - Keyword index
lib/retrieval/keyword_index/keyword_index.dart - Vector retriever
lib/retrieval/retrievers/vector_retriever.dart
Other components
- User
- Apache Tika
lib/document_parsing_tool/tika_service - Tesseract runtime
lib/document_parsing_tool/tesseract - ChromaDB
Connections 27
- User → Library and search: select files or query
- Library and search → Backend assembly: request operations
- App entry → Library and search: launches
- User → Accessibility settings: adjust accessibility
- Backend assembly → File parser: parse files
- File parser → Parser selection: select parser
- File parser → PDF extraction: extract PDF
- File parser → Tika bridge: parse documents
- Tika bridge → Apache Tika: dispatches to
- File parser → OCR engine: recognize images
- OCR engine → Tesseract runtime: uses runtime
- Backend assembly → Document indexer: index content
- Document indexer → Embedding engine: compute embeddings
- Embedding engine → Text embedding: text inference
- Embedding engine → Image embedding: image inference
- Text embedding → BERT model: runs model
- Image embedding → MobileCLIP models: runs model
- Document indexer → Keyword index: writes terms
- Document indexer → ChromaDB: writes vectors
- Library and search → Retrieval engine: submit search
- Retrieval engine → Hybrid retriever: dispatch search
- Hybrid retriever → Keyword retriever: retrieve terms
- Hybrid retriever → Vector retriever: retrieve vectors
- Keyword retriever → Keyword index: searches
- Vector retriever → ChromaDB: searches
- Vector retriever → Embedding engine: embed query
- Hybrid retriever → Library and search: return ranked results