viora by INCPRITECH

AI providers

Self-hosted viora uses two models: one for embeddings (finding the right passage) and one for chat (writing the answer). Choose each independently in .env.

viora cloud uses Cloudflare Workers AI with bge-m3 embeddings and Llama 4 Scout for answers. You don't need to configure anything.

ProviderVIORA_EMBEDDINGSVIORA_CHATNeeds
Cloudflare Workers AIcloudflarecloudflareCLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_API_TOKEN
OpenAI or any compatible APIopenaiopenaiOPENAI_API_KEY, optional OPENAI_BASE_URL
Ollama (local, free)ollamaollamaOllama running; optional OLLAMA_BASE_URL
Anthropic Claudeuse another embedderanthropicpip install "viora-ai[anthropic]", ANTHROPIC_API_KEY
Offline (tests, demos)hashextractiveNothing

Default models

ProviderEmbeddingsChat
Cloudflare@cf/baai/bge-m3@cf/meta/llama-4-scout-17b-16e-instruct
OpenAItext-embedding-3-smallgpt-4o-mini
Ollamabge-m3llama3.2
Anthropic–claude-opus-5-5 (low effort, with automatic refusal fallback)

Override with VIORA_EMBEDDING_MODEL and VIORA_CHAT_MODEL. Groq, OpenRouter, Together, LM Studio and vLLM work through the OpenAI-compatible provider by setting OPENAI_BASE_URL.

Changing the embedding provider changes how passages are stored. Run viora ingest again afterwards.

Other settings

VariableDefaultMeaning
VIORA_TOP_K6Passages given to the model per question.
VIORA_MIN_SCORE0.30Below this similarity, a passage counts as unrelated.
VIORA_MAX_TOKENS600Longest answer, in tokens.
VIORA_QUESTIONS_PER_HOUR30Per visitor, per site.
VIORA_DATA_DIR.vioraWhere the database is stored.