See vector databases for supported
provider / vector_db values.
One Stack, Three Config Forms
This is the same local setup in each interface: Qdrant athttp://localhost:6333, Voyage embeddings, and OpenAI chat.
SDK Defaults
Use constructor defaults when you are writing Python. Every call on thatrag object can inherit the configured vector store, embedding model, LLM, and reranker.
rag.llm() requires a model unless one was configured in RagRails(llm={...}).CLI Defaults
Use.ragrails.toml when you run terminal commands. The CLI looks for .ragrails.toml in the current working directory.
Run ragrails with no subcommand to open the setup wizard:
.ragrails.toml. After that, commands can be shorter:
.ragrails.toml, pass explicit flags:
.ragrails.toml:
REST API Defaults
REST requests can be self-contained, or they can omit provider fields and use server environment defaults. Put provider and vector-store settings in the request body when one request needs to override the server defaults./docs and /v1/openapi.json, so generated clients can type these request bodies.
Server-level limits live in the process environment:
EMBEDDING_PROVIDER, EMBEDDING_MODEL, VECTOR_DB_PROVIDER, VECTOR_DB_URL, and VECTOR_DB_COLLECTION are REST server defaults used when request bodies omit those fields. RAGRAILS_MAX_UPLOAD_FILES controls how many files /v1/ingest/docs/upload and /v1/pipelines/ingest/mixed accept in one multipart request. RAGRAILS_MAX_UPLOAD_BYTES controls the maximum size of each uploaded file in bytes. Uploads above either limit return HTTP 413.
Secrets
Do not put API keys in.ragrails.toml. Store non-secret defaults in config and keep credentials in environment variables.
Complete .ragrails.toml
Keep only the sections you need.
Validate CLI Config
Rundoctor from the same directory as .ragrails.toml:
--config to inspect a file somewhere else:

