Spaces:
Running
Running
Commit History
-
Implement expandable volume breakdown with page chips in search panel Running
c1f9028 -
Fix Volume Breakdown query expansion discrepancy in SearchService
8c12cef -
Implement hot-reloaded search rules config file for monk prefixes
7fd2d51 -
Fix synonym highlighting in snippet and reader panel, and fix health diagnostics 500 error
f33f622 -
Add health diag endpoint for troubleshooting vector search
aeed839
-
Implement synonym and related words highlighting in search results and reader panel
12b4775 -
Fix write permissions crash on Hugging Face Spaces by configuring paths before downloading and adding a writability check on /data
e99cf6e -
Fix AI search by appending query expansions instead of replacing the original query
f955da2 -
fix: pass task='retrieval.query' to SentenceTransformers encode when using Jina or fine-tuned embedding models to prevent Task missing error
308d07e -
fix: add peft to requirements.txt to support loading fine-tuned LoRA models in SentenceTransformers
4ffb8ff -
feat: support Hugging Face persistent storage at /data and local Docker volumes for persisting SQLite database (search logs/cache) across container rebuilds
3dc49f8 -
feat: FTS5-first + AI button search with split button mode selector
- Backend: add mode param (fts/ai) to search endpoint - FTS mode skips Qwen+vector for instant results - AI mode keeps full pipeline with 10s timeout guard - Batch SQLite queries (content enrichment, volume/TOC info) - Volume breakdown now uses FTS5 index instead of LIKE scan - Frontend: split search button with mode dropdown (persisted to localStorage) - Mode badge on results (FTS/AI) - AI upgrade button below FTS results5e37f3b
-
fix: update QWEN_MODEL_ID default to 1.5B in main.py (missed in previous commit)
d5c52d4 -
chore: upgrade Qwen model default from 0.5B to 1.5B Instruct
ff9cfda
-
feat: complete turbovec search backend integration, ignore tvim file in git, and stabilize mobile UI transitions
603ead8 -
feat: add Google-style breadcrumb navigation to search results
- Backend: Extend SearchResultItem schema with volume_number, volume_title, toc_page fields to support full breadcrumb data - Backend: Update search_service to fetch volume info and closest TOC entry (level <= 1 only, skipping 'จบ' markers at level 2) with toc_page for direct navigation - Frontend: Replace static 'เล่ม N • หน้า N' header with clickable 3-part breadcrumb: 'เล่ม N > ชื่อพระสูตร > หน้า N' where each segment navigates independently (volume page 1, toc start page, or exact found page) - Frontend: Update searchStore SearchResult interface to include new fields5c4239f -
fix: resolve critical vector embedding bug and refine query transform prompt for prefix word matching
b00bdb2 -
fix: serialize concurrent thread access to in-memory SQLite connection to prevent race conditions and deadlocks
de8a899 -
Implement SQLite FTS5 prefix matching to support partial Thai word search and resolve segmentation tokenization issues
4c554ad -
Swap default Query-Transform LLM to Qwen2.5-0.5B-Instruct to significantly reduce memory footprint and CPU generation latency on Hugging Face free tier
82e5f43 -
Optimize PyTorch resource usage: set CPU threads to 1 to prevent health check timeouts and reduce max generation tokens to 45
68c0ac1 -
Optimize backend preloading: preload Qwen & Jina-v5 at startup, cache Qwen in QueryTransformService class attributes, and bypass Ollama connection attempts when not ready
029c891 -
fix: optimize local mode Qdrant restore by replacing server snapshots with pre-packaged SQLite databases
cdcdbbf -
docs: add SEARCH_ARCHITECTURE_V3 spec and include helper scripts for reindexing and RAG query testing
7805140
-
fix: increase Ollama HTTP client timeout to 30.0s to handle model cold starts resiliently
f1d32da -
fix: implement query_batch_points and sequential fallback in SearchService, and raise 404 on page not found in pages router
3670990 -
feat: implement Search Architecture V3 (Hybrid search with Qwen query transformation, batch embeddings, batch Qdrant searches, and optimized CPU reranking)
c6f014f
-
fix: add Cache-Control headers to static files — no-cache for root icons, immutable for hashed assets
ed6d275 -
fix: serve all root-level static files (icons, favicon.svg, apple-touch-icons)
faab8c8
-
perf: skip LLM/RAG imports in abbrev lookup, query DB directly
Inline the abbrev DB query in the router to avoid importing LLMService which triggers RAGService import (Jina, ONNX, Qdrant, Ollama). Stdlib only — json + re. No heavy imports needed.b8531b2 -
fix: use _default marker_id for non-numeric abbrev ids, skip RAG init
Standalone (ย่อ) without a number prefix sends id='(ย่อ)' which cleans to 'ย่อ' — map to _default instead of querying with wrong id. Avoid loading Jina/ONNX/RAG on abbrev lookup by using existing DB connection and skipping page_data fetch.f417652 -
refactor: disable LLM fallback for (ย่อ), fix JSON string array parsing
All 1,742 pages with (ย่อ) markers are now pre-indexed in DB. Remove expensive DeepSeek API call on every (ย่อ) click. Fix expand_abbreviation to parse plain string arrays from preindex_abbrevs.efc32dd
-
fix: add อนุ. วิ. ปฏิ. dialogue markers to split formatting
Add อนุ. (อนุเคราะห์), วิ. (วิสัชนา), and ปฏิ. (ปฏิปุจฉา) to both marker_normalization (split onto new lines) and num_pattern (format as numbered-line) so dialogue in Abhidhamma/Paṭṭhāna pages renders each speaker on its own line.9babb2f -
fix: exclude '.' from marker normalization preceding char
Prevents ๕๘. (๑) from being split into ๕๘. + \n(๑) by the marker normalization step, which was causing section markers [๙๔] ๕๘. and their sub-items (๑) to render on separate paragraphs.70f46ee -
fix: merge adjacent <B> headings with <I> footnote refs, fix marker normalization exclusion list
- Merge <B>text</B><I>fn-</I><B>text</B> into one heading before B→h4 conversion to prevent footnote refs from splitting into multiple h4. - Add ']' and Thai digits (\u0E50-\u0E59) to marker normalization preceding-char exclusion list to prevent: • [๓๒] ๒. → [๓๒] + \n๒. • ๑๖. → ๑ + \n๖.6b67cae -
feat: normalize reference extraction and popup UI
165565d -
feat: enhance footnote extraction and display at bottom of page
23b4d13 -
feat: implement Reference Lookup API and ReferencePopup integration
b1f23a6 -
feat: migrate jina v5, refine AI popup, add reference popup UI
d2c65ec
-
feat: add sentence-transformers fallback for embedding when Ollama unavailable
abb8b56
-
fix: cleanup stale Qdrant lock on startup to prevent health alert
e04d706 -
fix: extract end markers from raw <B> tags instead of sections (works per-page, not proximity guess)
bf53ae4 -
fix: end markers only show for nearby sections (page proximity filter)
cfd4523 -
feat: first-page reader layout (centered homage, split volume title) + clean section range markers
ef0ec43 -
feat: use contents table for reader section hierarchy (L0+L1)
- Add SectionInfo model and sections field to PageResponse schema - Fix page_service query: return latest section per level, not all history - Reduce heading sizes: h1 text-lg, h2 text-base, h3 text-sm - Remove fragile content heading detection; rely on DB sections only - Skip re-detecting backend sections in content rendering575f508 -
feat: use contents table for full section hierarchy in reader (sections array instead of single title)
c9166a1 -
feat: markdown rendering for AI responses
0f2c05e -
refactor: clean legacy, sync deps, add embedding cache, split RAGService, split search_service, add tests
1. Clean legacy: removed legacy/, scratch/, test_clean/, __pycache__/, artifacts/, root-level junk (gitignored) 2. Sync requirements: deleted stale root requirements.txt, added pytest 3. Embedding LRU cache: OrderedDict 256 entries in RAGService._get_embedding 4. RAGService refactor: __init__ -> _init_qdrant, _init_qdrant_local, _init_qdrant_server 5. Split search_service.py: extracted pali_utils.py (516->249 lines) 6. Test infra: 3 test files (260 lines) with pytestcb7868a
-
Refactor: Make app settings cloud-compatible by removing hardcoded Windows paths
f50c177 -
Refactor: Remove remaining hardcoded Windows paths and improve settings flexibility in RAGService
0860ede