rag-api-node-1 / .env.example
Peterase's picture
feat(rag): implement hybrid search with live sources and production-grade intent classification
a63c61f
# ═══════════════════════════════════════════════════════════════════════════
# RAG API Configuration
# ═══════════════════════════════════════════════════════════════════════════
# ── Vector Database (Qdrant) ──────────────────────────────────────────────
QDRANT_HOST=localhost
QDRANT_PORT=6333
QDRANT_URL= # Cloud URL (overrides host/port)
QDRANT_API_KEY= # Cloud API Key
QDRANT_COLLECTION=news_articles_hybrid
# ── Analytics Database (ClickHouse) ────────────────────────────────────────
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=
CLICKHOUSE_DB=default
CLICKHOUSE_SECURE=false
# ── User Database (PostgreSQL/Neon) ────────────────────────────────────────
DATABASE_URL= # Full Neon URL (overrides individual fields)
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_DB=rag_interactions
# ── Embedding & Reranking Models ───────────────────────────────────────────
EMBEDDING_MODEL=BAAI/bge-m3
VECTOR_SIZE=1024
RERANKER_MODEL=BAAI/bge-reranker-v2-m3
# ── LLM Provider ───────────────────────────────────────────────────────────
# Supported: "groq", "gemini", "together", "openai", "ollama"
LLM_PROVIDER=gemini
# Groq (free, 200+ tok/s)
GROQ_API_KEY=
GROQ_MODEL=llama-3.3-70b-versatile
# Google Gemini (free tier: 15 RPM / 1M TPM)
GEMINI_API_KEY=
GEMINI_MODEL=gemini-1.5-flash
# Together AI (free $25 credit)
TOGETHER_API_KEY=
TOGETHER_MODEL=meta-llama/Llama-3.3-70B-Instruct-Turbo
# HuggingFace Inference API
HF_TOKEN=
HF_MODEL=meta-llama/Llama-3.1-8B-Instruct
# Ollama (local)
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=llama3.2
# OpenAI
OPENAI_API_KEY=
# ── Redis Cache ────────────────────────────────────────────────────────────
REDIS_URL= # Full URL (Upstash) - overrides host/port
REDIS_HOST=localhost
REDIS_PORT=6380
REDIS_DB=0
REDIS_PASSWORD=
# ── Hybrid Search Settings ─────────────────────────────────────────────────
ENABLE_HYBRID_SEARCH=true
LIVE_SEARCH_TIMEOUT=2.0
LIVE_SEARCH_MAX_RESULTS=5
LIVE_SEARCH_WEIGHT=0.5
DB_SEARCH_WEIGHT=0.5
# ── Cache Settings (TTL in seconds) ────────────────────────────────────────
CACHE_RESPONSE_TTL=300 # 5 minutes - full response cache
CACHE_LIVE_TTL=600 # 10 minutes - live search results
CACHE_TRANSLATION_TTL=3600 # 1 hour - translated queries
CACHE_INTENT_TTL=3600 # 1 hour - intent classification
# ── Security ───────────────────────────────────────────────────────────────
SECRET_KEY=change_me_in_production_to_a_very_long_random_string
ACCESS_TOKEN_EXPIRE_MINUTES=60