QModel / .env.example
aelgendy's picture
QModel v8.5: accuracy release (code, 3,598-fatwa index, quran.com links)
c634c96
Raw History Blame Contribute Delete
8.83 kB
# QModel 8.5 Configuration Template
# ==================================
# Copy this to .env and update values for your environment
# LLM Backend Selection
# Options: "gguf" (local GGUF file), "ollama", "hf" (HuggingFace), or "lmstudio"
LLM_BACKEND=gguf
# ─────────────────────────────────────────────────────────────────────
# GGUF BACKEND (if LLM_BACKEND=gguf) β€” self-contained, no external daemon
# ─────────────────────────────────────────────────────────────────────
GGUF_MODEL_PATH=./models/Qwen2.5-14B-Instruct-Q8_0.gguf
GGUF_N_CTX=8192 # Context window size
GGUF_N_GPU_LAYERS=-1 # -1 = offload all layers to GPU (Metal on Mac)
# ─────────────────────────────────────────────────────────────────────
# OLLAMA BACKEND (if LLM_BACKEND=ollama)
# ─────────────────────────────────────────────────────────────────────
# OLLAMA_HOST=http://localhost:11434
# OLLAMA_MODEL=qwen2.5:14b
# Available models: llama3.1, mistral, neural-chat, openhermes
# ─────────────────────────────────────────────────────────────────────
# HUGGINGFACE BACKEND (if LLM_BACKEND=hf)
# ─────────────────────────────────────────────────────────────────────
# HF_MODEL_NAME=Qwen/Qwen2.5-14B-Instruct
# HF_DEVICE=auto # Options: auto, cuda, cpu
# HF_MAX_NEW_TOKENS=2048
# Popular models:
# - Qwen/Qwen2.5-14B-Instruct (recommended)
# ─────────────────────────────────────────────────────────────────────
# LM STUDIO BACKEND (if LLM_BACKEND=lmstudio)
# ─────────────────────────────────────────────────────────────────────
# LMSTUDIO_URL=http://localhost:1234
# LMSTUDIO_MODEL=qwen2.5-14b-instruct # Model loaded in LM Studio
# ─────────────────────────────────────────────────────────────────────
# EMBEDDING MODEL (shared by all backends)
# ─────────────────────────────────────────────────────────────────────
EMBED_MODEL=intfloat/multilingual-e5-large
# ─────────────────────────────────────────────────────────────────────
# DATA FILES
# ─────────────────────────────────────────────────────────────────────
FAISS_INDEX=QModel.index
METADATA_FILE=metadata.json
# ─────────────────────────────────────────────────────────────────────
# RETRIEVAL SETTINGS
# ─────────────────────────────────────────────────────────────────────
TOP_K_SEARCH=20 # Candidate pool size
TOP_K_RETURN=5 # Final results returned to user
# ─────────────────────────────────────────────────────────────────────
# GENERATION SETTINGS
# ─────────────────────────────────────────────────────────────────────
TEMPERATURE=0.2 # 0.0=deterministic, 1.0=creative
MAX_TOKENS=2048 # Max output length
# ─────────────────────────────────────────────────────────────────────
# SAFETY & QUALITY
# ─────────────────────────────────────────────────────────────────────
# Confidence gate: skip the LLM and return "not found" unless retrieval found
# something genuinely relevant (direct reference / verbatim text match, or):
# - USE_RERANKER=true β†’ best cross-encoder relevance (0-1) >= RERANK_MIN_SCORE
# - USE_RERANKER=false β†’ best dense cosine similarity >= DENSE_MIN_SCORE
# (multilingual-e5-large scale; recalibrate if EMBED_MODEL changes)
# Calibrate with: python -m eval.run_eval --show-failures
# On the golden set the reranker gate refuses 92% of off-topic questions vs 36% for
# the dense gate, for ~1 s per answer; set false only where the model can't be loaded.
USE_RERANKER=true
# Rewrite queries without the LLM (regex intent + thesaurus terms), ~2 s faster per
# question. Follow-ups with chat history always use the LLM rewrite.
FAST_QUERY_REWRITE=true
RERANK_MIN_SCORE=0.05
DENSE_MIN_SCORE=0.80
# Hadith boost: Score bonus when intent=hadith
# Prevents Quran verses from outranking relevant Hadiths
HADITH_BOOST=0.08
# Quran boost: Score bonus when intent=tafsir/quran
# Prevents Hadiths from outranking relevant Quran verses
QURAN_BOOST=0.12
# ─────────────────────────────────────────────────────────────────────
# RANKING
# ─────────────────────────────────────────────────────────────────────
RERANK_ALPHA=0.6 # 60% dense (embedding), 40% sparse (BM25)
# ─────────────────────────────────────────────────────────────────────
# CACHING
# ─────────────────────────────────────────────────────────────────────
CACHE_SIZE=512 # Max cache entries
CACHE_TTL=3600 # Cache expiry in seconds
# ─────────────────────────────────────────────────────────────────────
# SECURITY
# ─────────────────────────────────────────────────────────────────────
ALLOWED_ORIGINS=* # CORS origins (restrict in production: origin1.com,origin2.com)
# ─────────────────────────────────────────────────────────────────────
# USAGE EXAMPLES
# ─────────────────────────────────────────────────────────────────────
#
# Self-contained (GGUF, e.g. HF Spaces):
# LLM_BACKEND=gguf
# GGUF_MODEL_PATH=./models/Qwen2.5-14B-Instruct-Q8_0.gguf
#
# Development (Ollama):
# LLM_BACKEND=ollama
# OLLAMA_HOST=http://localhost:11434
# OLLAMA_MODEL=qwen2.5:14b
#
# Production (HuggingFace GPU):
# LLM_BACKEND=hf
# HF_MODEL_NAME=Qwen/Qwen2.5-14B-Instruct
# HF_DEVICE=cuda
#
# Production (HuggingFace CPU):
# LLM_BACKEND=hf
# HF_MODEL_NAME=Qwen/Qwen2.5-14B-Instruct
# HF_DEVICE=cpu