You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(indexer) Route single-file indexing through ReaderRegistry and add a per-extension read_file API
(storage) Create vector table with dynamic dimension from embedder instead of hardcoded 512
(logging) Introduce flexi_logger for file-based logging with configurable path, size rotation, and optional stderr duplication via config.toml and CLI flags
(verbose) Route Verbose progress messages to the log file under the 'docq' target and ensure they remain visible on the terminal when log duplication is disabled
Enable Metal GPU acceleration and suppress ggml_metal_device_init log noise via early ggml_log_set no-op callback
🐛 Bug Fixes
Preserve chunk-to-doc mapping via chunk_documents junction table to prevent cross-file dedup attribution errors
Make tokenizer filename configurable in ModelEntry instead of hardcoding BGE_SMALL_ZH_V1_5_TOKENIZER_FILE
Use atomic single-statement write for model version to avoid SQLite nested-transaction error during parallel model loading
Enable SQLite foreign keys and WAL mode, and use little-endian for vector bytes to ensure cross-arch portability
Skip vec_chunks creation on init(0) and pass 0 from init/add/status commands to avoid dimension mismatch when embedding model differs from default
Increase default LLM n_ctx from 4096 to 8192 to prevent prompt truncation and preserve full retrieval context
🚜 Refactor
(indexer) Flatten Indexer to own its component fields, and document known correctness defects
Separate stable doc_id from file_path via document_paths and resolve file paths in SearchHit
(engine) Extract base model-loading helper including ModelHub creation for open_for_index, open_for_search, and open_for_ask
(engine) Extract base model-loading helper including ModelHub creation for open_for_index, open_for_search, and open_for_ask
(retriever) Flatten Retriever to own its component fields directly from RetrieverConfig
(docq-retrieve) Split hybrid search pipeline into focused helpers; feat(fusion): generalize RRF to multiple recall channels; doc(docq-retrieve): document each retrieval stage and score semantics
(docq-synth) Move Synthesizer and SynthesizerConfig into synthesizer.rs and flatten config fields directly onto the struct
Replace all Other(String) error variants with structured variants across 6 error enums
Extract Indexer struct, IndexStats, and tests into indexer.rs, and split run_command into per-subcommand handler functions
Replace ModelSpec.role String with ModelRole enum across all crates
📚 Documentation
Update docs
Add CHANGELOG for v0.2.0
Update crate config in Linux and windows
⚡ Performance
Parallelize BM25 and vector recall in Retriever::search via spawn_blocking and tokio::join!
Parallelize reranker and LLM loading in Engine::open_for_ask via spawn_blocking and tokio::join!
Cache token_count in chunker, batch-petch document hashes, and pass is_update to eliminate redundant DB queries in indexer
Switch default reranker from BGE-reranker-base to jina-reranker-v1-turbo-en for 4x faster reranking
Switch default reranker from BGE-reranker-base to jina-reranker-v1-turbo-en for 4x faster reranking