dhammadassana/tipitaka
0
π ΰΈΰΈ£ΰΈ°ΰΉΰΈΰΈ£ΰΈΰΈ΄ΰΈΰΈ ΰΈΰΈΰΈ±ΰΈΰΈ‘ΰΈ«ΰΈ²ΰΈΰΈΈΰΈ¬ΰΈ²ΰΈ₯ΰΈΰΈΰΈ£ΰΈΰΈ£ΰΈ²ΰΈΰΈ§ΰΈ΄ΰΈΰΈ’ΰΈ²ΰΈ₯ΰΈ±ΰΈ’
Tipitaka Web App β ΰΉΰΈ§ΰΉΰΈΰΈΰΉΰΈ²ΰΈΰΈΰΈ£ΰΈ°ΰΉΰΈΰΈ£ΰΈΰΈ΄ΰΈΰΈ ΰΈΰΈΰΈ±ΰΈ ΰΈ‘ΰΈΰΈ£. ΰΉΰΈΰΈΰΈΰΈ΄ΰΈΰΈ§ΰΈ΄ΰΉΰΈ§ΰΈ ΰΈΰΈ£ΰΉΰΈΰΈ‘ AI ΰΈΰΈΉΰΉΰΈΰΉΰΈ§ΰΈ’ΰΈΰΈ±ΰΈΰΈΰΈ£ΰΈ΄ΰΈ’ΰΈ°
Stack: React + Vite | FastAPI + Python | SQLite FTS5 | Turbovec In-Process (Primary) / Qdrant (Secondary) | ONNX Reranker | DeepSeek API
β¨ Features
ποΈ Architecture (Turbovec Edition)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (Vite + React) β
β AppShell β NavDrawer | ReaderPanel | RightToolbar | AIPopup β
β Zustand (5 stores) Β· Framer Motion Β· Tailwind CSS v4 β
β react-markdown + remark-gfm Β· Lucide React β
ββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β HTTP / SSE
ββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββ
β Backend (FastAPI Python 3.13) β
β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ βββββββββββββ β
β β Page β β Search β β RAG β β LLM β β
β β Service β β Service β β Service β β Service β β
β βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬ββββββ β
β β β β β β
β ββββββΌβββββ βββββββΌββββββ ββββββΌβββββ ββββββΌββββββ β
β β SQLite β β SQLite β β Turbovecβ β DeepSeek β β
β β FTS5 β β LIKE β β Index / β β API β β
β β (memory)β β fallback β β Qdrant β β Streamingβ β
β βββββββββββ βββββββββββββ βββββββββββ ββββββββββββ β
β β
β Services: page_service Β· search_service Β· pali_utils β
β rag_service Β· onnx_reranker Β· llm_service β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββπ Hybrid Search Pipeline
ΰΈΰΈ³ΰΈΰΈ²ΰΈ‘ β Pali Autocorrect β FTS5 (SQLite, 30 results)
ββ Turbovec Index (jina-embeddings-v5, 30 results)
β SQLite Content Enrichment
β Merge & Deduplicate
β ONNX Rerank (jina-reranker-v2)
β Top N β AI contextποΈ Project Structure
RAG/
βββ webapp/
β βββ tipitaka-api/ # FastAPI backend
β β βββ app/
β β β βββ main.py # FastAPI entry + lifespan
β β β βββ config.py # pydantic-settings
β β β βββ schemas.py # Pydantic models
β β β βββ routers/ # pages, search, ai, health
β β β βββ services/ # 6 service modules
β β β βββ database/ # sqlite_db.py
β β βββ tests/ # 35 tests
β β βββ models/ # ONNX reranker
β β βββ startup.sh # HF Spaces entry
β β
β βββ tipitaka-web/ # React frontend
β βββ src/
β βββ components/ # layout, reader, toolbar, ai
β βββ stores/ # Zustand (5 stores)
β βββ hooks/ # swipe, keyboard
β βββ lib/ # api.ts
β
βββ qdrant_storage/ # Local Qdrant data (optional fallback)
βββ snapshots/ # Qdrant snapshot files (optional fallback)
βββ Dockerfile # Multi-stage build
βββ TIPITAKA_WEB_ARCHITECTURE_TURBOVEC.md # Main architecture doc (Turbovec)
βββ SEARCH_ARCHITECTURE_TURBOVEC.md # Search specification (Turbovec)π Quick Start
Prerequisites
- Python 3.13+
- Node.js 20+
- Ollama (for embedding β jina-embeddings-v5-small-retrieval)
- DeepSeek API key
1. Setup Backend
cd webapp/tipitaka-api
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
# Copy .env.example β .env and fill DEEPSEEK_API_KEY
python -m app.main # starts on :80002. Setup Frontend
cd webapp/tipitaka-web
npm install
npm run dev # starts on :51733. Setup Embedding
# Download jina-embeddings-v5 GGUF
ollama pull hf.co/second-state/jina-embeddings-v5-text-small-retrieval-GGUF:v5-small-retrieval-Q6_K.gguf4. Run Tests
cd webapp/tipitaka-api
python -m pytest tests/ -v # 35 tests, all passingπ‘ API Endpoints
π§ͺ Test Suite
tests/
βββ test_pali_utils.py # 90 assertions β autocorrect, digits, similarity
βββ test_search_service.py # FTS5 + LIKE merge, suggestions
βββ test_rag_service.py # Embedding LRU cache
Total: 35 tests β
π§° Tech Stack Detail
π Documents
π Acknowledgements
- ΰΈ‘ΰΈ«ΰΈ²ΰΈΰΈΈΰΈ¬ΰΈ²ΰΈ₯ΰΈΰΈΰΈ£ΰΈΰΈ£ΰΈ²ΰΈΰΈ§ΰΈ΄ΰΈΰΈ’ΰΈ²ΰΈ₯ΰΈ±ΰΈ’ (MCU) β ΰΉΰΈΰΈ·ΰΉΰΈΰΈ«ΰΈ²ΰΈΰΈ£ΰΈ°ΰΉΰΈΰΈ£ΰΈΰΈ΄ΰΈΰΈ
- Turbovec β In-process vector database
- Qdrant β Vector database (Legacy/Alternative)
- jina.ai β Embedding + Reranker models
- Ollama β Local model serving
- Hugging Face Spaces β Deployment platform
"ΰΈΰΈΈΰΈΰΈ‘ΰΈ²ΰΉΰΈ«ΰΈ‘ΰΈ·ΰΈΰΈΰΉΰΈͺΰΈΰΉΰΈΰΈ΅ΰΈ’ΰΈΰΉΰΈΰΈ«ΰΉΰΈΰΈΰΈ‘ΰΈ·ΰΈ ΰΈΰΈ·ΰΈΰΈΰΈ±ΰΈΰΈΰΈ²ΰΈΰΈ³ΰΈ₯ΰΈ²ΰΈ’ΰΈΰΈ§ΰΈ΄ΰΈΰΈΰΈ²"
