← Home

Parameter Glossary

Searchable reference for all RAG configuration parameters, their descriptions, and helpful links to documentation.

Need the full raw registry view? Open /knobs/raw.

438 parameters
🔧

Active Repository

REPO

Logical repository identifier used to scope indexing, retrieval, and tool routing. In multi-repo setups this is the namespace key that keeps embeddings, sparse indexes, and metadata partitions separated so queries do not leak across projects. Keep this value stable and aligned with your repository registry (repos.json or equivalent), because mismatched names can produce empty retrievals or cross-repo contamination. Use deterministic naming conventions when onboarding new repositories.

🔧

All Containers

DOCKER_ALL_CONTAINERS
Container ops

Shows the complete container inventory on the host, not just running containers, and is the baseline view for operational triage. Including exited and paused containers is important for RAG stacks because indexing, ETL, and monitoring jobs often run intermittently and leave failure signals only in stopped containers. This view supports lifecycle actions and log inspection across the entire service graph, making it easier to diagnose dependency failures and startup order issues. Regular review also helps prevent resource waste from abandoned containers.

🔧

Container Action Timeout

DOCKER_CONTAINER_ACTION_TIMEOUT
Timeout control

Maximum wait time for start, stop, or restart operations before the control layer marks the action as timed out. This setting protects UI/API responsiveness when containers hang during bootstrap, health checks, or shutdown hooks. If set too low, normal slow starts appear as failures; if set too high, real faults surface too late and block automation. Choose a value slightly above observed p95 action latency for your heaviest service profile and revisit after infrastructure changes.

🔧

Container List Timeout

DOCKER_CONTAINER_LIST_TIMEOUT
API latency

Upper bound for how long the system waits when requesting container listings from the Docker API. This mainly protects control-plane responsiveness in environments with many containers, remote contexts, or overloaded Docker daemons. Higher values reduce false timeout errors during heavy load, while lower values fail fast and keep UIs responsive when the daemon is unhealthy. Tune it from observed list latency, not guesswork, and monitor for growth as your service count increases.

🔧

Docker Settings

DOCKER_SETTINGS
Operational baseline

Groups Docker operational controls such as startup and shutdown waits plus logging defaults. These settings act as reliability levers for the full RAG system, influencing failure-detection speed, incident observability, and safe handling of stateful services. Conservative values reduce false positives but can hide hangs; aggressive values fail fast but add noise on slower hosts. Recalibrate after hardware changes or when adding new infrastructure components.

🔧

Docker Status

DOCKER_STATUS
Health check

Represents whether the app can currently communicate with the Docker daemon. Healthy status is a prerequisite for lifecycle actions such as starting retrieval dependencies, reading logs, and running local eval loops. Flapping status often indicates daemon overload, socket permission issues, or host runtime instability rather than app-level logic errors. Treat this as a hard preflight signal before expensive indexing jobs.

🔧

Docker Status Timeout

DOCKER_STATUS_TIMEOUT
Probe tuning

Sets the maximum time allowed for each Docker status probe. Low values surface daemon failures quickly but can create false negatives under CPU, disk, or socket contention; high values reduce noise but delay detection of real outages. In retrieval pipelines this directly affects whether preflight checks pass before ingestion and evaluation tasks begin. Choose a value slightly above observed probe latency at peak local load.

🔧

Include Log Timestamps

DOCKER_LOGS_TIMESTAMPS
Correlation ready

Adds timestamps to container output so events can be correlated across services in a single RAG request path. This is critical when tracing latency between ingestion, embedding calls, vector writes, and generation. Without timestamps, parallel service events are easy to misorder and root-cause analysis takes longer. Keep timestamps enabled for shared and production-like environments, and normalize timezone handling in downstream log tools.

🔧

Infrastructure Down Timeout

DOCKER_INFRA_DOWN_TIMEOUT
Infrastructure shutdown

Controls how long the orchestrator waits for compose shutdown to complete before treating stop as failed. In RAG stacks this protects stateful services such as Postgres and vector stores, which need time to flush write-ahead logs and close files cleanly. If set too low, forced termination can leave partial writes, slower recovery, or integrity checks on restart; if set too high, rollback and local iteration become sluggish. Tune this from measured shutdown duration under heavy ingest and keep headroom for worst-case disk latency.

🔧

Infrastructure Services

DOCKER_INFRASTRUCTURE_SERVICES
Core services

Defined set of infrastructure containers that provide the core substrate for retrieval and operations: vector-capable storage, graph reasoning storage, metrics, logs, and alerting. Treat this as a dependency graph rather than a flat list, because failures in observability services can hide problems in retrieval services and vice versa. Healthy operation requires both data-plane services (for query/index workloads) and control-plane services (for telemetry and incident response). Managing this group consistently is essential for predictable RAG behavior in production.

🔧

Infrastructure Up Timeout

DOCKER_INFRA_UP_TIMEOUT
Infrastructure startup

Defines the maximum wait for infrastructure startup readiness. During first boot or after image updates, pulls, migrations, and service warm-up can dominate startup time in a RAG environment. If the timeout is too short, healthy services may be marked failed before they pass health checks; if too long, real boot failures surface late and slow feedback loops. Set this from observed cold-start timings and revisit it when adding heavy dependencies such as observability or graph services.

🔧

Keywords Max Per Repo

KEYWORDS_MAX_PER_REPO
Routing breadth

Caps how many repository-specific keywords are retained for routing and scoring. The cap controls a core tradeoff: higher values increase topical coverage for broad repositories, while lower values reduce memory, indexing overhead, and ranking noise from generic terms. In multi-repo RAG, this directly affects router entropy and can change which repos are considered candidates for a query. Tune by repository size and lexical diversity, then verify with routing confusion metrics. If you observe cross-repo false positives, reducing this cap is often more effective than simply raising keyword boost.

🔧

Layer Bonuses

repo_layerbonuses
AdvancedMulti-repo only

JSON mapping of intent classes to architecture-layer boosts applied during ranking (for example, giving UI queries a slight preference toward frontend paths). These values should act as soft priors, not hard filters: start small, measure retrieval quality on a fixed evaluation set, then adjust incrementally. Oversized bonuses can dominate semantic evidence and break cross-layer questions (for example, UI symptoms caused by backend schema changes). Keep boosts interpretable, version them with config changes, and retune after major repo reorganizations.

🔧

Log Lines to Tail

DOCKER_LOGS_TAIL
Log visibility

Sets how many trailing log lines are fetched per container when debugging retrieval workflows. Smaller tails keep UI and CLI feedback fast for routine checks, while larger tails help reconstruct multi-step failures across chunking, embedding, indexing, and query handling. Extremely large tails increase I/O and can bury the newest signal in historical noise. Use a conservative default and temporarily raise the value during incident analysis.

🔧

MCP API Key (Optional)

MCP_API_KEY
Stored in .env

Credential used to authenticate requests to the MCP HTTP endpoint. Treat this as a production secret: store it in environment configuration, transmit it through the Authorization header, and rotate it regularly. If this key is unset while the endpoint is exposed beyond localhost, any client that can reach the server may be able to enumerate tools or execute calls. Pair API-key checks with network controls (bind host, reverse proxy, TLS termination) and explicit 401/403 behavior so failures are observable and do not silently fall back to anonymous access.

🔧

MCP Channel Model

GEN_MODEL_MCP
Tool channel

This override applies to MCP tool-invocation paths, where requests are structured and often latency-sensitive. A lighter model can be sufficient for tool selection and argument construction, reducing spend without degrading end-to-end quality. Prioritize schema adherence and tool-call reliability over open-ended generation fluency in this channel. Validate with tool-call success rate, argument validity, and recovery behavior after tool errors. If tool use regresses while chat quality remains stable, this override is the first place to inspect.

🔧

MCP HTTP Host

MCP_HTTP_HOST

Network interface address used by the MCP HTTP server process. Use `127.0.0.1` for local-only development, `0.0.0.0` only when you intentionally accept remote traffic, and a specific private IP when binding to one interface behind a proxy. This setting controls reachability and blast radius more than performance. A common hardening pattern is localhost bind plus reverse proxy ingress, so authentication, TLS, and request limits are enforced at the edge while the MCP process remains private.

🔧

MCP HTTP Path

MCP_HTTP_PATH

Path segment for the MCP HTTP endpoint (for example `/mcp`). Clients, gateways, and reverse proxies must agree on this route exactly; mismatches are a common cause of silent connection failures where the server is up but tools are never discovered. Use a stable, version-aware path when multiple environments or gateway rules coexist (for example `/v1/mcp`). If you rewrite paths at the proxy layer, test both health checks and tool invocation end-to-end to ensure the canonical route still maps correctly.

🔧

MCP HTTP Port

MCP_HTTP_PORT

TCP port the MCP HTTP server listens on. Choose a non-privileged port (typically above 1024), avoid collisions with existing services, and keep dev/staging/prod conventions consistent so client configs remain portable. Port selection is operationally important for firewalls, container mappings, and service discovery. When fronted by a reverse proxy, the internal port can stay private while external traffic arrives on standard TLS ports; in that setup, verify that health checks and MCP requests are routed to the intended backend port.

🔧

MCP Server URL

MCP_SERVER_URL

Canonical endpoint URL that clients use to reach the MCP server, including scheme, host, optional port, and path. This should represent the externally reachable address, not necessarily the local bind address. In proxy deployments, the correct value is often the public HTTPS URL while the service itself listens on internal HTTP. Keep this value environment-specific and explicit, because incorrect scheme, path, or host settings can look like protocol errors even when the server is healthy.

🔧

MCP transports (stdio/HTTP)

SYS_STATUS_MCP_SERVERS
Integration

Displays available Model Context Protocol transport paths (for example stdio and HTTP) that external clients can use to call tools. This status is operationally important because transport availability directly affects agent connectivity, tool latency, and failure modes. A service can look healthy while MCP ingress is degraded, so this row helps isolate protocol-level outages from model/runtime issues. Track it with auth and request telemetry to detect broken integrations early, especially when multiple clients share one tool server.

🔧

Path Boosts

repo_pathboosts
Affects ranking

Comma-separated path fragments that apply ranking lift when matched by candidate file paths. Use this to favor high-signal code zones (such as src/, app/, services/) and de-emphasize noisy regions (generated assets, fixtures, vendored code) without excluding them entirely. Keep boost effects moderate and evaluate on held-out queries so path heuristics complement semantic retrieval instead of overriding it. Revisit boosts whenever folder structure changes, otherwise ranking quality can drift over time.

🔧

Per-Repository Indexing Configuration

PER_REPO_INDEXING
ADVANCEDPER-REPO

Enables repository-specific indexing overrides instead of forcing one global chunking/tokenization profile across all codebases. This matters in multi-repo environments because docs-heavy repos, polyglot monorepos, and tight service repos have different optimal settings for chunk size, overlap, tokenizer mode, and metadata extraction. Treat per-repo indexing like a policy layer: keep a safe global default, then introduce targeted overrides where measured retrieval metrics justify deviation. The main operational risk is configuration drift, so changes should be versioned, reviewed, and validated with repo-scoped eval suites before rollout.

🔧

Qdrant URL

QDRANT_URL

Base endpoint for your Qdrant cluster, used by the retriever for collection management, upserts, and nearest-neighbor search queries. Correct URL and protocol selection (HTTP vs HTTPS, auth headers, cloud endpoint shape) is critical because retrieval latency and availability depend directly on this connection path. When running hybrid search, failures here can silently degrade system behavior to sparse-only retrieval unless you monitor fallback paths explicitly. Treat this as an infrastructure dependency: verify connectivity, TLS, and collection schema compatibility during startup and after deploys.

🔧

Redis URL

REDIS_URL

Connection URI for Redis, used by checkpointing/session persistence layers (for example LangGraph state) and other short-latency shared state. The URL encodes host, port, optional credentials, and database index, so misconfiguration can cause silent state divergence across environments. In production, use TLS-enabled endpoints, explicit auth, and per-environment DB isolation. If Redis is unavailable and your app supports stateless fallback, expect reduced resumability and weaker multi-step continuity.

🔧

REPO_PATH

REPO_PATH

Filesystem path to the active repository root used by local indexers, parsers, and file-system-backed tools. This should resolve to a real, readable directory containing the source tree expected by your retrieval/index pipelines. Relative-path ambiguity is a common failure mode in CI and containerized jobs, so prefer explicit absolute paths and startup validation (exists, is_dir, permission checks). Keep this synchronized with REPO and any root overrides to avoid indexing one project while querying another.

🔧

Repository Keywords

repo_keywords
Multi-repo only

Comma-separated routing hints used before full retrieval to decide which repository should get additional candidate budget. Treat these as high-signal domain anchors (product names, subsystem terms, protocol vocabulary), not generic words, because broad keywords inflate false-positive routing and raise latency. In practice, keep the list compact, inspect query logs regularly, and update when repository boundaries or naming conventions change. Good keyword curation improves first-pass corpus selection and reduces wasted retrieval work in multi-repo deployments.

🔧

Repository Path

repo_path

Absolute filesystem root for this logical repository corpus. The indexer resolves discovery, chunking, and file identity relative to this path, so a wrong root silently drops relevant files or ingests unrelated directories. Use canonical stable paths (avoid transient mounts/symlink ambiguity), and keep corpus boundaries intentional so reindexing stays deterministic over time. When onboarding new repos, verify path coverage with a dry-run file inventory before first production indexing.

🔧

Repository Root Override

REPO_ROOT
OptionalDocker-friendly

Explicit override for repository root detection. Use this when automatic root discovery (walking upward for .git, pyproject.toml, etc.) is unreliable, such as nested workspaces, bind-mounted containers, or unusual mono-repo layouts. Setting a fixed root reduces ambiguity in path resolution and prevents accidental indexing of parent directories. The override should point to the canonical project root shared by both index-time and query-time components.

🤖

Anthropic API Key

ANTHROPIC_API_KEY
Security

ANTHROPIC_API_KEY is the credential used to authenticate calls to Claude models when your stack routes generation or evaluation through Anthropic. Treat it as a high-sensitivity secret: keep it in server-side environment management, never expose it in browser bundles, and rotate it quickly after suspected leakage. In multi-provider RAG systems, isolate provider keys so usage attribution, cost controls, and incident response remain auditable per vendor. The key only grants access; model behavior and spend still depend on explicit model choice, token budgets, and request-level safety settings.

🤖

Auto-set embedding dimensions

EMBEDDING_AUTO_SET_DIMENSIONS
Schema safety

Automatically derives and applies embedding dimension from the selected model metadata. This prevents a frequent failure mode where generated vectors and index schema use different sizes, which causes insert errors or invalid retrieval behavior. The safeguard is especially important when switching providers or testing multiple embedding models in one environment. Keep model catalog metadata current so automatic dimension mapping remains trustworthy.

🤖

Chat-Specific Model

GEN_MODEL_CHAT
Channel override

This override applies a different model only for chat UX, letting you optimize interactivity without changing global generation defaults. A common pattern is faster chat responses for iteration while retaining a stronger model for offline or API workflows. Keep prompts and guardrails aligned across channels to avoid unexplained behavioral drift. Capture active channel model in telemetry so user feedback can be mapped to the correct configuration. If chat answers differ from API answers, check this override before changing retrieval or prompting.

🤖

CLI Channel Model

GEN_MODEL_CLI
Developer workflow

This override selects a model specifically for CLI sessions, which are usually iterative and speed-sensitive. Using a smaller or local model here can improve developer feedback loops while keeping production channels on a higher-capability model. Keep retrieval stack and system prompts aligned across channels so CLI debugging reflects real behavior. Log the active CLI model in run metadata to make test results reproducible. Use this for workflow optimization, not as an untracked fork of application behavior.

🤖

Cloud Model

RERANKER_CLOUD_MODEL
Provider-scoped

Specifies the provider model ID used for cloud reranking, such as a Cohere, Voyage, or Jina reranker family variant. This parameter directly controls tradeoffs between multilingual support, context length handling, pricing, and latency. Model IDs are provider-scoped, so the same string is not portable across providers; keep explicit provider-model pairing in configuration and tests. When changing models, re-baseline ranking metrics and failure behavior because score distributions and calibration can shift materially even when APIs look identical.

🤖

Cohere API Key

COHERE_API_KEY
Credential

Credential used to authorize requests to Cohere services when reranking is delegated to Cohere. Operationally, this key controls access, billing attribution, and rate-limit scope, so treat it as a secret and load it from secure environment configuration rather than source code. If missing or invalid, rerank calls fail and your retrieval stack may silently degrade to unre-ranked ordering depending on fallback behavior. In production, pair this setting with key rotation policy, request logging, and explicit health checks on the rerank path.

🤖

Cohere Rerank Calls (calls/min)

COHERE_RERANK_CALLS
Cost control

Per-minute call-rate guardrail for Cohere reranking. This threshold is mainly a cost and stability control: rerankers are high-value but can become the most expensive or latency-sensitive part of the retrieval pipeline if invoked on every request and every rewrite iteration. Alerts at this layer help detect loops, duplicated calls, and missing cache reuse before bills spike or tail latency grows. Tune the limit against expected traffic, candidate set size, and cache hit rate, then review it after any retrieval strategy changes.

🤖

Cohere Rerank Model

COHERE_RERANK_MODEL
Model selection

Model identifier used for Cohere reranking, determining ranking quality, latency, context limits, and price profile. Different rerank models can reorder the same candidate set very differently, so this setting directly affects answer precision even when retrieval inputs are unchanged. Keep model choice explicit and version-aware, and validate on representative queries whenever you switch models. In production pipelines, model changes should be treated like relevance changes and rolled out with A/B or offline evaluation rather than ad hoc edits.

🤖

Contextual chunk embeddings

EMBEDDING_CONTEXTUAL_CHUNK_EMBEDDINGS
Retrieval quality

Controls whether each chunk is embedded independently or with neighboring document context. Contextual strategies reduce ambiguity for short or repetitive chunks and can improve recall on long-form technical questions, but they increase token usage and indexing latency. Late chunking variants further improve semantic continuity by encoding wider spans before chunk-level pooling, at higher memory cost. Choose mode using retrieval metrics from your own corpus rather than generic defaults.

🤖

Default Chat Model

CHAT_DEFAULT_MODEL
Model Policy

CHAT_DEFAULT_MODEL sets the model used when a chat request does not specify an override. This becomes your system-wide policy baseline for latency, cost, context length, and reasoning quality, so changing it affects nearly every conversation. In multi-provider setups, pair the default with explicit routing and fallback rules so quota or outage events do not silently shift quality. Revisit this setting after major model releases and benchmark updates, but decide with workload-specific evals instead of generic leaderboard performance.

🤖

Embedding backend

EMBEDDING_BACKEND
Backend selection

Selects the embedding engine used for indexing and query encoding, such as deterministic test vectors, hosted APIs, or local inference servers. Backend selection determines retrieval quality, latency profile, operating cost, and reproducibility across environments. Deterministic backends are useful for CI baselines, but production relevance tuning should rely on real semantic models. Version backend choice together with preprocessing and model IDs to avoid evaluation drift.

🤖

Embedding Batch Size

EMBEDDING_BATCH_SIZE
Throughput tuning

Controls how many chunks are embedded in each request or inference pass. Larger batches usually improve throughput by reducing per-request overhead and increasing accelerator utilization, but they raise peak memory pressure and can hit rate or timeout limits. Smaller batches are safer on constrained hosts and unstable networks but increase total indexing time. Tune this setting from observed throughput and error rates, not fixed defaults.

🤖

Embedding Cache

EMBEDDING_CACHE_ENABLED
Cost control

Enables reuse of previously computed embeddings for identical normalized text, reducing repeated compute and API spend during reindex cycles. Cache hits are most beneficial when rerunning ingestion on mostly stable corpora or during iterative chunking tests. Cache keys should include model identifier, model revision, and preprocessing policy to prevent stale vectors from contaminating retrieval quality comparisons. Disable cache only when validating backend or model changes end-to-end.

🤖

Embedding Configuration Valid

EMBEDDING_MATCH
Config health

This health signal means the full embedding contract used at query time matches the contract used to build the index, including provider, model identity, vector dimensionality, tokenizer behavior, and any text prefix or suffix transforms. When it is true, vector similarity scores are mathematically comparable and ranking quality is trustworthy. It also keeps offline evaluations meaningful because runs are measured in the same vector space. Treat this as a deployment gate: if you change embedding settings, rebuild before serving production queries. A persistent match state is one of the most important controls for preventing silent retrieval regressions.

🤖

Embedding Dimension

EMBEDDING_DIM
Vector schema

Defines vector dimensionality in the index and must match model output exactly. Larger dimensions can preserve more semantic detail and improve hard-case recall, but they increase memory, storage, and approximate-nearest-neighbor compute cost. Smaller dimensions reduce cost and can speed search, especially when using embeddings designed for compression. Treat this as a quality-versus-efficiency control and rebenchmark whenever dimension changes.

🤖

Embedding input truncation

EMBEDDING_INPUT_TRUNCATION
Token budget

Specifies what to do when a chunk exceeds the embedding model token limit. Simple end truncation is fast but can drop key evidence that appears later in long documents; middle-aware or hierarchical approaches retain broader coverage at higher preprocessing cost. Poor truncation policy introduces positional bias toward document openings and can lower grounding quality at answer time. Combine this setting with chunk-size policy so overlength chunks are uncommon.

🤖

Embedding Max Retries

EMBEDDING_RETRY_MAX
Reliability

This controls how many times the system retries a failed embedding call before marking the operation failed. It protects indexing from transient failures such as short network interruptions, temporary overload, and bursty rate-limit responses. Too few retries makes jobs brittle; too many retries can mask persistent faults and dramatically increase end-to-end indexing time. Pair this setting with exponential backoff and jitter so workers do not retry in synchronized waves. Track retry exhaustion in telemetry and fix root causes rather than continually raising the retry ceiling.

🤖

Embedding Max Tokens

EMBEDDING_MAX_TOKENS
Affects cost

This sets the maximum token count sent to the embedding model for each chunk. Content beyond the limit is truncated, so the value directly controls how much semantic evidence is preserved in each vector. Higher limits can improve recall for long code blocks and docs, but they increase indexing cost, latency, and the chance of mixing multiple topics into one embedding. Lower limits are cheaper and often cleaner semantically, but can drop critical tail context. Tune this against your chunk size distribution and monitor truncation rate so most chunks fit without clipping.

🤖

Embedding Model (OpenAI)

EMBEDDING_MODEL
Requires reindex

This names the OpenAI embedding model used for indexing and query encoding when the OpenAI provider is selected. Model choice sets the quality, speed, vector shape options, and cost profile that downstream retrieval depends on. Because embedding spaces are model-specific, changing this value after indexing requires a full rebuild to keep similarity search valid. Treat model upgrades as versioned infrastructure changes: pin model ids, benchmark on your query set, and roll forward only with measured quality and latency impact. Avoid ad hoc switching between runs.

🤖

Embedding Provider

EMBEDDING_TYPE
Requires reindex

This selects the embedding backend family and therefore the core operating mode of retrieval: hosted API providers versus local inference runtimes. The choice drives quality, cost, privacy boundaries, tokenizer behavior, dimensionality, and operational dependencies such as network availability or local model files. Switching type usually changes vector space and requires reindexing to preserve ranking validity. Decide type at architecture level by balancing security and compliance constraints against latency and budget. Record provider and model together in index metadata so deployments remain reproducible.

🤖

Embedding text prefix

EMBEDDING_TEXT_PREFIX
Requires reindex

This optional string is prepended to every text before embedding, commonly used to label role intent such as query or document. Stable prefixes can improve alignment by providing consistent task context to the embedding model. Because the prefix becomes part of the token sequence, changing it shifts vector geometry and requires reindexing for valid comparison. Keep prefixes short, explicit, and versioned; long or frequently edited prompt templates introduce drift and make experiments hard to reproduce. Evaluate prefix changes with offline relevance metrics before rollout.

🤖

Embedding text suffix

EMBEDDING_TEXT_SUFFIX
Requires reindex

This optional string is appended to each text before embedding, useful for consistent delimiters or lightweight schema hints across heterogeneous content. Suffixes influence tokenization and final vector placement, so changing them invalidates direct comparability with previously indexed vectors and requires reindexing. Use compact, stable suffixes and avoid large boilerplate tails that can drown out meaningful content in short chunks. Document suffix policy in index metadata so retrieval regressions can be traced to preprocessing changes quickly. Treat suffix design as part of your embedding contract, not cosmetic formatting.

🤖

Embedding Timeout

EMBEDDING_TIMEOUT
Latency control

This is the maximum wait time for an embedding request before the call is treated as failed. It defines how long indexing workers can block on slow upstream responses and strongly affects throughput under load. If timeout is too low, valid requests fail and trigger unnecessary retries; if too high, stuck calls reduce parallelism and delay incident detection. Tune this with retry count, concurrency, and observed p95 and p99 latency, not mean latency alone. Separate timeout profiles for interactive queries versus bulk indexing jobs when possible.

🤖

Embedding Type Mismatch

EMBEDDING_MISMATCH
Critical

A mismatch means the active embedding configuration no longer matches the vectors already stored in your index. Different models or preprocessing pipelines produce different coordinate systems, so nearest-neighbor comparison becomes unreliable even when the text looks similar. Typical symptoms are irrelevant top hits, unstable rankings, and sudden metric collapse after config changes. In production, treat this as a critical error state. The safe recovery path is either restoring the original embedding settings or fully re-embedding and reindexing the corpus with the new settings.

🤖

Enrichment Model

ENRICH_MODEL
Affects quality/cost

This selects the exact model used by the configured enrichment backend. It is the main lever on the quality versus cost versus throughput tradeoff for generated summaries and keywords. Higher-capability models can improve semantic signals for reranking and explanation quality, while lighter models reduce expense and indexing time. Even without changing embeddings, enrichment model swaps can shift retrieval outcomes, so they should be benchmarked and version-controlled. Pin model ids and evaluate outputs on representative repositories before adopting changes in production pipelines.

🤖

Enrichment Model (Ollama)

ENRICH_MODEL_OLLAMA
Local model tuning

Selects the local Ollama model used for enrichment steps such as code-card expansion, metadata extraction, and structure-aware summaries before retrieval. This choice is a quality versus latency tradeoff: larger coder models usually produce richer symbols and relationships, while smaller models reduce indexing time and hardware pressure. Keep the selected model pinned to an explicit tag so enrichment output stays reproducible across rebuilds. In production, validate the model on a fixed enrichment sample set and monitor drift in extracted fields after model upgrades.

🤖

Generation Model

GEN_MODEL
Primary quality lever

This is the primary model used to synthesize answers from retrieved context, and it dominates quality, latency, and cost behavior. Choose it with workload-specific evaluation sets, not leaderboard intuition, because retrieval quality and prompt structure can change model rankings. Version model IDs explicitly so experiments are reproducible and regressions can be traced. Re-evaluate whenever provider releases shift default behavior, even if API names stay stable. Good retrieval can still underperform if the generation model is misaligned with your task style and response requirements.

🤖

Generation Model (Ollama)

GEN_MODEL_OLLAMA

`GEN_MODEL_OLLAMA` selects the concrete local model tag used when generation is routed through Ollama instead of a hosted provider. In this configuration family, the default is `qwen3-coder:30b`, and changing it directly affects response quality, latency, memory pressure, and token-context behavior for all generation calls that use the Ollama path. Use explicit model tags and keep them consistent across environments so evaluation runs remain reproducible and regressions can be traced to model changes rather than retrieval or prompt drift. When updating this value, validate compatibility with your configured context and timeout settings before promoting to shared environments.

🤖

Google API Key

GOOGLE_API_KEY
Secret management

This key authenticates calls to Google Gemini and related APIs, so it should be managed as a production secret. In RAG systems, key misuse can create unexpected spend, quota exhaustion, or unauthorized access patterns that degrade service quality. Store it in a secret manager, scope permissions minimally, and rotate on schedule or incident. Never expose it in client code, logs, or prompt artifacts. Add per-key monitoring and alerting so abnormal traffic is detected before it impacts retrieval and generation pipelines.

🤖

HTTP Channel Model

GEN_MODEL_HTTP
API channel

This override controls model selection for HTTP/API traffic, where SLOs, concurrency, and cost controls are usually stricter than interactive internal use. It enables channel-specific governance, such as serving public endpoints with stable low-variance models while reserving premium models for internal workflows. Treat changes here as API behavior changes and validate with canary rollouts. Align timeout and retry policies to the chosen model because latency profile varies significantly by provider and model class. Clear fallback order prevents unpredictable responses during upstream incidents.

🤖

LangChain API Key

LANGCHAIN_API_KEY
Secret required

Secret credential used by LangSmith/LangChain telemetry clients to authenticate trace ingestion. If this key is missing, invalid, or scoped incorrectly, remote traces can fail even when local app behavior appears normal. Treat it like production infrastructure credentials: store in a secret manager, inject at runtime, rotate periodically, and never hardcode in repo files. In high-volume RAG services, validate key presence during startup so tracing failures are explicit instead of silently dropping observability data. Key hygiene here is foundational to reliable debugging and compliance.

🤖

LangSmith API Key

LANGSMITH_API_KEY
Tracing auth

Credential used by the runtime to authenticate trace and evaluation events sent to LangSmith. In RAG systems, this key ties each retrieval and generation span to a project so you can debug relevance misses, latency spikes, and hallucination regressions with full trace context. Treat it as production secret material: scope it to the minimum workspace, rotate it regularly, and keep separate keys for development, staging, and production to avoid cross-environment data bleed. If this value is missing or invalid, your app can still answer queries, but observability pipelines lose critical evidence for tuning retrieval, reranking, and prompt behavior.

🤖

LangTrace API Key

LANGTRACE_API_KEY
Tracing auth

Authentication token used when exporting trace telemetry to Langtrace services. For RAG/search systems, this key gates whether query rewrites, retrieval spans, reranker decisions, and response-generation timing are actually persisted for debugging and quality analysis. Keep it in a secret manager, never in checked-in config, and rotate on a predictable cadence because observability keys often leak through ad hoc scripts and local shells. When trace ingestion drops unexpectedly, verify this key first, then confirm it matches the configured host and project identifier.

🤖

Late chunking max doc tokens

EMBEDDING_LATE_CHUNKING_MAX_DOC_TOKENS
Long-context control

Sets the upper token bound for documents passed into late chunking or long-context embedding before chunk-level extraction. This guardrail protects indexing jobs from memory spikes and long-tail latency when very large files enter the corpus. If set too low, you lose cross-section context that late chunking is intended to preserve; if set too high, throughput can collapse on constrained hardware. Calibrate this cap from real document-length percentiles and backend context limits.

🤖

Learning Reranker Base Model

LEARNING_RERANKER_BASE_MODEL
Model compatibility

Base checkpoint that LoRA adapters are trained against and later mounted on during reranking inference. Adapter weights are architecture-specific, so changing the base model after training usually invalidates existing adapters and can silently degrade ranking quality if not caught. Pin this value explicitly, record it in experiment metadata, and keep train/infer parity to make evaluation deltas trustworthy. In practice, base-model drift is a common root cause of non-reproducible reranker performance.

🤖

Local Embedding Model

EMBEDDING_MODEL_LOCAL
Local inference

This specifies the local embedding model (usually SentenceTransformers or Hugging Face) used when running without hosted embedding APIs. It is a core quality and performance lever: larger models often improve semantic recall but consume more memory and index slower. Different local models also use different dimensions and training objectives, so changing models requires reindexing. Pin exact model revisions to avoid drift across machines and CI jobs. Use your own benchmark queries to choose a model, since leaderboard rank alone may not match your codebase or domain vocabulary.

🤖

Local Request Timeout (seconds)

OLLAMA_REQUEST_TIMEOUT

Ollama request timeout is the hard client-side budget for a full generation call, including model warmup, first-token delay, and decode time. Set it too low and valid long-context responses fail prematurely; set it too high and stalled calls tie up worker capacity and degrade system responsiveness. Calibrate timeout from observed p95/p99 latency per model and hardware profile, and revisit after model swaps or context-window changes. Use streaming plus clear retry/abort policy so timeout behavior remains predictable during spikes.

🤖

Local Stream Idle Timeout (seconds)

OLLAMA_STREAM_IDLE_TIMEOUT

Maximum allowed silent gap (in seconds) between streamed tokens/chunks from the local Ollama endpoint before Crucible treats the response as stalled and aborts the request. This protects the UI from hanging indefinitely when a socket is half-open or a backend worker dies mid-generation. Set it too low and you will cut off valid long-prefill responses on larger context windows; set it too high and users wait too long on dead streams. Tune this together with network proxy timeouts and model size so cancellation behavior is fast but not trigger-happy.

🤖

MLX Embedding Model

EMBEDDING_MODEL_MLX
Apple Silicon

This sets the MLX-compatible embedding model used on Apple Silicon. MLX uses Metal-optimized kernels, so it can provide strong local throughput for private or offline indexing pipelines. As with every embedding backend, the model id and dimension define the vector space; changing either requires full reindexing to keep search comparable. Quantized variants can reduce memory and speed up inference, but you should validate recall on representative queries before adopting them broadly. Record model id and quantization in index metadata for reproducible builds.

🤖

Model Assignments

MODEL_ASSIGNMENTS

Model assignments define which model handles each pipeline stage (rewrite, embedding, reranking, generation, and evaluation). This mapping is operationally critical because stage-level mismatches can silently degrade quality: for example, embeddings with incompatible dimensions or generation models with insufficient context windows. Keep assignments explicit so you can audit cost, latency, and safety policy per task instead of per request. In practice, treat this table as a routing contract and version it with your evaluation suite to catch regressions when providers or model defaults change.

🤖

Netlify API Key

NETLIFY_API_KEY

Netlify API key is a privileged credential used to trigger deployments and administrative site actions through automation. Treat it as a high-risk secret: use least privilege where possible, rotate on schedule, and store only in a managed secret system (never in repo or client-side bundles). Operationally, deployment failures from invalid or expired keys often look like generic API errors, so explicit key-health checks are worth adding to CI. For incident response, maintain clear ownership and revocation procedures because compromised deploy credentials can alter production content quickly.

🤖

Ollama Context Window

OLLAMA_NUM_CTX

Ollama `num_ctx` sets the maximum context tokens used per generation request, directly affecting both quality headroom and memory footprint. Higher values let you include more retrieved evidence and longer instructions, but they increase KV-cache pressure and can reduce throughput on constrained hardware. Tune this parameter from measured prompt composition (system + query + retrieved chunks + expected answer) rather than guessing. If requests regularly approach the ceiling, improve chunk selection and compression before simply raising `num_ctx`, because blindly increasing window size can destabilize latency.

🤖

Ollama URL

OLLAMA_URL

Base URL Crucible uses to reach Ollama over HTTP for local-model inference (for example, endpoints such as `/api/chat`, `/api/generate`, and `/api/tags`). This value controls where requests are sent from the app backend, so incorrect hostnames, ports, or path prefixes cause immediate model-routing failures. For remote or containerized setups, use a reachable address from the process that runs Crucible, not just from your browser. When multiple OpenAI-compatible backends are in play, keep this endpoint explicit so provider routing and debugging stay deterministic.

🤖

OpenAI API Key

OPENAI_API_KEY

Secret credential used by Crucible to authenticate OpenAI API requests for generation, embedding, or other provider-backed operations. Treat this as server-side sensitive configuration: never embed it in client bundles, logs, screenshots, or shared notebooks. If requests intermittently fail with auth errors, verify key scope, organization/project binding, and environment injection path before changing models. Rotation, secret scanning, and least-privilege operational controls are mandatory once this runs outside local-only testing.

🤖

OpenAI Base URL

OPENAI_BASE_URL
AdvancedFor compatible endpoints only

Advanced endpoint override for OpenAI-compatible APIs. Use this when routing Crucible through alternative backends such as Azure-hosted deployments, vLLM, or internal gateway proxies that implement OpenAI-style request/response contracts. Base URL mismatches are a common root cause of 404/401 errors because SDK path composition, versioning, and auth headers differ across providers. Keep this setting paired with explicit model/provider assignments so you can trace which endpoint handled each request during failures.

🤖

RAGWELD_AGENT_BASE_MODEL

RAGWELD_AGENT_BASE_MODEL

Specifies the pretrained foundation model that LoRA adapters are attached to. Tokenizer vocabulary, context length behavior, architecture names, and module layout all come from this base model, so changing it after training usually invalidates existing adapters. Treat this as an ABI contract for fine-tuning: adapter weights, target modules, and optimizer state are only portable when the base model family and revision are compatible. Pin exact model revisions to make evaluation and rollback deterministic.

🤖

RAGWELD_AGENT_MODEL_PATH

RAGWELD_AGENT_MODEL_PATH

Points to the model artifact location used by the agent pipeline (local directory, checkpoint file, or hub identifier). This path determines what tokenizer/config/weights are loaded and where resumed training continues from. Use immutable, versioned paths for reproducibility and avoid ambiguous symlinks in production pipelines. For LoRA workflows, clearly separate base-model path from adapter output path so promotion and rollback do not accidentally mix incompatible artifacts.

🤖

Reranker Model Path

TRIBRID_RERANKER_MODEL_PATH

Filesystem location of the active reranker checkpoint or adapter bundle used at inference time. This path is effectively a deployment control: whichever artifact is loaded here defines live ranking behavior. Use stable, versioned directories and atomically swap symlinks or folder names to avoid partial reads during update windows. In adapter-based pipelines, keep base model version and adapter metadata aligned so path changes do not silently load incompatible weights.

🤖

Reranker Model Path

TriBridRAG_RERANKER_MODEL_PATH

Filesystem path to the reranker checkpoint directory used at inference time. This value should point to an immutable artifact location once a model is promoted to production, with explicit versioning (`model-vYYYYMMDD-HHMM` style) rather than a floating path. Relative paths are convenient for local development, while production should prefer absolute, volume-backed paths with integrity checks. Startup should fail fast if the path is missing required files (weights, tokenizer, config), because silent fallback behavior can produce hard-to-debug ranking regressions.

🤖

Semantic KG LLM Model

SEMANTIC_KG_LLM_MODEL

LLM used for semantic knowledge-graph extraction when KG mode is set to LLM-based extraction. This model is responsible for entity detection, relation typing, and canonicalization decisions that become graph nodes and edges, so it directly controls graph quality and downstream traversal precision. Prefer models that are stable on structured extraction, handle long technical context, and support deterministic formatting or schema-constrained outputs. In practice, tune temperature low, enforce strict relation schemas, and validate extracted triples before write-back; weaker models can over-generate relations, confuse entity aliases, or miss cross-sentence links.

🤖

Voyage API Key

VOYAGE_API_KEY

Credential used for Voyage-hosted embedding and reranking requests when Voyage is selected as the provider. Without a valid key, embedding generation and cloud reranking calls fail at request time, so retrieval can silently degrade to stale vectors or fallback behavior depending on your pipeline. Operationally, keep this key scoped per environment, rotate it on a schedule, and monitor request failures and quota usage. Pair key management with health checks that verify embedding and reranker endpoints separately, since one can fail while the other still responds.

🤖

Voyage Embed Dim

VOYAGE_EMBED_DIM
Requires reindex

Target vector dimensionality for Voyage embeddings. This value must match both the selected Voyage embedding model output and the configured vector index schema; mismatches typically cause upsert failures or silent search-quality regressions if vectors are transformed incorrectly. Higher dimensions can improve semantic separation on hard queries, but they also increase index size, memory pressure, and distance-computation cost. Any dimension change is a schema change in practice: create a new collection/index and re-embed content rather than mixing vectors produced under different dimensions.

🤖

Voyage Embedding Model

VOYAGE_MODEL
Requires reindexCode-optimized

Selects which Voyage embedding model generates vectors for indexing and retrieval. The model choice determines embedding behavior (for example code bias vs. general text behavior), output dimensionality, and operational cost/latency characteristics, so it directly affects both relevance quality and infra footprint. Change this deliberately and evaluate with a fixed benchmark query set. Because model changes alter vector semantics, switching models should be treated as a reindex event: regenerate vectors, rebuild the index, and compare recall@k, reranked precision, and p95 latency before promoting to production.

🤖

Voyage Rerank Model

VOYAGE_RERANK_MODEL
Costs API callsHigh quality

Model identifier used for Voyage second-stage reranking. After initial retrieval returns candidates, the reranker rescoring step estimates query-document relevance more precisely and reorders the shortlist. This usually improves top-result precision, especially for nuanced or code-heavy intent. The tradeoff is cost and latency per request proportional to candidate volume. Tune reranker usage together with candidate count (top_k before rerank) and timeout budget; too many candidates can overrun latency targets, while too few can starve the reranker of useful alternatives.

🔍

BM25 b (Length Normalization)

BM25_B
Sparse Retrieval

BM25_B is the length-normalization parameter in BM25 and controls how strongly long chunks are penalized compared with short chunks. Higher values increase normalization, which helps when long documents accumulate incidental term matches; lower values reduce that penalty and can help when key evidence naturally lives in larger files. In hybrid retrieval this parameter shapes sparse scores before fusion with dense vectors, so it directly affects which lexical results survive into reranking. Tune b with mixed query types, including exact identifiers and natural-language requests, to avoid overfitting one retrieval mode.

🔍

BM25 k1 (Term Saturation)

BM25_K1
Sparse Retrieval

BM25_K1 controls term-frequency saturation, meaning how much repeated occurrences of a term continue to increase sparse relevance. Lower values make scoring closer to binary presence and reduce repetition bias; higher values reward repetition more strongly, which can help when repetition is genuinely informative. In code search, overly high k1 can over-rank boilerplate-heavy files, while very low k1 can under-rank dense implementation chunks. Tune k1 jointly with b and tokenizer configuration, then validate on both exact-match and intent-style queries.

🔍

BM25 Stemmer Language

BM25_STEMMER_LANG
Linguistics

BM25_STEMMER_LANG chooses the stemming or morphological normalization profile applied before sparse indexing. Correct language normalization improves recall by unifying inflected word forms, while incorrect stemming can collapse distinct technical terms and reduce precision. Multilingual corpora often need language-aware analyzers by field rather than one global stemmer, especially when prose and code identifiers coexist. Any change here requires reindexing and targeted multilingual relevance checks because token statistics and BM25 behavior shift across the entire corpus.

🔍

BM25 Tokenizer

BM25_TOKENIZER
Tokenization

BM25_TOKENIZER determines how text is split into sparse terms, and this often has a larger impact than small parameter tweaks. Conservative tokenization preserves exact symbols and identifier fragments useful for code retrieval, while aggressive normalization helps natural-language matching. The right choice depends on corpus composition: APIs and filenames benefit from symbol-aware token boundaries, whereas narrative documents benefit from linguistic normalization. Because tokenizer behavior changes term frequencies and document lengths, retune BM25 parameters after tokenizer changes instead of carrying old values forward.

🔍

BM25 Vocabulary Preview

BM25_VOCAB_PREVIEW
DEBUGGINGREINDEX TO UPDATE

Inspect tokenized vocabulary from BM25 sparse index. Shows term frequencies for debugging. Use cases: verify code identifiers preserved, check stemmer behavior, identify noise terms, debug zero-result queries. Vocabulary reflects tokenizer: whitespace (exact, best for code), stemmer (normalized, best for prose), standard (balanced). Large vocabularies (>100K) indicate insufficient stopword filtering.

🔍

BM25 Weight (Hybrid Fusion)

BM25_WEIGHT
Advanced RAG tuningPairs with VECTOR_WEIGHT

Weight assigned to BM25 (sparse lexical) scores during hybrid search fusion. BM25 excels at exact keyword matches - variable names, function names, error codes, technical terms. Higher weights (0.5-0.7) prioritize keyword precision, favoring exact matches over semantic similarity. Lower weights (0.2-0.4) defer to dense embeddings, better for conceptual queries. The fusion formula is: final_score = (BM25_WEIGHT × bm25_score) + (VECTOR_WEIGHT × dense_score). Sweet spot: 0.4-0.5 for balanced hybrid retrieval. Use 0.5-0.6 when users search with specific identifiers (e.g., "getUserById function" or "AuthenticationError exception"). Use 0.3-0.4 for natural language queries (e.g., "how does authentication work?"). The two weights should sum to approximately 1.0 for normalized scoring, though this isn't strictly enforced. Symptom of too high: Semantic matches are buried under keyword matches. Symptom of too low: Exact identifier matches rank poorly despite containing query terms. Production systems often A/B test 0.4 vs 0.5 to optimize for their user query patterns. Code search typically needs higher BM25 weight than document search. • Range: 0.2-0.7 (typical) • Keyword-heavy: 0.5-0.6 (function names, error codes) • Balanced: 0.4-0.5 (recommended for mixed queries) • Semantic-heavy: 0.3-0.4 (conceptual questions) • Should sum with VECTOR_WEIGHT to ~1.0 • Affects: Hybrid fusion ranking, keyword vs semantic balance

🔍

Card Search Enabled

CARD_SEARCH_ENABLED
Hybrid Search

CARD_SEARCH_ENABLED determines whether card-based semantic matching participates in retrieval and score fusion. When enabled, high-level module summaries can bridge user intent phrasing that does not share exact tokens with underlying code chunks. This usually improves exploratory and architecture queries, but it also adds ranking work and can raise false positives if cards are stale or low quality. Keep it enabled when card enrichment is regularly refreshed, and disable it for strict lexical debugging where deterministic exact-match behavior is preferred.

🔍

Chunk Summary Search

CHUNK_SUMMARY_SEARCH_ENABLED
Recall feature

Enables a separate retrieval path over generated chunk summaries, so the system can match intent-level language even when the query does not contain exact identifiers. This usually improves recall for architectural or behavioral questions, but only if summaries were generated during indexing and kept in sync with source updates. Turning it on adds another retrieval pass, so latency and token/compute cost can rise slightly depending on your backend. Best practice is to enable it with careful score balancing so summary matches expand candidate recall without replacing strong exact matches.

🔍

Eval Final‑K

EVAL_FINAL_K
Metric sensitivity

Defines how many top retrieved items count toward success during evaluation metrics like Hit@K. Lower values enforce strict precision and expose ranking weaknesses, while higher values emphasize recall and can hide poor ordering if the answer appears late. Keep this aligned with your production retrieval depth so offline metrics predict real behavior. When tuning, inspect both aggregate Hit@K and position-sensitive metrics so you do not optimize for lenient success criteria alone.

🔍

Final Top‑K

FINAL_K
Returned context depth

Sets how many results survive final fusion and reranking before response generation or UI display. Larger values increase recall and diversity but can dilute evidence quality and consume more context budget; smaller values improve focus and latency but risk dropping key context. Tune this together with reranker quality and chunk size so returned sets remain both relevant and compact. In practice, this parameter strongly influences answer stability because it controls the evidence frontier given to the model.

🔍

Graph Search Enabled

GRAPH_SEARCH_ENABLED
Core Setting

GRAPH_SEARCH_ENABLED is the master switch for whether graph retrieval participates in the final evidence set. When enabled, the system can combine semantic similarity, lexical signals, and structural graph relationships, which usually improves multi-hop and cross-file question coverage. When disabled, behavior becomes a simpler dense-plus-sparse retrieval baseline with lower operational complexity. This flag is useful for incident isolation and A/B testing because it lets you measure graph contribution directly against non-graph retrieval. Keep a tested fallback profile so the system can degrade gracefully if graph infrastructure is unavailable.

🔍

Graph Search Mode

GRAPH_SEARCH_MODE
Strategy

GRAPH_SEARCH_MODE chooses the graph retrieval strategy, typically between chunk-centric traversal and entity-centric traversal. Chunk mode usually gives stronger grounding for answer generation because ranking starts from chunk-level evidence that maps directly into prompts. Entity mode can be useful for ontology-heavy or architecture questions, but it is more sensitive to entity extraction quality and linking consistency. This setting should match how your graph was built; mismatching mode to graph design often looks like low recall with correct infrastructure. Treat mode choice as a retrieval architecture decision, then tune hops and weights inside that chosen mode.

🔍

Graph Search Top-K

GRAPH_SEARCH_TOP_K
Top-K Control

GRAPH_SEARCH_TOP_K controls how many graph candidates are kept before downstream fusion and reranking. Increasing top-k usually improves recall because more potentially useful graph evidence survives early pruning, but it also raises latency and can inflate reranker and generation token costs. If top-k is too small, graph retrieval appears weak even when the graph is high quality because relevant nodes are dropped prematurely. If it is too large, weaker graph neighbors can crowd the context budget and reduce final answer precision. Tune this setting with both retrieval metrics and end-to-end answer quality, and keep it aligned with final context assembly limits.

🔍

LangGraph Final K

LANGGRAPH_FINAL_K
Candidate depth

Sets how many retrieved candidates are retained after fusion or reranking before final answer synthesis in a LangGraph-style workflow. This parameter directly balances recall against context noise and token cost: larger values preserve more potentially useful evidence, while smaller values reduce latency and hallucination surface from marginal passages. Effective tuning depends on corpus redundancy and reranker quality, so evaluate with answer-level metrics rather than retrieval-only metrics. Keep this aligned with model context limits and downstream prompt design to avoid passing excess low-value text. In multi-stage graphs, final_k should be considered with earlier retrieval breadth settings.

🔍

LangGraph Max Query Rewrites

LANGGRAPH_MAX_QUERY_REWRITES
Latency vs recall

Limits how many alternate query rewrites are generated inside the LangGraph answer path. Additional rewrites can significantly improve recall on ambiguous or underspecified user questions by exploring lexical variants and sub-intents, but each rewrite adds model calls, retrieval fan-out, and dedup work. Set this based on latency budget and observed marginal gain per rewrite, not on a fixed preference for larger numbers. Practical deployments combine a moderate cap with early-stop heuristics when rewrites become near-duplicates. This keeps retrieval expansion useful instead of turning into cost-heavy redundancy.

🔍

Learning Reranker LoRA Alpha

LEARNING_RERANKER_LORA_ALPHA
LoRA scaling

LoRA scaling factor that determines how strongly adapter updates influence the frozen base reranker during training and inference. The effective adaptation strength is tied to alpha relative to rank, so increasing alpha without considering rank can over-amplify updates and destabilize relevance calibration. In ranking-focused fine-tuning, this value is best tuned with validation metrics that emphasize ordering quality, not just loss reduction. Use conservative increments and track metric movement on hard negatives to avoid overfitting narrow retrieval patterns.

🔍

Multi-Query M (RRF Constant)

MULTI_QUERY_M
Advanced RAG tuningRRF fusion control

Constant "k" parameter in Reciprocal Rank Fusion (RRF) formula used to merge results from multiple query rewrites. RRF formula: score = sum(1 / (k + rank_i)) across all query variants. Higher M values (60-100) compress rank differences, treating top-10 and top-20 results more equally. Lower M values (20-40) emphasize top-ranked results, creating steeper rank penalties. Sweet spot: 50-60 for balanced fusion. This is the standard RRF constant used in most production systems. Use 40-50 for more emphasis on top results (good when rewrites are high quality). Use 60-80 for smoother fusion (good when rewrites produce diverse rankings). The parameter is called "M" in code but represents the "k" constant in academic RRF papers. RRF fusion happens when MQ_REWRITES > 1: each query variant retrieves results, then RRF merges them by summing reciprocal ranks. Example with M=60: rank-1 result scores 1/61=0.016, rank-10 scores 1/70=0.014. Higher M reduces the gap. This parameter rarely needs tuning - default of 60 works well for most use cases. • Standard range: 40-80 • Emphasize top results: 40-50 • Balanced: 50-60 (recommended, RRF default) • Smooth fusion: 60-80 • Formula: score = sum(1 / (M + rank)) for each query variant • Only matters when: MQ_REWRITES > 1 (multi-query enabled)

🔍

Multi‑Query Rewrites

MAX_QUERY_REWRITES
Better recallHigher cost

Sets how many alternative query phrasings are generated before retrieval. Each rewrite typically executes the full retrieval stack (sparse/vector/graph + fusion), so increasing this value can recover documents missed by the original wording but grows latency and token cost almost linearly. In practice, treat it as a recall budget: start low, measure unique-relevant-document gain per extra rewrite, and stop when marginal gain flattens. Keep the original query in the candidate set to prevent rewrite drift, and pair this with reranking so noisy rewrites do not dominate final context selection.

🔍

Query Expansion Enabled

QUERY_EXPANSION_ENABLED

Enables generation of additional query variants (rewrites, paraphrases, or decomposition prompts) before retrieval. This can significantly improve recall on underspecified or ambiguous user questions by increasing lexical and semantic coverage, especially in heterogeneous code-and-doc corpora. The tradeoff is extra latency, more candidate noise, and higher token or API cost if expansions are not constrained. Production tuning usually combines expansion with caps on variant count, deduplication, and reranker gating so recall gains do not overwhelm precision.

🔍

RAGWELD_AGENT_LORA_ALPHA

RAGWELD_AGENT_LORA_ALPHA

Controls LoRA adapter scaling (commonly applied as `alpha / rank`). Higher alpha increases the effective strength of adapter updates and can speed adaptation, but it also raises the risk of overshooting or overfitting on narrow datasets. Lower alpha makes updates conservative and may underfit unless training runs longer. Treat alpha as a stability/capacity dial coupled to rank and learning rate; when rank changes, revisit alpha instead of keeping a fixed absolute value.

🔍

Reranker Blend Alpha

TRIBRID_RERANKER_ALPHA
Affects ranking

Interpolation weight used when combining the reranker score with upstream hybrid retrieval score. In practical terms, this is the control for how much the final ranking trusts pairwise relevance modeling versus the broader BM25+dense candidate order. Raising alpha usually improves precision for well-formed queries, but if it is set too high the system can overfit to reranker biases and underweight lexical exact-match evidence. Tune it with fixed query sets and report both quality metrics (nDCG, MRR, grounded answer rate) and latency to avoid hidden regressions.

🔍

Reranker Blend Alpha

TriBridRAG_RERANKER_ALPHA

Legacy alias for `TRIBRID_RERANKER_ALPHA`. This is the blend weight that determines how strongly reranker scores influence final ordering versus first-stage retrieval scores. Higher values make the cross-encoder (or learned reranker) dominate; lower values preserve sparse/dense retrieval priors. Tune `alpha` with a fixed evaluation set and monitor both ranking quality and stability by query segment (short keyword queries, long natural-language questions, and code-specific lookups). If alpha is too high, reranker noise can overfit to lexical artifacts; if too low, reranking cost is paid without meaningful ranking gains.

🔍

Resolved Tokenizer

BM25_TOKENIZER_RESOLVED
Diagnostics

BM25_TOKENIZER_RESOLVED captures the effective tokenizer and analyzer configuration after defaults, overrides, and language settings are merged. This matters because the configured value may not match the analyzer actually used at index time. Use the resolved setting as ground truth when debugging unexpected retrieval shifts or mismatch between environments. When ranking changes after deploy, inspect this resolved configuration first and run analyzer explain checks on representative strings before deciding whether reindexing or parameter retuning is needed.

🔍

Skip Dense Embeddings

SKIP_DENSE
Much fasterKeyword-onlyNo semantic search

When enabled, indexing skips dense embedding generation and vector-store writes, leaving retrieval fully lexical (BM25/FTS). This is useful for fast local iteration, constrained CI environments, or deployments where vector infrastructure is unavailable. The tradeoff is predictable: lower indexing cost and simpler ops, but weaker semantic recall for paraphrases and concept-level matches. Use this mode when exact term matching dominates your workload (file names, identifiers, error strings), and disable it for natural-language-heavy corpora where semantic expansion materially improves first-pass recall.

🔍

Sparse Search Enabled

SPARSE_SEARCH_ENABLED
Core Setting

Master toggle for lexical retrieval. When enabled, keyword scoring (BM25/FTS) is available for exact-term matching and can run standalone or alongside dense retrieval in hybrid ranking. When disabled, the pipeline depends on non-lexical retrieval paths, which can miss exact symbols, file names, and rare identifiers. Keep this on for most code and technical corpora; turn it off only when you intentionally want dense-only behavior or are isolating retrieval regressions. Evaluate this setting with query sets containing both natural-language and exact-token intents.

🔍

Sparse search engine

SPARSE_SEARCH_ENGINE

Selects which lexical backend executes sparse retrieval. In practice this governs tokenization behavior, ranking details, index build/maintenance cost, and query features available to the stack. Built-in Postgres FTS offers broad compatibility and simple operations; BM25-focused extensions such as pg_search can improve relevance control and performance for search-heavy workloads. Choose engine based on operational constraints first (extensions allowed, migration path, observability), then benchmark with your real query distribution because ranking differences can be substantial.

🔍

Sparse Search File Path Fallback

SPARSE_SEARCH_FILE_PATH_FALLBACK

Enables a path-oriented fallback when normal sparse matching underperforms. This fallback is useful for developer queries dominated by file names, module paths, package hierarchies, and extension filters where standard tokenization may fragment intent. A good fallback parses separators like '/', '.', '-', and '_' to recover high-signal path terms, then issues a targeted lexical query. Keep it enabled for codebases and monorepos; disable only if it introduces false positives in prose-heavy corpora.

🔍

Sparse Search File Path Max Terms

SPARSE_SEARCH_FILE_PATH_MAX_TERMS

Upper bound on tokens included when building file-path fallback queries. This prevents overly long path-like inputs from exploding into broad lexical queries that hurt latency and precision. Lower values improve stability and reduce noisy matches in large repositories; higher values may recover deeper paths but can over-bias common directory names. Tune with realistic path queries and monitor both candidate set size and top-k relevance, not just hit counts.

🔍

Sparse search highlight

SPARSE_SEARCH_HIGHLIGHT

Turns on lexical-match highlighting metadata (for example snippets or emphasized terms) in sparse retrieval results. This is mainly an observability feature: it helps you verify why a chunk matched, debug tokenizer behavior, and explain ranking decisions to users. Highlight generation can add query-time overhead, so many teams enable it in debug and evaluation environments, then gate it in production by route or role. Keep it on while tuning sparse relevance and parsing modes.

🔍

Sparse search query mode

SPARSE_SEARCH_QUERY_MODE

Determines how sparse queries are parsed before scoring. Typical modes map to plain-term parsing, phrase parsing, or boolean/operator-aware parsing, and each mode changes recall/precision behavior substantially. Plain mode is safest for general user input, phrase mode tightens precision for exact multi-token intent, and boolean mode provides expert control but can degrade results when syntax is malformed. Choose a default that matches user sophistication, then expose advanced modes for debugging and power workflows.

🔍

Sparse Search Relax Max Terms

SPARSE_SEARCH_RELAX_MAX_TERMS

Caps how many lexical terms the relaxer is allowed to keep when strict sparse retrieval underperforms. In practice, this guardrail prevents fallback BM25 queries from ballooning into broad, low-precision searches that return mostly boilerplate. Lower values preserve precision and faster query plans; higher values improve zero-result recovery but increase latency and term-noise risk. Tune it together with `SPARSE_SEARCH_RELAX_ON_EMPTY`, `SPARSE_SEARCH_TOP_K`, and fusion weights so expanded sparse candidates still rerank cleanly against vector hits.

🔍

Sparse Search Relax On Empty

SPARSE_SEARCH_RELAX_ON_EMPTY

Enables automatic lexical fallback when the first sparse retrieval pass returns empty or unusably small results. This is a production safety valve for user-facing search: instead of failing hard on exact-term mismatch, the system broadens sparse matching and gives reranking another candidate pool to work with. Keep it on for interactive workloads unless you require strict deterministic matching for evaluation. The quality of this fallback depends on your relax limits, sparse top-k, and how aggressively sparse scores are weighted in hybrid fusion.

🔍

Sparse Search Top-K

SPARSE_SEARCH_TOP_K
Affects latencyKeyword matches

Controls how many BM25 candidates are fetched before fusion or reranking. Raising top-k generally improves recall for exact identifiers, logs, and error codes, but it also increases scoring cost and can dilute precision if downstream reranking is weak. In hybrid pipelines, a healthy top-k gives the fusion stage enough lexical evidence without overwhelming vector candidates. Calibrate with latency budgets and evaluate at fixed query sets (recall@k, nDCG, and p95 query time) rather than guessing from single queries.

🔍

Top‑K Dense

TOPK_DENSE
Affects latencySemantic matches

TOPK_DENSE sets how many semantic candidates are pulled from the dense index before fusion. In practice, this controls the recall ceiling for meaning-based matches: if it is too low, relevant chunks can be dropped before reranking ever sees them; if it is too high, latency and downstream rerank cost grow quickly. Tune it against your corpus distribution and query mix by tracking recall@k, answer grounding rate, and p95 latency together, not in isolation. A common pattern is to increase TOPK_DENSE when user questions are abstract or paraphrased, then counterbalance compute by tightening reranker depth or pruning thresholds later in the pipeline.

🔍

Top‑K Sparse

TOPK_SPARSE
Affects latencyKeyword matches

TOPK_SPARSE sets how many lexical candidates are retrieved from sparse scoring (BM25-style) before hybrid fusion. This value is critical for exact-match behavior such as identifiers, SKU-like tokens, config names, and error strings that dense embeddings can blur. If TOPK_SPARSE is too low, precision may look good while recall silently collapses on keyword-heavy workloads; if too high, you can over-admit noisy boilerplate and increase rerank pressure. Evaluate it jointly with tokenizer configuration and fusion weights so sparse evidence remains a strong but not dominant signal.

🔍

Vector Search Enabled

VECTOR_SEARCH_ENABLED
Core Setting

Master toggle for dense semantic retrieval. When enabled, the pipeline performs embedding-based nearest-neighbor search and contributes those candidates to fusion/reranking; when disabled, retrieval relies on non-vector channels (for example sparse lexical and graph signals). Disabling can be useful for controlled debugging, cost isolation, or outage mitigation, but it usually reduces semantic recall on paraphrased questions. Treat this flag as a diagnostic switch: compare answer grounding and recall metrics with and without vector search to quantify how much semantic retrieval contributes for your dataset.

🔍

Vector Search Top-K

VECTOR_SEARCH_TOP_K
Affects latencySemantic matches

Number of dense-vector candidates fetched before fusion and reranking. Top-K is a primary recall/latency lever: increasing it broadens candidate coverage and can rescue relevant passages that would otherwise be missed, but raises search and reranker cost. Too small a Top-K can make downstream reranking ineffective because the right candidates never enter the pool; too large a Top-K can flood reranking with low-value items and slow responses. Tune this jointly with reranker Top-N and fusion weights, and evaluate with recall@k, MRR/NDCG, and p95 latency rather than a single metric.

🎯

Active Reranker

RERANKER_ACTIVE
Required

Selects whether reranking is enabled and which execution path is used (local/learning, cloud, or off). Reranking usually improves top-k precision by re-scoring candidate passages with a stronger cross-encoder or specialized model, but it adds latency and cost. Local mode reduces network dependency and can enable adaptive training loops; cloud mode simplifies model management but depends on provider reliability and quotas; off is fastest but may reduce answer quality on ambiguous queries. Choose mode per SLA and workload profile.

🎯

Cloud Provider (models.json)

RERANKER_PROVIDER
models.json-driven

Provider identifier used by the cloud reranker configuration layer (for example, values surfaced from `models.json`). Keep this value aligned with your model catalog so UI selections resolve to valid API credentials, base URLs, and model IDs at runtime. A provider mismatch often fails late (during request dispatch), so validate provider-model compatibility at config load time when possible. In multi-provider setups, this key is the routing pivot that determines which API semantics and reliability envelope apply to the same query workload.

🎯

Cloud Rerank Provider

RERANKER_CLOUD_PROVIDER
Requires API key

Determines which external vendor handles reranking when cloud mode is enabled. Provider choice affects auth, rate limits, billing units, token limits, and model availability, so swapping providers is a behavior change, not just a credential change. Keep provider-specific defaults explicit (timeouts, top-N caps, retry policy) and validate with provider-specific regression queries. For production stability, monitor provider error classes separately so fallback rules can distinguish auth/config issues from transient throttling.

🎯

Cloud Reranker Top-N

RERANKER_CLOUD_TOP_N
Cloud API costsRate limits apply

Limits how many first-pass candidates are sent into the cloud reranker. This is the main quality-cost control for API reranking: higher Top-N usually improves final precision/recall at the expense of latency and request cost. Tune it jointly with first-stage retrieval depth; a small Top-N can hide relevant documents before reranking ever sees them, while an oversized Top-N can waste budget on obvious non-matches. Start from an empirically measured knee point (quality gain flattening vs latency growth) rather than a fixed default.

🎯

Learning Reranker Backend

LEARNING_RERANKER_BACKEND
Backend selection

Selects the execution stack used to train and serve the learning-based reranker. In this project, backend choice determines hardware assumptions, supported model formats, and how adapters are loaded during inference, so it directly affects throughput, reproducibility, and operational complexity. Keep the backend consistent across training and deployment environments whenever possible, or validate compatibility boundaries before shipping adapters. If performance or stability regresses, backend mismatch is one of the first places to investigate.

🎯

Learning Reranker Default Preset

LEARNING_RERANKER_DEFAULT_PRESET
Workflow default

Default studio preset loaded when the learning-reranker workspace opens, controlling which panes and diagnostics are immediately visible. Although it does not change model weights, it changes operator behavior by determining whether users start from metric dashboards, logs, or inspectors, which affects how quickly failures are diagnosed. Good defaults reduce setup friction and increase consistency across experiments, especially when multiple engineers tune reranker training. Choose a preset that exposes the minimum signals needed for safe decision-making in your typical workflow.

🎯

Learning Reranker Grad Accum Steps

LEARNING_RERANKER_GRAD_ACCUM_STEPS
Training dynamics

Number of micro-batches whose gradients are accumulated before each optimizer update during reranker training. Increasing this value raises effective batch size without requiring equivalent VRAM, which can stabilize ranking-objective learning but also slows update frequency and may require learning-rate retuning. For RAG rerankers, this parameter is most useful when negatives are hard and memory is constrained, because larger effective batches improve signal diversity per update. Tune it jointly with global batch size, learning rate, and training time budget rather than in isolation.

🎯

Learning Reranker Idle Unload

LEARNING_RERANKER_UNLOAD_AFTER_SEC
MLX onlyAffects latency

Idle-time model eviction threshold for the local MLX reranker. When this timer is greater than zero, the reranker is unloaded after inactivity so RAM/VRAM can be reclaimed for other work; when set to zero, the model stays resident and avoids cold-start reload latency. This is a classic memory-latency tradeoff: aggressive unloading helps constrained laptops, while persistent residency is better for frequent back-to-back reranks. Tune this using actual interaction cadence, not defaults: if people pause briefly between trials, use a longer window to avoid repeated thrash from unload/reload cycles.

🎯

Learning Reranker Layout Engine

LEARNING_RERANKER_LAYOUT_ENGINE
Studio ergonomics

UI layout system used by the reranker studio, which governs pane docking behavior, state persistence, and interaction performance for high-density training dashboards. While this is not a retrieval algorithm parameter, it impacts operational efficiency because poor layout ergonomics slow inspection of ranking metrics, error cases, and training logs. Prefer the engine that gives stable panel persistence and low interaction overhead on your target hardware and browser stack. Keep layout configuration versioned so team workflows remain consistent across releases.

🎯

Learning Reranker Logs Renderer

LEARNING_RERANKER_LOGS_RENDERER
Debug visibility

Controls whether studio logs are rendered as terminal-like streaming output or structured JSON views. Terminal rendering is better for real-time operational monitoring during active training, while JSON rendering is better for filtering, programmatic analysis, and postmortem debugging of failed runs. The best choice depends on whether your primary task is live supervision or forensic inspection of reranker behavior. Standardizing this setting across teams improves reproducibility of debugging workflows and incident handoffs.

🎯

Learning Reranker LoRA Dropout

LEARNING_RERANKER_LORA_DROPOUT
LoRA regularization

Dropout probability applied inside LoRA adapter paths during reranker fine-tuning. This acts as regularization against overfitting on narrow training pairs, especially when mined positives and negatives are repetitive or domain-skewed. Too little dropout can produce brittle rankers that fail on unseen queries, while too much can underfit and flatten relevance separation. Tune with validation sets that include both in-domain and near-domain queries so improvements generalize beyond the training distribution.

🎯

Learning Reranker LoRA Rank

LEARNING_RERANKER_LORA_RANK
LoRA capacity

Adapter rank determines the capacity of LoRA updates layered onto the base reranker. Higher rank can capture richer relevance transformations and improve difficult ranking tasks, but it increases memory, training cost, and overfitting risk if data volume is limited. Lower rank is cheaper and often sufficient for moderate domain adaptation, especially when base model quality is already high. Select rank by balancing retrieval-quality gains against training budget and inference latency targets, then confirm with held-out ranking benchmarks.

🎯

Learning Reranker LoRA Target Modules

LEARNING_RERANKER_LORA_TARGET_MODULES
LoRA targeting

List of model submodules that receive LoRA adapters, such as attention projections or selected feed-forward layers. This setting determines where adaptation capacity is concentrated, which changes both ranking quality and compute cost more than many scalar hyperparameters. Targeting only key attention paths is efficient for many reranker tasks, while expanding to more modules can help domain shift at the expense of memory and optimization complexity. Treat module selection as an architectural choice and benchmark it with the same rigor as rank or learning rate.

🎯

Learning Reranker Negative Ratio

LEARNING_RERANKER_NEGATIVE_RATIO
Quality vs cost

`LEARNING_RERANKER_NEGATIVE_RATIO` controls how many negative `(query, document)` pairs are generated per positive pair during learning-reranker training (default `5`, range `1`-`20`). Higher ratios usually improve separation between relevant and non-relevant candidates, but they also increase training time, GPU memory usage, and the risk of overfitting to easy negatives if sampling quality is poor. Lower ratios train faster and can be sufficient when negatives are already hard and diverse, but may leave the reranker under-discriminative on near-miss results. Treat this as a quality-versus-cost dial and tune it alongside hard-negative mining strategy and dev-set ranking metrics.

🎯

Learning Reranker Promotion Epsilon

LEARNING_RERANKER_PROMOTE_EPSILON
Prevents noise promotions

`LEARNING_RERANKER_PROMOTE_EPSILON` sets the minimum dev-metric delta required before a newly trained reranker is allowed to replace the active baseline (range `0.0`-`1.0`, default `0.0`). This threshold is a noise guard: if metric gains are smaller than epsilon, the run is treated as statistically or operationally insignificant and promotion should be blocked. Small nonzero values (for example around `0.001`-`0.005` depending on metric stability) reduce churn from random variation, label noise, and temporary data drift. Calibrate epsilon from repeated baseline evaluations so promotion decisions reflect durable quality changes rather than measurement jitter.

🎯

Learning Reranker Promotion Gate

LEARNING_RERANKER_PROMOTE_IF_IMPROVES
Safety

`LEARNING_RERANKER_PROMOTE_IF_IMPROVES` is the hard promotion gate for learning-reranker training. When set to `1` (default), a successful training job promotes the candidate artifact only if the primary dev metric exceeds the current baseline by at least `LEARNING_RERANKER_PROMOTE_EPSILON`; when set to `0`, every successful run can overwrite the active path. Keeping this enabled is safer in continuous-training loops because it preserves model stability during noisy data windows and imperfect labeling periods. Disable it only for controlled experiments with manual review and explicit rollback procedures.

🎯

Learning Reranker Show Setup Row

LEARNING_RERANKER_SHOW_SETUP_ROW

`LEARNING_RERANKER_SHOW_SETUP_ROW` controls whether the setup summary row is visible above the training studio dock layout (`1` = shown, `0` = collapsed; default `0`). This row provides quick context about run configuration and can reduce navigation overhead when comparing experiments, especially in dense training sessions. Hiding it increases available workspace for logs, visualizer output, and inspection panels, which can be better on smaller displays. Use `1` when onboarding or debugging configuration drift, and `0` when users already know the setup and need maximal panel real estate.

🎯

Learning Reranker Studio Bottom Panel %

LEARNING_RERANKER_STUDIO_BOTTOM_PANEL_PCT

`LEARNING_RERANKER_STUDIO_BOTTOM_PANEL_PCT` sets the default height of the studio bottom dock as a percentage of total workspace (default `28`, allowed range `18`-`45`). This value directly affects how much vertical space is reserved for outputs like logs, diagnostics, and timeline-style visual traces versus the primary training controls. Lower percentages prioritize top-level controls and inspectors, while higher percentages favor continuous monitoring and detailed log reading. Keep the value within the configured bounds to avoid layout crowding and ensure predictable behavior across desktop and smaller laptop resolutions.

🎯

Learning Reranker Studio Left Panel %

LEARNING_RERANKER_STUDIO_LEFT_PANEL_PCT

`LEARNING_RERANKER_STUDIO_LEFT_PANEL_PCT` sets the default width of the left dock in the learning-reranker studio (default `20`, allowed range `15`-`35`). In practice, this controls how much horizontal space is allocated to setup/navigation controls before content-heavy panes such as logs, charts, or inspectors take over. Smaller values increase room for analysis panels and visualizer outputs, while larger values improve readability of configuration forms and parameter groups. Tune this with real workflows and screen sizes so key controls remain visible without forcing excessive panel toggling.

🎯

Learning Reranker Studio Right Panel %

LEARNING_RERANKER_STUDIO_RIGHT_PANEL_PCT

Controls how much horizontal space the right-side inspector gets in Learning Reranker Studio. This panel usually contains high-context diagnostics (metric chips, run metadata, and explanation details), so shrinking it too aggressively can hide critical state and force extra toggling. Increasing it improves readability for dense diagnostics, but steals width from query/result panes and can reduce comparison speed. Treat this as a task-fit control: wider for debugging and failure analysis, narrower for rapid iterative edits. Keep it coordinated with left/bottom panel widths so the core training and ranking context remains visible at the same time.

🎯

Learning Reranker Telemetry Interval Steps

LEARNING_RERANKER_TELEMETRY_INTERVAL_STEPS

Defines how often trainer telemetry is emitted in optimizer-step units. Lower values (for example 1-2) produce smoother live curves and faster anomaly detection, but increase event traffic, UI render pressure, and log volume. Higher values reduce overhead and can stabilize weak machines, but hide short-lived instability such as gradient spikes or transient loss explosions. In practice, use tighter intervals while tuning a new objective or dataset, then relax interval size once behavior is stable. This parameter directly shapes observability quality, so tune it with both monitoring fidelity and system cost in mind.

🎯

Learning Reranker Visualizer Max Points

LEARNING_RERANKER_VISUALIZER_MAX_POINTS

Maximum number of telemetry samples retained in visualizer history. Larger buffers preserve long-run context and make regression trend analysis easier, but cost more memory and increase render work for each frame. Smaller buffers keep UI responsiveness high and reduce browser/GPU pressure, but can hide earlier failure modes and make long-cycle debugging harder. Choose this alongside telemetry interval: frequent logging plus very large point caps can overload rendering, so prefer either light decimation or moderate caps for sustained real-time sessions.

🎯

Learning Reranker Visualizer Motion Intensity

LEARNING_RERANKER_VISUALIZER_MOTION_INTENSITY

Global multiplier for animation energy in the visualizer (camera drift, particle movement, transitions). Raising intensity can make state changes easier to notice in brief glances, but also increases motion load and may amplify distraction or simulator sickness for some users. Lower values reduce GPU demand and improve readability during metric-heavy debugging. Treat this as an ergonomics control, not just aesthetics: adjust based on session type (live monitoring vs deep analysis), user preference, and machine capability.

🎯

Learning Reranker Visualizer Quality

LEARNING_RERANKER_VISUALIZER_QUALITY

Quality preset for the Neural Visualizer rendering pipeline (for example balanced, cinematic, ultra). Higher tiers usually increase shader complexity, sampling, and post-processing fidelity, which can improve visual clarity but consume more GPU time and reduce frame stability under load. Lower tiers trade visual polish for deterministic interaction and lower power use. Tune this based on objective: use high quality for demos or screenshots, and balanced/lower settings during prolonged optimization sessions where low-latency interaction matters more than effects.

🎯

Learning Reranker Visualizer Reduce Motion

LEARNING_RERANKER_VISUALIZER_REDUCE_MOTION

Accessibility-first switch that lowers or disables non-essential motion effects in the visualizer. With this enabled, transitions become calmer and less visually aggressive, which helps users sensitive to animation and can also reduce compute overhead on weaker devices. This should be treated as a functional comfort setting, not a cosmetic option. In most interfaces, the best behavior is to respect OS-level `prefers-reduced-motion` by default and let users override explicitly when they want richer motion.

🎯

Learning Reranker Visualizer Renderer

LEARNING_RERANKER_VISUALIZER_RENDERER

Selects the rendering backend used by the visualizer (`auto`, `webgpu`, `webgl2`, or `canvas2d`). `auto` should be the default because runtime capability detection can choose the strongest stable backend on each machine. `webgpu` typically offers the best throughput and future-proof compute features on supported browsers. `webgl2` is a mature fallback with broad compatibility. `canvas2d` provides maximum reach but lowest rendering sophistication. Use explicit backend overrides mainly for debugging platform-specific rendering bugs or enforcing predictable behavior in controlled environments.

🎯

Learning Reranker Visualizer Show Vector Field

LEARNING_RERANKER_VISUALIZER_SHOW_VECTOR_FIELD

Toggles the vector-field overlay used to visualize local direction and intensity of motion in the reranker trajectory view. With this enabled, you can quickly see whether updates are converging smoothly, rotating around a basin, or oscillating in conflicting directions, which is useful when tuning learning rate and regularization. Disable it when you need maximum rendering throughput or a cleaner presentation for non-technical review. Treat this as a diagnostic rendering layer: it does not change model training, only how training dynamics are interpreted.

🎯

Learning Reranker Visualizer Target FPS

LEARNING_RERANKER_VISUALIZER_TARGET_FPS

Sets the visualizer's target frame rate for animation updates. Higher FPS improves motion smoothness and makes subtle directional changes easier to perceive, but increases GPU/CPU pressure and can reduce responsiveness on constrained machines. Lower FPS is often preferable for remote sessions, multi-monitor setups, or long diagnostics where thermal and fan limits matter. This parameter only affects rendering cadence, not training quality or optimization math, so tune it for operator comfort and stable observability.

🎯

Learning Reranker Visualizer: Best So Far

LEARNING_RERANKER_VISUALIZER_BEST_SO_FAR
Best checkpoint signalNot endpoint-biased

Shows the running best objective value observed so far (typically lowest training loss), not merely the most recent step. That distinction matters: endpoint values can look improved by noise, while best-so-far tracks the strongest checkpoint candidate seen during the run. Use this signal to decide when to snapshot, compare runs, or gate promotion. If best-so-far plateaus while live loss jitters, optimization may be near saturation; if best-so-far regresses after schedule changes, your training dynamics may have destabilized even if the latest point appears acceptable.

🎯

Learning Reranker Visualizer: Color Mode

LEARNING_RERANKER_VISUALIZER_COLOR_MODE
Visualizer semanticsTelemetry-driven

What this control changes Color mode changes only hue/intensity encoding for the trajectory points. It does not change x/y projection and it does not change terrain height. In the code path, geometry is computed first and color is assigned later in projectPoints(..., intensityMode). Mode = absolute (where am I doing well?) Each point is colored from normalized train loss at that step. Lower loss maps toward the better/cooler side of the palette, higher loss toward the worse/warmer side. This is the easiest way to answer "which regions of this run were strong vs weak?" In this implementation, color is mostly loss with a smaller gradient-norm blend so structure remains visible when loss is locally flat. Mode = delta (am I improving right now?) Each point is colored from first difference versus the previous point: prev_loss - current_loss. Positive delta means local improvement; negative delta means local regression. This surfaces "learning" vs "thrashing" even when absolute loss is jagged because of mini-batch stochasticity. Interpretation rule Use absolute when comparing quality across run regions. Use delta when diagnosing local optimizer behavior, schedule transitions, or instability. Code path web/src/components/RerankerTraining/NeuralVisualizerCore.tsx -> projectPoints(... intensityMode ...)

🎯

Learning Reranker Visualizer: Last Step

LEARNING_RERANKER_VISUALIZER_LAST_STEP
Endpoint metricCan regress after best

What the last chip means The last=... chip is the most recent observed training loss sample. It is a snapshot of where the run ended, not a guarantee of best quality. Why last can be worse than best Mini-batch SGD is stochastic, so per-step loss is noisy and non-monotonic. Learning-rate schedules can also change local dynamics (for example warmup, cosine phases, or restart boundaries). Because of this, the terminal sample can sit above the minimum even in healthy runs. How to read best vs last together Treat best as the optimization floor reached during the run, and last as the endpoint state at stop time. The gap between them is a diagnostic signal for late-stage instability, schedule transitions, or insufficient checkpoint selection policy. Practical rule Do not evaluate run quality from endpoint alone. Compare both chips and use checkpointing policy that can restore the best observed state when needed.

🎯

Learning Reranker Visualizer: Live Mode

LEARNING_RERANKER_VISUALIZER_LIVE_MODE
Playback modeTail-aware

When enabled, the visualizer auto-follows the newest telemetry point and keeps the viewport anchored to current training time. This is best for active monitoring because you immediately see drift, spikes, or convergence stalls as they happen. When disabled, you get stable playback/scrubbing for postmortem analysis without auto-jumps. Live mode is most useful when paired with short telemetry intervals and a capped point buffer; otherwise, frequent updates can push rendering work too high and reduce interaction smoothness on lower-end GPUs.

🎯

Learning Reranker Visualizer: Scrub History

LEARNING_RERANKER_VISUALIZER_SCRUB_HISTORY
Timeline forensics

Controls timeline scrubbing in the learning-reranker visualizer so you can freeze playback at a specific training step and inspect how states evolved up to that point. In practice, this is the forensic control for diagnosing instability: you can pause on the first divergence, then compare score movement, gradient behavior, and rank ordering changes before and after that moment. When scrubbing is active, you are prioritizing deterministic inspection over live monitoring, which is usually the right mode for post-run root-cause analysis. Use this when best-checkpoint and last-checkpoint behavior disagree, or when live playback hides short transient failures.

🎯

Learning Reranker Visualizer: Tail Seconds

LEARNING_RERANKER_VISUALIZER_TAIL_SECONDS
Live playback onlyVisualization policy

Defines how much recent history is retained in live trajectory playback, expressed as seconds of visual tail. A shorter tail emphasizes immediate motion and makes rapid shifts easier to see, while a longer tail preserves context and makes drift patterns easier to diagnose over time. If this is too small, users may misinterpret stable long-term movement as abrupt noise; if too large, the display can become visually dense and harder to parse at speed. Tune this together with target FPS so temporal context and animation smoothness stay balanced on your hardware.

🎯

Primary K Override (@k cutoff)

RERANKER_TRAIN_PRIMARY_K_OVERRIDE
Advanced

`RERANKER_TRAIN_PRIMARY_K_OVERRIDE` chooses the evaluation cutoff used by @k metrics (for example MRR@k or nDCG@k) when deciding what counts as the run's primary score. Implementation-wise, this determines how deep into the ranked candidate list the trainer looks before scoring success, so smaller k values enforce top-of-list precision while larger k values reward broader coverage deeper in the list. This should be aligned with product behavior: if users only inspect a handful of retrieved chunks, a large k can make offline metrics look strong while real UX still feels weak.

🎯

Primary Metric Override

RERANKER_TRAIN_PRIMARY_METRIC_OVERRIDE
Advanced

`RERANKER_TRAIN_PRIMARY_METRIC_OVERRIDE` sets which single ranking metric is treated as the run's decision metric for model selection and run comparison. In practical pipeline terms, this changes which checkpoint is tagged as best and which headline score determines whether a training run is considered an improvement. The metric choice should match your relevance labeling regime: MRR emphasizes first-hit speed, nDCG captures graded ordering quality across top-k, and MAP emphasizes precision across many relevant items. Overriding this can be useful for targeted experiments, but if changed too often it reduces comparability across historical runs.

🎯

Recommended Metric (North Star)

RERANKER_TRAIN_RECOMMENDED_METRIC
Auto-selectedNorth Star

`RERANKER_TRAIN_RECOMMENDED_METRIC` is the auto-selected north-star ranking metric that the training system uses by default to summarize model quality for this corpus. Under the hood, the recommendation should be driven by label structure (single relevant item vs multiple relevant items vs graded relevance), so the selected metric reflects the actual retrieval objective instead of a generic score. This is important for implementation consistency: using one stable primary metric across runs keeps checkpoint selection, dashboards, and regression alerts aligned, and prevents metric switching from masking performance regressions on real queries.

🎯

Rerank Backend

RERANK_BACKEND

`RERANK_BACKEND` selects which reranking engine is used after initial candidate retrieval and fusion, effectively deciding where the relevance model executes (hosted API, local model runtime, or disabled path). Implementation-wise this affects latency profile, token/input limits, operational cost, and failure modes: cloud backends usually offer strong model quality with network dependency, while local backends trade setup complexity for tighter control and offline capability. Keeping this setting explicit is important for reproducibility, because evaluation scores and production behavior can shift materially when backend model families, truncation behavior, or inference constraints differ.

🎯

Rerank Snippet Length

RERANK_INPUT_SNIPPET_CHARS
Affects latency/costContext guardrail

`RERANK_INPUT_SNIPPET_CHARS` caps how many characters from each retrieved chunk are forwarded into reranker scoring. In implementation terms, this is a throughput and quality guardrail: smaller snippets reduce request size and latency, but risk truncating decisive evidence; larger snippets preserve context at the cost of higher tokenization load, longer inference, and potentially provider-side input-limit errors. The right value should be based on corpus structure and query style, then validated with offline ranking metrics plus p95 latency and cost tracking so you can find the smallest snippet size that preserves relevance quality.

🎯

Reranker Auto-Reload

TRIBRID_RERANKER_RELOAD_ON_CHANGE
Development featureDisable in production

Toggles hot-reload behavior when the reranker model path changes at runtime. In development this shortens iteration loops because newly trained adapters can be activated without restarting the service. In production, uncontrolled auto-reload can introduce jitter, temporary cache invalidation, and model consistency issues across replicas. If enabled, pair it with health checks and staged rollout logic so reload events do not degrade retrieval latency or answer stability.

🎯

Reranker Auto-Reload

TriBridRAG_RERANKER_RELOAD_ON_CHANGE

Legacy alias for `TRIBRID_RERANKER_RELOAD_ON_CHANGE`. When enabled, the service reloads reranker artifacts after path/config changes without a full process restart. This shortens iteration time and can reduce deployment friction, but reload behavior must be atomic: load into a shadow instance, run health checks, then swap pointers only on success. Without atomicity, mid-request model swaps can produce inconsistent scores. In production, pair this flag with file-watch debounce, checksum validation, and structured reload events so rollbacks are safe and observable.

🎯

Reranker Backend

RERANKER_BACKEND
Improves quality

Selects where second-stage relevance scoring runs: disabled, local learning reranker, or external cloud reranker. Backend choice changes both ranking behavior and operational constraints, because cross-encoder reranking improves precision but adds per-query compute and latency. Cloud backends usually provide stronger out-of-the-box quality, while local backends give tighter cost control, privacy, and reproducibility. Treat this as an evaluation knob: compare answer accuracy, NDCG/Recall@k, and p95 latency on the same query set before standardizing one backend.

🎯

Reranker Batch Size (Inference)

TRIBRID_RERANKER_BATCH
Tune for memory

Inference micro-batch size for reranker scoring over candidate documents. Larger batches can increase throughput and reduce per-item overhead on GPU, but memory pressure grows quickly with longer inputs and higher top-N. If this value is too aggressive you will see OOMs, allocator fragmentation, or latency spikes from retries and paging. Production tuning should sweep batch size jointly with max sequence length and candidate count, because these three parameters multiply into total token compute.

🎯

Reranker Batch Size (Inference)

TriBridRAG_RERANKER_BATCH

Batch size for inference-time reranking. Larger batches improve hardware utilization and reduce per-item overhead, but increase peak memory and can raise tail latency if queues back up. Smaller batches reduce memory pressure and can improve responsiveness for interactive workloads, but may lower throughput. Tune this parameter against your real document-length distribution, not synthetic short text, because sequence length and batch size interact multiplicatively in transformer memory usage. For production, pair with dynamic batching windows and per-request latency SLOs.

🎯

Reranker Max Sequence Length (Inference)

TRIBRID_RERANKER_MAXLEN
Performance sensitive

Maximum token budget for each query-document pair at rerank time. This parameter directly controls truncation behavior: small values improve speed and memory, while large values preserve long-context evidence at higher cost. For code and technical retrieval, quality gains usually plateau after a certain length unless queries depend on long-range context. Evaluate max length using long-tail queries, because overly short truncation tends to hide failures that only appear on long files and verbose documentation.

🎯

Reranker Max Sequence Length (Inference)

TriBridRAG_RERANKER_MAXLEN

Maximum token length for each `(query, candidate)` pair passed to the reranker at inference time. This value directly controls memory cost and latency, and indirectly affects ranking quality because aggressive truncation can remove decisive evidence near the end of long passages. For code search, moderate lengths often work well because relevant signals are concentrated around function signatures or nearby comments; for policy or documentation corpora, you may need a larger ceiling. Tune together with chunk size and overlap so that important evidence lands inside the reranker window instead of being truncated away.

🎯

Reranker Mode

RERANKER_MODE
Controls reranking behavior

Global switch for reranking behavior, typically `none`, `learning`, or `cloud`. Use `none` for lowest latency baselines, `learning` for locally trainable behavior, and `cloud` for managed cross-encoder quality with external dependencies. Because this mode changes the scoring path after retrieval, it can change user-visible answers even when retrieval is identical. Lock this setting per environment and benchmark each mode against shared evaluation sets before promoting to production.

🎯

Reranker Timeout

RERANKER_TIMEOUT
Reliability

Maximum wait time for cloud reranker requests before failing fast. This parameter protects end-to-end request latency and prevents queue pileups during provider slowdowns, but setting it too low can create false negatives under transient network variance. Tune timeout with retry policy and user-facing SLA in mind; timeout alone is not enough without fallback strategy (for example, use first-stage ranking when reranker times out). Track timeout rate by provider/model so you can distinguish systemic misconfiguration from temporary upstream degradation.

🎯

Reranker Top-N

TRIBRID_RERANKER_TOPN
Advanced RAG tuningAffects latency

Upper bound on how many retrieved candidates are passed into the reranker stage. Higher Top-N usually improves recall headroom because more borderline candidates are reconsidered, but reranker cost grows roughly linearly with this value. If set too low, relevant documents never reach reranking; if set too high, latency and GPU utilization can explode for little quality gain. Choose Top-N by plotting quality-latency curves and selecting the smallest value that keeps recall stable on hard queries.

🎯

Reranker Top-N

TriBridRAG_RERANKER_TOPN

Legacy alias for TRIBRID_RERANKER_TOPN. This setting controls how many fused retrieval candidates are forwarded into the reranker stage, where a heavier model re-evaluates relevance using richer query-document interactions. Higher values can improve final ranking quality on ambiguous or multi-intent questions because the reranker sees a wider candidate pool, but latency and inference cost usually scale with this number. In practice, tune this with an evaluation set: if top results are often "nearly right" but miss exact intent, increase Top-N; if quality plateaus while response time rises, lower it. Keep Top-N high enough to preserve recall before reranking, but not so high that reranking dominates end-to-end p95 latency.

🎯

Reranker Train Max Length

RERANKER_TRAIN_MAX_LENGTH

`RERANKER_TRAIN_MAX_LENGTH` is the explicit training-example token ceiling for reranker fine-tuning, and it controls how much joint query-context evidence the model can score in one forward pass. For this codepath, larger values can improve relevance discrimination on long passages, but they also increase per-step compute, reduce feasible batch size, and can force heavier gradient accumulation to stay within memory limits. Use it with a measurement loop: watch training throughput, memory headroom, and validation ranking metrics together, because pushing max length without enough optimization budget often slows training more than it improves retrieval quality.

🎯

Reset Triplets Before Mining

TRIBRID_RERANKER_MINE_RESET
Destructive

Whether to clear previously mined triplets before a new mining run. Enabling reset gives a clean dataset snapshot and avoids mixing stale and fresh negatives, which is useful for controlled experiments. Disabling reset preserves historical data and can improve coverage, but it also increases the risk of drift and duplicate/noisy samples. Use this setting with explicit dataset versioning so you can reproduce training results and roll back when mining quality drops.

🎯

Reset Triplets Before Mining

TriBridRAG_RERANKER_MINE_RESET

Controls whether previously mined triplets are deleted before starting a new mining run. Enabling reset gives a clean dataset boundary, which is useful for reproducible experiments and preventing old sampling bias from contaminating new runs. Disabling reset accumulates data over time, which can improve coverage but risks drift and duplicate-heavy training sets. In production pipelines, snapshot the prior triplet file before reset and log the run ID, commit SHA, and mining parameters so you can audit exactly what data was used to train each model version.

🎯

Training Batch Size

RERANKER_TRAIN_BATCH
Lower = safer on Colima

Number of training examples processed per optimization step during learning-reranker fine-tuning. Larger batches can improve gradient stability and throughput on strong hardware, but they increase memory pressure and can destabilize local/containerized setups if oversized. Smaller batches are safer for constrained environments and can be paired with gradient accumulation to emulate larger effective batch sizes. Tune batch size together with learning rate and sequence length, since all three interact with convergence speed and overfitting risk.

🎯

Training Epochs

RERANKER_TRAIN_EPOCHS
Quality vs overfit

Defines how many full passes over the reranker training dataset are executed. More epochs can improve fit on stable, representative triplets, but excessive epochs on small or noisy data usually reduce generalization and hurt real query performance. Use held-out validation queries and early stopping signals rather than only training loss to choose this value. As your mined data grows or distribution shifts, retune epochs because the optimal point moves with dataset size and difficulty.

🎯

Training Learning Rate

RERANKER_TRAIN_LR
Advanced ML trainingRequires tuning

Learning rate for reranker fine-tuning updates. It controls update magnitude and is often the highest-impact training hyperparameter: too high causes unstable loss and catastrophic drift, too low undertrains and wastes epochs. Choose LR jointly with batch size, adapter rank, and warmup schedule, and validate using ranking metrics rather than loss alone. For reranker adaptation, conservative starting values with short sweeps are usually safer than aggressive defaults.

🎯

Training Max Sequence Length

RERANKER_TRAIN_MAXLEN
Memory sensitive

`RERANKER_TRAIN_MAXLEN` sets the tokenizer-level cap used when building reranker training pairs, so every query-document pair is truncated to this maximum length before it reaches the cross-encoder. In implementation terms, this is one of the strongest memory controls in the training loop because self-attention cost grows roughly with sequence length squared; increasing this value can quickly push GPU/MLX memory over the limit and trigger OOM exits. In practice, treat this as a budget knob: start lower for stability, then raise only if error analysis shows that relevant evidence is being cut off and ranking quality is bottlenecked by truncation rather than model capacity.

🎯

Triplet Mining Mode

TRIBRID_RERANKER_MINE_MODE
Advanced

Negative-sampling policy used when generating triplets for reranker training. Random negatives are stable but often weak; semi-hard negatives improve discrimination without overwhelming optimization; hard negatives are highest signal but can inject false negatives and noise if mining quality is low. The right mode depends on corpus ambiguity and label fidelity, so teams typically stage mining as a curriculum (random to semi-hard to hard) with periodic audit sets. Treat this as a data-quality lever first and a model-quality lever second.

🎯

Triplet Mining Mode

TriBridRAG_RERANKER_MINE_MODE

Legacy alias for triplet mining strategy selection (`random`, `semi-hard`, `hard`). This setting controls the difficulty of negative examples used to train the reranker. `random` negatives are fast but often too easy; `hard` negatives maximize discrimination pressure but can inject label noise and instability; `semi-hard` is usually the best production default because it balances signal strength and training robustness. Treat mining mode as a data curriculum parameter and re-evaluate it whenever your corpus changes materially.

🎯

Warmup Ratio

RERANKER_WARMUP_RATIO
Advanced ML trainingStabilizes training

`RERANKER_WARMUP_RATIO` defines what fraction of total optimization steps uses a gradual learning-rate ramp before entering the main scheduler phase. In this training stack, warmup protects early updates when the reranker head and backbone are still unstable, reducing gradient spikes and divergence risk that can otherwise corrupt the first checkpoints. Operationally, this value interacts with total step count: short runs need a smaller warmup fraction so useful learning starts early, while longer runs can tolerate a larger warmup to improve stability. Tune it together with batch size and base LR, because warmup that is too short can destabilize training, while warmup that is too long can waste compute on underpowered updates.

📊

Baseline Path

BASELINE_PATH
Evaluation

BASELINE_PATH is where evaluation baselines are stored so retrieval and generation changes can be compared to a stable reference over time. A strong baseline captures both quality metrics and operational behavior, including ranking quality, grounding rate, latency, and abstention behavior. Store immutable run identifiers with dataset version and config hash so regressions can be traced to exact parameter changes. Without baseline discipline, tuning often produces short-term wins on narrow queries while silently degrading difficult slices that matter in production.

📊

Compare With (BEFORE)

EVAL_COMPARE_RUN
Before after diff

Selects the baseline run used for before versus after comparison so changes are interpreted causally instead of anecdotally. Good comparisons require the same dataset, similar traffic assumptions, and a captured config snapshot for both runs; otherwise score deltas are hard to trust. Use this diff to isolate which parameter changes correlate with quality movement and latency shifts. In practice, this is the fastest way to confirm whether a tuning experiment actually improved retrieval quality or just moved metrics around.

📊

Eval Analysis

EVAL_ANALYSIS_SUBTAB
Evaluation diagnostics

This view is where run-level metrics become actionable diagnosis. It should connect aggregate scores such as Hit@K and MRR to per-question traces, retrieved contexts, and model outputs so regressions can be explained instead of merely detected. The most useful workflow is to segment failures by retrieval miss, ranking miss, or generation miss, then map each bucket to a config change. Treat this tab as the decision surface for promotion or rollback of RAG configuration updates.

📊

Eval Multi‑Query

EVAL_MULTI
Recall expansion

Controls whether evaluation uses multi-query expansion, where one prompt is rewritten into several retrieval queries to improve recall under wording variation. Enable this when production also uses multi-query, otherwise eval results can be overly optimistic or pessimistic compared with real traffic. The gain usually comes from broader evidence discovery, but cost and latency scale with rewrite count and dedup work. Measure marginal benefit per extra rewrite and stop when added queries no longer improve quality.

📊

Evaluation Logs Terminal

EVAL_LOGS_TERMINAL
Traceability

Streams execution details for each evaluation item so run outcomes can be audited and reproduced. Useful logs include rewritten queries, retrieved document identifiers, ranking scores, latency breakdowns, and any fallback path chosen by the system. This visibility is critical when a summary metric drops but the failure mode is unclear. Persisting these logs with run IDs and config hashes turns the terminal from a debugging aid into durable evaluation evidence.

📊

Golden Questions Path

GOLDEN_PATH
Evaluation

Golden path points to the curated evaluation file used for repeatable quality checks. This dataset should represent real user intents and include expected retrieval or answer signals so regressions are detectable after any model or retrieval change. Treat it as versioned test data and expand it when new failure modes appear in production. Run it automatically during configuration and model rollout workflows to prevent silent quality drift. A disciplined golden set is the fastest way to compare fusion, chunking, and model changes on equal ground.

📊

Layer Bonus (Retrieval)

LAYER_BONUS_RETRIEVAL
Intent-layer routing

Score bias applied to backend and data-access layers when intent classification indicates retrieval, API, indexing, or storage questions. It improves ranking for service, route, and data pipeline code when users ask how the system fetches or transforms information. Because this weight can overpower semantic relevance, tune it with side-by-side evaluations on UI and backend query slices to avoid over-routing everything to server code. In well-structured repos, this parameter is a high-leverage control for making architectural answers faster and more precise.

📊

Metrics Enabled

METRICS_ENABLED

Master toggle for emitting runtime metrics from the application. When enabled, the process publishes counters, gauges, and histograms used for dashboards, alerting, and SLO tracking; when disabled, you lose quantitative visibility into throughput, error rates, latency distributions, and retrieval quality trends. Enable this in any shared or production-like environment, then gate high-cardinality labels to control cost. The goal is not just observability but fast diagnosis: metrics should let you correlate parameter changes (retrieval thresholds, rewrites, model routing) with concrete performance and reliability shifts.

📊

Primary Run (AFTER)

EVAL_PRIMARY_RUN
Run source of truth

Identifies the run treated as the current or after system state in analysis. All charts and comparisons should resolve from this immutable run record, including config snapshot, dataset version, and code revision. Without a clearly defined primary run, metric interpretation drifts and rollback decisions become ambiguous. Operationally, this key anchors evaluation governance by making one run the explicit source of truth for release decisions.

📊

Run RAG Evaluation

RUN_EVAL_ANALYSIS
Uses current config~1-5 min runtime

`RUN_EVAL_ANALYSIS` triggers the end-to-end evaluation pass for the current RAG configuration, executing the full question set through retrieval, reranking, and answer generation, then computing aggregate quality metrics. From an implementation perspective, this is the guardrail step that turns configuration changes into measurable evidence: it should produce repeatable run artifacts (scores, traces, and run metadata) so regressions can be diagnosed instead of guessed. Use it whenever retrieval weights, reranker settings, chunking, or prompt strategy changes, and interpret results slice-by-slice rather than only by one global average so failures on difficult query classes are not hidden.

📊

Sample Size (Quick vs Full)

EVAL_SAMPLE_SIZE
Coverage versus speed

Determines how many evaluation questions are executed in a run, trading speed for statistical confidence. Small samples are useful for rapid iteration but have higher variance and can mask edge-case regressions; larger samples stabilize ranking and generation signals before release. Use fixed seeds and stable sampling policy so repeated quick runs remain comparable. A strong workflow is quick sampled checks during tuning, followed by full-suite confirmation before shipping configuration changes.

📊

Temperature (no retrieval)

chat.temperature_no_retrieval

This temperature is used for direct chat turns with no retrieval context attached. It is intentionally independent from retrieval-mode temperature so you can keep grounded answers conservative while allowing freer ideation in non-retrieval conversation. In deployment terms, this split lets you run two sampling policies inside one chat product: evidence-constrained behavior for grounded questions and creativity-oriented behavior for open-ended drafting. Recommended practice is to validate no-retrieval temperature with prompt categories that do not need factual anchoring (brainstorming, rewriting, tone variation) and keep guardrails strong for policy-sensitive topics where higher randomness can increase unsafe or inconsistent outputs.

⚙️

Advanced Parameters

ADVANCED_RAG_TUNING
Retrieval

Advanced RAG tuning controls how lexical, vector, reranker, and metadata signals are combined after initial retrieval. This is where you adjust fusion weights, score bonuses, candidate expansion, and iteration limits, so small changes can move hit-rate and latency in opposite directions. Treat these parameters as an evaluation loop: freeze a representative query set, change one knob at a time, and compare recall at k, ranking quality, grounded answer rate, and p95 latency against baseline. If weighting is too aggressive, one signal dominates and recall collapses on edge cases; if too weak, ranking becomes noisy and expensive.

⚙️

Alert Include Resolved

ALERT_INCLUDE_RESOLVED

`ALERT_INCLUDE_RESOLVED` controls whether the alert pipeline emits a second notification when an incident transitions from firing to resolved. In this stack, keeping it enabled (`1`, default) gives on-call responders explicit closure signals, which helps reconcile incident timelines and downstream ticket automation. Disabling it (`0`) reduces message volume but removes recovery-state visibility, so unresolved-looking alerts can persist in chat channels or incident tools even after the condition clears. Use `1` when you rely on auditability and MTTR measurement, and only disable it if notification fatigue is materially harming response quality.

⚙️

Alert Notify Severities

ALERT_NOTIFY_SEVERITIES

`ALERT_NOTIFY_SEVERITIES` is the final severity allowlist applied before outbound notification fan-out, using a comma-separated vocabulary such as `critical,warning`. The configured values must match the exact severity labels emitted upstream, otherwise valid alerts can be silently filtered out at dispatch time. With the default `critical,warning`, the system typically captures high-urgency incidents while limiting low-signal noise; adding `info` expands coverage but increases paging and webhook traffic. Treat this setting as an operations policy control: tune it against real incident outcomes, not just raw alert counts.

⚙️

Alert Webhook Timeout

ALERT_WEBHOOK_TIMEOUT
Reliability

ALERT_WEBHOOK_TIMEOUT defines how long the system waits for an outbound alert webhook before treating delivery as failed. In RAG operations this prevents indexing, tracing, or incident pipelines from stalling when third-party endpoints degrade. Set it from real latency percentiles: high enough for normal network jitter, low enough to preserve queue health and fast failure detection during outages. This value works best with idempotent payloads, retry backoff, and dead-letter handling so timeouts become controlled recovery signals instead of duplicate alert storms.

⚙️

Answer Confidence Threshold

CHAT_CONFIDENCE_THRESHOLD
Guardrail

CHAT_CONFIDENCE_THRESHOLD sets the minimum confidence required before returning a normal answer path instead of fallback or abstention. Raising this threshold reduces unsupported responses and improves precision, but increases abstains and can make the assistant feel less responsive. Lowering it improves answer coverage while increasing the risk of weakly grounded outputs. Select the threshold from precision-recall tradeoffs on your own workload, and use stricter values for high-risk intents where incorrect answers are expensive.

⚙️

AST Overlap Lines

AST_OVERLAP_LINES
Chunking

AST_OVERLAP_LINES sets how many source lines are repeated between adjacent syntax-aware chunks when code is segmented by AST boundaries. Overlap preserves boundary context such as imports, signatures, decorators, and class state that might otherwise be split and become harder to retrieve. Too little overlap reduces recall on cross-boundary queries; too much overlap bloats the index, increases near-duplicates, and can bias scoring toward repeated context. Start with a small overlap and tune using real code-search prompts that depend on boundary continuity, then track recall improvement versus index growth and latency.

⚙️

Auto-Generate Keywords

KEYWORDS_AUTO_GENERATE
Auto routing

Automatically derives routing and retrieval keywords from repository content so the system can bootstrap sparse relevance signals without full manual curation. In RAG this is especially useful for new repos or rapidly changing codebases where static keyword lists become stale. A strong auto-generation pipeline should normalize identifiers, remove boilerplate terms, and preserve domain-specific phrases that improve query-to-repo routing. Treat generated keywords as a candidate set that can be audited and refined, not as immutable truth. Quality usually improves when automatic extraction is combined with a small manually maintained allowlist and blocklist.

⚙️

Auto-index conversations

chat.recall.auto_index

Automatically indexes conversation turns into the Recall corpus after responses complete, enabling retrieval over prior chat content. This converts conversational history into searchable artifacts so later turns can recover earlier decisions, constraints, and unresolved threads. Auto-indexing improves continuity but can add background load and memory noise if every turn is stored verbatim. In production, combine it with retention rules, deduplication, and evaluation sets that test both immediate follow-up recall and long-session drift to ensure memory helps more than it distracts.

⚙️

Auto-Open Browser

OPEN_BROWSER

Controls whether Crucible automatically launches a browser tab when the local server starts. It improves developer ergonomics in interactive desktop workflows, but should normally be disabled for CI, SSH sessions, containers, and remote hosts where GUI launch attempts are noisy or impossible. Keep this off in production-like startup scripts to avoid side effects and process-blocking behavior. In short: enable for local convenience, disable for automation and infrastructure.

⚙️

Auto-open LangSmith

TRACE_AUTO_LS

TRACE_AUTO_LS controls whether the UI should automatically open a LangSmith run view after request completion. It does not change retrieval quality directly, but it changes debugging speed by reducing the friction between an anomalous response and its trace evidence. Keep it enabled in active tuning sessions where fast trace inspection matters, and disable it in high-throughput workflows where constant context switching is distracting. If this flag is enabled while external tracing is disabled, the expected behavior should degrade gracefully to local trace views rather than broken deep-links.

⚙️

Auto-Start Colima

AUTO_COLIMA
DevOps

AUTO_COLIMA controls whether local runtime automation should start Colima when container dependencies are required but not already running. This is useful for RAG development setups that rely on local vector databases, model services, or ingestion workers in Docker-compatible containers. Enabling it reduces manual setup friction and failed starts, but can hide resource costs if virtualization launches unexpectedly on constrained laptops. Keep it enabled for full-stack local workflows and disabled in managed environments where process lifecycle is controlled by external orchestration.

⚙️

Auto‑Scroll to New Messages

CHAT_AUTO_SCROLL
UX

CHAT_AUTO_SCROLL controls whether the interface automatically follows newly streamed tokens and messages. Enabling it improves live readability for active back-and-forth use, but can interrupt users who are reviewing earlier citations, logs, or traces while a response is still streaming. In RAG interfaces this tradeoff directly affects trust workflows, because users often need to inspect evidence while generation continues. A strong behavior pattern is auto-scroll by default with pause-on-user-scroll, so real-time flow and manual review both remain usable.

⚙️

Card Semantic Bonus

CARD_BONUS
Ranking

CARD_BONUS controls how much score uplift is applied when a result aligns with card-level semantic summaries. This acts as a prior that high-level module intent should influence final ranking alongside lexical and dense evidence. A moderate bonus can lift architecturally relevant chunks that otherwise rank too low; an excessive bonus can overpower direct evidence and drift results toward generic summaries. Calibrate the bonus using grounded answer metrics and citation quality, not only top-k retrieval gain.

⚙️

Cards Max

CARDS_MAX
Ranking

CARDS_MAX sets how many semantic summary cards are loaded as auxiliary evidence during ranking. Increasing this value can improve coverage for architecture and feature-discovery questions, but it also introduces candidate noise and additional latency if too many weakly related cards are considered. Lower values keep ranking focused and faster, but can miss long-tail modules that only surface in summaries. Tune this limit by query segment and measure both grounded-answer quality and p95 latency so card coverage does not overwhelm precision.

⚙️

Chat Configuration

CHAT_SETTINGS
Core tuning

Represents the combined control surface for chat behavior: model choice, retrieval parameters, generation limits, and reasoning options. These settings should be treated as a coupled system rather than independent toggles, because changes in one area often shift quality or latency elsewhere. For example, increasing retrieved context may require lower output limits or different prompts to keep responses focused. The most reliable way to tune this bundle is benchmark-driven iteration against your real tasks, with clear measurements for answer quality, citation quality, latency, and cost.

⚙️

Chat History Storage

CHAT_HISTORY
Memory

CHAT_HISTORY defines how conversation context is persisted and restored across sessions. Persistent history improves follow-up quality and reduces repeated setup, but it also expands privacy responsibilities because prompts, retrieved passages, and outputs may contain sensitive information. If storage is browser localStorage, treat it as convenience persistence, not secure archival storage, and provide clear controls for clearing or disabling history. Retention policy and visibility should be explicit so users understand what context is remembered and why.

⚙️

Chat Streaming

CHAT_STREAMING_ENABLED
Real-time UX

Enables token-by-token delivery instead of waiting for a complete response. Streaming reduces perceived latency and gives users immediate feedback, which is especially useful when retrieval and reasoning steps produce longer answers. It also changes system design requirements: your frontend and gateway must support incremental events, cancellation, and partial-output rendering. If your deployment path does not reliably support SSE-style transport, disabling streaming can simplify operations at the expense of slower perceived responsiveness.

⚙️

Chunk Entity Expansion Enabled

GRAPH_CHUNK_ENTITY_EXPANSION_ENABLED
Graph Retrieval

GRAPH_CHUNK_ENTITY_EXPANSION_ENABLED controls whether chunk retrieval expands through entity-to-chunk relationships after initial seed hits are found. Enabling it usually improves recall on questions where relevant evidence is distributed across files that mention the same functions, classes, or symbols but are not textually similar. The tradeoff is a larger candidate set, higher latency, and possible semantic drift when entity extraction is noisy. This works best when entity linking quality is good and graph edges are corpus-scoped, and it is less helpful when the graph is sparse or inconsistent. Treat it as a recall lever that should be tuned together with max hops, expansion weight, and graph top-k.

⚙️

Chunk Entity Expansion Weight

GRAPH_CHUNK_ENTITY_EXPANSION_WEIGHT
Fusion Tuning

GRAPH_CHUNK_ENTITY_EXPANSION_WEIGHT sets how strongly entity-expanded chunks influence final graph candidates relative to original seed chunks. Lower values keep rankings anchored to direct semantic matches, while higher values favor graph-discovered neighbors that may add cross-file context. In production, this is usually a calibration setting rather than a one-time constant, because optimal values differ by query type and graph quality. If set too high, hub entities can dominate and reduce precision; if too low, expansion has little practical effect and recall gains disappear. Evaluate this setting on judged queries using both retrieval metrics and grounded answer quality, not retrieval metrics alone.

⚙️

Chunk Neighbor Window

GRAPH_CHUNK_NEIGHBOR_WINDOW
Context Control

GRAPH_CHUNK_NEIGHBOR_WINDOW defines how many adjacent chunks around each seed chunk are included through NEXT_CHUNK style links. This improves local coherence by pulling surrounding code or prose that often contains signatures, setup, and constraints needed for correct answers. Small windows usually increase answer quality with modest cost, while large windows quickly add repetitive context and token overhead. The ideal value depends on your chunk size and overlap strategy: smaller chunks typically benefit from a slightly larger neighbor window. Tune it by tracking grounded answer rate and prompt-token growth together so recall gains do not come from avoidable context inflation.

⚙️

Chunk Overlap

CHUNK_OVERLAP
Boundary recall

Specifies how much content is repeated between adjacent chunks. Overlap reduces boundary loss by ensuring entities, arguments, or code flow that cross a split still appear in at least one retrievable unit. Too little overlap hurts recall near chunk edges; too much overlap bloats the index, increases embedding cost, and can bias retrieval toward duplicated text. The right value depends on document structure and query style, so measure retrieval hit quality and index growth together rather than tuning overlap in isolation.

⚙️

Chunk Seed Overfetch Multiplier

GRAPH_CHUNK_SEED_OVERFETCH
Performance Tuning

GRAPH_CHUNK_SEED_OVERFETCH determines how many extra seed candidates are fetched before corpus-level filtering or later-stage pruning is applied. In shared graph infrastructure, overfetching is often required because early ranking runs across more data than the target corpus and many candidates are removed downstream. If this multiplier is too low, final candidate sets can be underfilled and recall drops sharply on selective corpora. If it is too high, query cost and latency increase with little quality benefit. A practical approach is to monitor candidate survival rate after filtering and set overfetch so expected survivors consistently exceed your graph top-k target.

⚙️

Chunk Size

CHUNK_SIZE
Recall/precision

Sets the target size of each chunk before embedding. Larger chunks preserve more local context and can help complex synthesis, but they reduce granularity and may retrieve irrelevant text; smaller chunks improve precision and reranking flexibility but risk fragmenting meaning. In code and technical corpora, chunk size should be tuned with overlap, tokenizer behavior, and model context limits as a single budget problem. The best value is empirical: run retrieval evaluations on your actual question set and choose the smallest size that preserves answer completeness.

⚙️

Chunk Summaries Enrich Default

CHUNK_SUMMARIES_ENRICH_DEFAULT
Metadata quality

Controls whether chunk summaries are generated with richer, model-assisted metadata by default. Enriched summaries can add intent, entities, API surface hints, and semantic cues that improve retrieval and reranking beyond raw embeddings alone. The trade-off is higher indexing cost and longer build times, especially on large repositories. Enable enrichment when search quality and explainability matter more than ingestion speed, and disable it for rapid iteration pipelines where you need frequent low-cost reindexing.

⚙️

Chunk Summary Bonus

CHUNK_SUMMARY_BONUS
Advanced tuning

Additive weight applied after score fusion when a hit came from chunk-summary retrieval instead of raw chunk text. In practice this controls whether conceptual matches such as intent, behavior, or API purpose can compete with exact-token matches from code. Raise it when summaries are high quality but consistently rank below noisy lexical matches; lower it when vague summaries outrank precise chunks and hurt answer grounding. Tune this together with your fusion method and evaluation set, because the same numeric bonus has very different effects depending on score normalization and corpus size.

⚙️

Chunking Strategy

CHUNKING_STRATEGY
Index quality

Defines how source content is segmented before embedding and indexing, which is one of the highest-impact choices in a RAG pipeline. Syntax-aware strategies preserve logical units like functions or classes and usually improve precision for code queries, while simpler fixed or greedy splits are faster and more robust for mixed or noisy inputs. Hybrid strategies often perform best operationally because they retain structure when parsing succeeds and fall back gracefully when it does not. Any strategy change should trigger reindexing and evaluation because embeddings, recall patterns, and reranker behavior all shift together.

⚙️

Clear Python bytecode caches

DEV_STACK_CLEAR_PYTHON_BYTECODE
Cache hygiene

Maintenance action that removes generated Python bytecode caches to force modules to be recompiled on next import. This helps resolve stale-module behavior after refactors, branch switches, or path changes where cached artifacts can mask current source behavior during local development. It is generally safe because only derived cache files are removed, not source files or dependency environments. In RAG service development, clearing bytecode is a practical reset step before retesting backend reload or import-related failures.

⚙️

Code Block Highlighting

CHAT_SYNTAX_HIGHLIGHT
Readability

Applies language-aware formatting to fenced code blocks in chat responses. This does not change model quality directly, but it strongly affects human review speed and error detection in code-focused RAG workflows. Highlighting is most valuable when answers include multi-file patches, stack traces, or mixed-language snippets, because visual structure makes semantics easier to scan. The main trade-off is rendering overhead on very long transcripts, so teams handling large streamed outputs often combine highlighting with virtualized rendering and selective expansion.

⚙️

Code Cards

CODE_CARDS
Semantic layer

Code cards are enriched semantic representations of chunks that capture purpose, main symbols, side effects, and likely usage context in a compact form. They act as a retrieval-friendly abstraction layer: dense and hybrid retrievers can match the card text when raw source is too low-level or verbose for the user query. High-quality cards improve intent routing, candidate filtering, and explanation quality during answer generation. Because cards are derived artifacts, they should be regenerated when major code changes occur so retrieval stays aligned with current behavior.

⚙️

Code Indexing

INDEXING
Requires Reindex

INDEXING is the end-to-end process that converts raw corpus files into retrieval-ready artifacts such as chunks, sparse signals, dense vectors, and optional graph structures. It is corpus-scoped, so each corpus can have distinct embeddings, tokenization behavior, and graph topology. Most quality-affecting changes to chunking, embedding models, and sparse analyzers require reindexing before they influence query results. In practice, indexing quality determines the ceiling for retrieval quality, while query-time tuning only reshapes what indexing already captured. Treat indexing as a reproducible pipeline with versioned settings so retrieval behavior is explainable across releases.

⚙️

Colima Profile

COLIMA_PROFILE
Runtime profile

Named Colima VM profile used when local container orchestration is auto-managed. Profiles let you isolate Docker runtime settings such as CPU, memory, disk, architecture, and Kubernetes enablement for different workloads, which is useful when RAG indexing, database services, and inference tasks compete for resources. Setting the profile explicitly improves reproducibility across machines and avoids accidental coupling to a default profile tuned for another project. When startup or runtime behavior is inconsistent, profile drift is one of the first things to check.

⚙️

Community Detection

INCLUDE_COMMUNITIES
Advanced Graph

INCLUDE_COMMUNITIES enables community-level graph expansion, allowing retrieval to include nodes that are topologically related even when direct edges to seeds are limited. This is particularly helpful for broad architectural or subsystem questions where relevant evidence is distributed across many entities. The tradeoff is that community expansion can increase thematic noise for narrow fact queries, so it should be paired with stricter reranking and context limits. Community detection quality strongly affects outcomes, making graph construction and clustering parameters part of retrieval quality control. Use this setting when recall across related modules matters more than strict locality.

⚙️

Confidence Any

CONF_ANY
Safety gate

Safety-net confidence gate: proceed when at least one candidate clears this threshold, even if aggregate gates fail. It is designed to reduce false abstentions when retrieval returns one strong hit plus several weak ones, which is common in sparse or highly specific technical queries. Setting it too low increases hallucination risk by allowing weak singleton matches; setting it too high cancels its rescue value and causes unnecessary rewrites or no-answer outcomes. Tune it using failure analysis that separates true misses from ranking noise.

⚙️

Confidence Avg-5

CONF_AVG5
Retry controller

Average confidence over the top five candidates, used as a stability gate before accepting retrieval or triggering rewrite loops. Compared with top-1 thresholds, this metric is less sensitive to one lucky match and better reflects whether the candidate set is broadly usable for grounded generation. Raising it improves answer reliability but increases rewrite frequency and cost; lowering it reduces retries but can pass low-coherence sets into generation. Use it as your main control for balancing relevance quality against latency and token spend.

⚙️

Confidence Top-1

CONF_TOP1
Precision gate

Primary acceptance gate for the best-ranked candidate. If the top result exceeds this threshold, the system can short-circuit additional rewrite or expansion steps, reducing latency and cost. Lower values increase answer rate but make the system more likely to trust brittle single hits; higher values enforce stricter precision and can over-trigger retries. The best operating point depends on your tolerance for false positives versus abstentions, so tune with labeled evals rather than intuition.

⚙️

Containers (running/total)

SYS_STATUS_CONTAINERS
Operational

Reports runtime health of service containers as `running/total`, giving a quick signal for partial outages and startup drift. This value is most useful when combined with health probes: a container can be running but still unready, degraded, or failing dependencies. Use the metric to distinguish control-plane issues (containers not up) from application issues (containers up but unhealthy). In incident response, this row should be read alongside logs and readiness checks, not as a standalone pass/fail.

⚙️

Corpora (active selection)

SYS_STATUS_CORPUS
Core concept

Shows which corpus is currently active, which is effectively your retrieval boundary and isolation unit. Corpus selection determines which embeddings, sparse indexes, graph nodes, and metadata filters participate in search. A wrong active corpus often looks like 'the model got worse' when the real issue is cross-dataset mismatch or stale index scope. In multi-tenant or multi-project setups, this indicator is critical for preventing accidental cross-context retrieval and for auditing data separation.

⚙️

Custom System Prompt

CHAT_SYSTEM_PROMPT
Behavior control

Provides the top-level instruction contract that shapes the assistant’s behavior across every turn. In RAG systems, this is where you encode non-negotiable rules such as citation requirements, abstention behavior for low-confidence retrieval, formatting expectations, and scope boundaries. Small prompt edits can cause large behavioral shifts, so treat system prompts as versioned configuration with evaluation gates, not ad hoc text. Stable prompts plus measured rollout reduce regressions when you change models, retrieval strategy, or tool integrations.

⚙️

Data Directory

DATA_DIR
Storage path

Root directory where runtime artifacts are persisted, including logs, tracking outputs, caches, and temporary working files. For RAG/search systems this path affects durability, backup scope, and multi-service interoperability because index and telemetry jobs often need shared filesystem access. Use a stable absolute location in production and mount it to persistent storage to survive restarts and deployments. Keeping this value explicit also prevents hard-to-debug issues where processes run from different working directories and write to unintended relative paths.

⚙️

Dedup by

DEDUP_BY
Result shaping

Controls which identity key is used to collapse duplicates after hybrid fusion and before final ranking. Using chunk-level identifiers keeps multiple relevant regions from the same file, which helps neighbor-window expansion and detailed grounding. Using file-level dedup increases source diversity but can hide secondary evidence in long files and reduce local context continuity. Choose based on task style: file-level for broad discovery and chunk-level for precise implementation questions.

⚙️

Deep on explicit reference

chat.recall_gate.deep_on_explicit_reference

When enabled, explicit user references to prior discussion (for example “as we discussed earlier”) trigger a deeper Recall retrieval mode rather than default shallow memory lookup. This helps continuity-critical turns by widening retrieval scope and increasing chances of recovering relevant earlier context. Because deeper recall is more expensive and can surface stale or weakly related memory, pair this gate with strong reference detection and ranking thresholds. The goal is targeted escalation: pay the extra retrieval cost only when the user clearly signals dependence on earlier conversation state.

⚙️

Deep recency weight

chat.recall_gate.deep_recency_weight

Controls how strongly deep Recall favors recent turns over older turns when ranking memory candidates. In deep mode, the system is usually trying to recover decisions, commitments, and unresolved questions from the current collaboration thread, so recency often deserves a higher influence than topical similarity alone. Raising this value pushes the gate toward latest context continuity; lowering it lets historically important context survive even if it is farther back in the timeline. Tune this alongside deep_top_k and watch for two failure modes: over-recency (missing earlier but still binding decisions) and under-recency (surfacing stale plans that were already revised).

⚙️

Deep top_k

chat.recall_gate.deep_top_k

Defines how many memory snippets deep Recall can inject when the gate classifies a turn as deep. A larger deep_top_k improves coverage for multi-step decisions spread across many turns, but increases prompt budget pressure and can dilute salient facts if re-ranking is weak. A smaller value is cheaper and often cleaner, but can clip supporting rationale and cause the assistant to reconstruct decisions from incomplete evidence. Treat this as a recall-versus-focus control: increase for complex planning sessions, decrease for high-throughput coding loops where latency and context headroom matter more than exhaustive conversational history.

⚙️

DeepSeek Engram Memory

DEEPSEEK_ENGRAM_MODE
DeepSeekLong Context

Selects whether to apply Engram-style memory behavior for long-horizon generation and retrieval-grounded dialogue. Engram introduces a structured memory pathway intended to preserve salient context while reducing the cost of keeping every token in raw cache form. For production systems, this knob should be evaluated against two dimensions: answer fidelity at long context lengths, and operational efficiency under concurrent load. If enabled, validate on tasks with delayed references, long legal/technical documents, and multi-hop QA, because memory summarization can sometimes blur rare but important details. Keep this disabled by default unless your benchmarks show stable gains in latency or context retention for your domain. If enabled, combine with stricter trace logging and regression gates for factual consistency.

⚙️

DeepSeek KV Cache Strategy

DEEPSEEK_KV_CACHE_MODE
DeepSeekExperimental

Determines which key/value cache strategy to use for DeepSeek-family models, including the DualPath-style design published on February 25, 2026. This parameter primarily affects long-context efficiency and stability under sustained decoding. More aggressive cache transformations can improve throughput and reduce memory footprint, but they may alter behavior on prompts that rely on exact token-level retention across very long spans. Treat this as an experimental performance lever: benchmark end-to-end latency, GPU memory peak, and answer fidelity together instead of optimizing one metric in isolation. For retrieval pipelines, monitor citation faithfulness and grounding under long documents, because cache strategy changes can shift which details remain accessible during later decoding steps. Roll out gradually with canary traffic and strict evaluation checkpoints.

⚙️

DeepSeek mHC Mode

DEEPSEEK_MHC_MODE
DeepSeekAdvanced

Controls whether inference paths should use the DeepSeek mHC (memory hierarchy compression) strategy described in late-2025 work. In practice, this setting changes how key/value memory is retained, compressed, and recovered over long generation windows. The main tradeoff is latency and throughput versus memory pressure and long-context fidelity. Enabling mHC-style behavior can reduce memory amplification at high context lengths, but you should benchmark quality drift on citation-heavy prompts, chain-of-thought style reasoning, and multi-turn retrieval sessions before treating it as default. Use this parameter with explicit observability: track first-token latency, tokens/sec, cache hit behavior, and output regressions across fixed eval sets. If quality drops in deep-context prompts, pair this with more conservative cache policies and higher rerank confidence thresholds.

⚙️

Default intensity

chat.recall_gate.default_intensity

Sets the fallback retrieval intensity when no strong gate signal is detected. This is effectively your baseline memory behavior for ambiguous turns: whether the assistant should usually skip, run a lightweight check, run standard retrieval, or assume deep recall by default. Choose a conservative default if your workload is mostly independent requests; choose a richer default if users continuously refine the same artifact across turns. The key design principle is predictable behavior under uncertainty: this parameter should match your dominant interaction pattern so weakly signaled turns still feel coherent and cost-efficient.

⚙️

Default Response Creativity

GEN_TEMPERATURE
Sampling control

Temperature controls sampling randomness. In retrieval-grounded QA, lower values usually improve consistency and factual stability, while higher values increase stylistic variation and drift risk. Keep defaults low for technical explanations, debugging steps, and config guidance where repeatability matters. Raise it only for explicitly creative tasks and monitor variance across repeated runs of the same query. If answer facts change across retries with identical context, temperature is likely set too high for your use case.

⚙️

Dev Local Uvicorn

DEV_LOCAL_UVICORN
Dev workflow

Development toggle that runs the ASGI app directly with Uvicorn instead of through containers. Local mode speeds iteration by enabling fast reload cycles, debugger attachment, and direct visibility into Python stack traces, which is useful when tuning retrieval logic or model-routing code. The tradeoff is environment drift: local interpreter, OS libraries, and network layout can diverge from production container behavior. Use this for rapid debugging, then verify fixes in the containerized stack before release.

⚙️

Disable Enrichment

ENRICH_DISABLED
Faster indexing

This switch disables enrichment generation entirely during indexing. It is useful for fast iteration, low-cost development cycles, and emergency backfills where raw embedding retrieval is acceptable. The cost of disabling is reduced semantic metadata for reranking, cards, and explanatory UX features, which can lower answer quality on abstract or architecture-level questions. Use it intentionally and record when it is active so benchmark comparisons remain meaningful. A common pattern is enrichment disabled for local loops and enabled for production-grade index builds.

⚙️

Documentation Directory

DOCS_DIR
Corpus scope

Points to the documentation directory that is served in the UI and can also be indexed as retrieval content. Keeping this path explicit improves corpus hygiene by separating authoritative docs from scratch or internal-only files. If your docs evolve per release, align directory structure with versions so retrieval returns the right era of guidance for the running stack. Validate static serving and file permissions so non-document assets are not exposed unintentionally.

⚙️

Edition

TRIBRID_EDITION
Feature gating

TRIBRID_EDITION identifies which capability tier is active and therefore which features, limits, and integrations should be exposed. In practice, edition gating should be implemented as explicit, testable policy checks rather than implicit UI-only toggles, so behavior remains consistent across API and frontend. This field also drives operational assumptions such as default observability depth, throughput ceilings, and support for advanced retrieval controls. Treat edition transitions as deployment events and validate compatibility paths to avoid silent behavior drift for existing tenants.

⚙️

Edition

TriBridRAG_EDITION

Selects the runtime edition profile used for capability gating and operational defaults. Typical values map to deployment tiers (`oss`, `pro`, `enterprise`) and should be treated as a policy switch, not just a label. In practice this flag should determine which features are exposed in UI/API, which background jobs are enabled, and which observability or governance controls are required. Keep edition checks centralized in one resolver so behavior remains deterministic across frontend, backend, and training jobs, and avoid scattering conditional checks across the codebase.

⚙️

Editor Bind Address

EDITOR_BIND
Network exposure

Chooses the interface address used by the editor service. Binding to 127.0.0.1 limits access to the local host and is safest for development, while 0.0.0.0 exposes the service to the network and requires strong authentication, TLS, and firewall boundaries. In RAG environments, exposed editors can provide indirect access to prompts, config, or indexed data paths. Treat non-local binding as a security-sensitive deployment decision.

⚙️

Editor Embed Mode

EDITOR_EMBED_ENABLED
Embed security

Controls whether the editor opens inside the app via iframe or in a separate tab/window. Embedded mode improves workflow continuity when reviewing retrieved snippets, but it introduces framing and origin policy constraints that must be configured correctly. Misconfiguration can break sessions, block assets, or create clickjacking and token-handling risk. Enable embed mode only when your CORS and frame policies are explicit and tested.

⚙️

Editor Enabled

EDITOR_ENABLED
UI capability gate

Master switch for enabling in-product editor integration. When enabled, teams can rapidly adjust prompts, chunking settings, or templates while validating retrieval behavior, which improves iteration speed. The tradeoff is a larger runtime attack surface and a stronger need for authz, audit, and environment isolation. Disable this in hardened environments where runtime mutation is not allowed.

⚙️

Editor Port

EDITOR_PORT
Port hygiene

Specifies the TCP port used by the editor service and must be coordinated with API, metrics, and model endpoints. Port conflicts often appear as intermittent startup or health-check failures in multi-service RAG dev environments. If remote access is needed, expose this port through a controlled proxy instead of direct public binding. Keep port mapping documented so local, CI, and staging stacks stay reproducible.

⚙️

Emit chunk ordinal

EMIT_CHUNK_ORDINAL
Context stitching

When enabled, each chunk stores a stable ordinal index inside its parent document. That makes neighbor-window retrieval possible, letting you expand around a high-scoring hit to recover local context that may span chunk boundaries. Ordinals also improve diagnostics by revealing where relevant evidence tends to appear within files. Keep ordinals deterministic for a fixed chunking configuration so experiments are comparable across runs. If chunking logic changes, expect ordinal renumbering and validate any downstream logic that assumes positional continuity.

⚙️

Emit parent doc id

EMIT_PARENT_DOC_ID
Traceability

When enabled, each chunk carries a stable parent document identifier, such as canonical path or document UUID. This supports document-level grouping, de-duplication, and score aggregation so retrieval can reason beyond isolated chunks. Parent IDs are also essential for debugging and observability, because they make it clear which source documents dominate top-k results. Use identifiers that remain stable across routine refactors whenever possible. Combining parent_doc_id with chunk ordinals provides a reliable basis for reconstructing larger contexts around hits.

⚙️

Enable MMR

ENABLE_MMR
Diversity control

This enables diversification during retrieval so selected chunks are both relevant and non-redundant. In practice, MMR-style selection reduces near-duplicate hits that otherwise waste context window budget and crowd out complementary evidence. It is especially useful for exploratory or multi-hop questions where coverage across files matters more than slight top-1 similarity gains. The main tradeoff is occasional top-rank precision loss if diversity weight is too high. Tune the relevance-diversity balance with offline evaluation by measuring both answer accuracy and duplication rate in retrieved contexts.

⚙️

Enable smart gating (Recall)

chat.recall_gate.enabled

Master switch for dynamic Recall gating. When enabled, the system classifies each incoming message and routes it to skip, light, standard, or deep memory retrieval based on lexical cues, structure, and conversational context signals. This reduces unnecessary memory queries on low-value turns while preserving stronger retrieval for decision-heavy follow-ups. When disabled, Recall behavior becomes static and less adaptive, which can simplify debugging but usually increases either latency/cost (if always on) or memory misses (if too conservative). Keep it enabled for production unless you are intentionally isolating retrieval regressions during controlled experiments.

⚙️

Endpoint Call Frequency (calls/min)

ENDPOINT_CALL_FREQUENCY
Anomaly detection

This threshold defines how many calls per minute to a single endpoint are considered anomalous. It is a practical control for catching retry storms, broken client loops, traffic abuse, and accidental hot paths that can degrade retrieval services. Set it from historical percentiles per endpoint instead of one global number, because normal traffic patterns differ widely. If set too low you create alert fatigue; too high and incidents are detected late. Pair this metric with labels like status code and caller identity to speed root-cause analysis after alerts fire.

⚙️

Enrich Code Chunks

ENRICH_CODE_CHUNKS
Slower indexing

When enabled, each code chunk is augmented with model-generated summaries or semantic descriptors during indexing. This often improves conceptual retrieval because rerankers can match intent signals beyond literal token overlap. The tradeoff is extra indexing time, compute cost, and the risk of noisy metadata if prompts or models are weak. Chunk size and model selection both matter: oversized chunks produce vague summaries, while tiny chunks lose architectural context. Evaluate this feature with task-based retrieval metrics to confirm the added metadata improves real query outcomes.

⚙️

Enrichment Backend

ENRICH_BACKEND
Index pipeline

This chooses the runtime that generates enrichment metadata during indexing, such as chunk summaries, tags, and semantic hints. Backend choice changes quality, latency, cost, privacy posture, and operational complexity, so it can materially alter downstream retrieval and reranking behavior. Hosted backends generally reduce ops burden and may provide stronger quality, while local backends can improve data control and predictable marginal cost. Treat backend changes like model migrations: version prompts and settings, then rerun evaluation before production rollout. Do not assume enrichment outputs are interchangeable across backends.

⚙️

Entity Types

ENTITY_TYPES
Graph schema control

Defines which code objects become graph nodes during enrichment and indexing, for example functions, classes, modules, imports, and key variables. This setting is effectively your graph schema: too few types weakens traversal quality, while too many low-signal types increase noise and index cost. Choose entity types that map directly to user questions, then keep relation extraction aligned so edges remain interpretable. Any change should be treated as a schema migration and followed by reindexing to keep graph search and downstream fusion behavior consistent.

⚙️

Error Rate Threshold (%)

ERROR_RATE_THRESHOLD
Reliability guardrail

Sets the error percentage that triggers retrieval or API reliability alerts over your configured observation window. Use this as an SLO guardrail, not just a raw alarm, by pairing it with minimum request volume so low-traffic spikes do not page unnecessarily. Lower thresholds catch regressions earlier but can increase alert fatigue during transient failures; higher thresholds reduce noise but delay incident response. A practical pattern is warning and critical tiers with different windows, then tuning against historical error bursts and on-call outcomes.

⚙️

Exclude Directories

CHUNK_SUMMARIES_EXCLUDE_DIRS
Noise control

Defines directory-level exclusions for summary generation. This is a high-leverage noise-control setting because many repositories include folders such as build artifacts, vendored dependencies, snapshots, or tests that dilute retrieval signal if summarized indiscriminately. Excluding low-value directories reduces indexing spend and keeps summary metadata focused on production-relevant code paths. Review this list regularly as the repo evolves so new generated or archival directories do not silently degrade retrieval quality.

⚙️

Exclude Directories

EXCLUDE_PATHS
Index scope control

Defines directories omitted from semantic indexing and code-card generation so low-value or generated artifacts do not pollute retrieval. Excluding paths such as dependency caches, build outputs, and vendored code usually improves precision while reducing index size and reindex time. Keep exclusions explicit and versioned because they materially change what the retriever can ever return. When troubleshooting missing answers, this list is one of the first places to inspect.

⚙️

Exclude Keywords

CHUNK_SUMMARIES_EXCLUDE_KEYWORDS
Noise control

Filters out chunks from summarization when they contain specific marker terms such as deprecated, generated, fixture, or experimental. Keyword exclusions are useful when directory filters are too coarse and you need finer-grained control inside otherwise relevant files. Used well, this improves metadata precision and reduces summary pollution from boilerplate or transitional code. Keep this list intentional and audited, because aggressive keyword filtering can hide important behavior from retrieval if terms are too broad.

⚙️

Exclude Patterns

CHUNK_SUMMARIES_EXCLUDE_PATTERNS
Noise control

Applies glob-style file pattern rules to skip selected files during summary generation. This is the most precise exclusion mechanism for cases like minified assets, lockfiles, generated SDKs, or test variants that do not improve semantic retrieval. Pattern filters are powerful but easy to overuse, so prefer explicit, reviewable rules and test them against real file inventories. Accurate pattern exclusion keeps summary coverage focused while preventing avoidable embedding and summarization overhead.

⚙️

Excluded Extensions

INDEX_EXCLUDED_EXTS
Corpus hygiene

Defines a denylist of file extensions that should be skipped before ingestion so the index is not polluted by binaries, build artifacts, media blobs, and other low-signal assets. In code and docs RAG, good exclusion rules improve both precision and indexing cost by avoiding irrelevant tokens and expensive parsing failures. Keep this list aligned with your repository layout and parser capabilities, because extension-only filtering can miss mislabeled files unless combined with MIME or content checks. Review exclusions after major stack changes, especially when adding documentation generators or notebook-heavy workflows. Overly broad exclusions can silently remove valuable domain knowledge from retrieval.

⚙️

Fallback Confidence

FALLBACK_CONFIDENCE
Fallback policy

Sets the confidence cutoff that decides when first-pass retrieval is accepted versus when fallback strategies are triggered. Typical fallbacks include query rewrites, broader candidate pools, alternate retrievers, or graph traversal expansion. Higher thresholds increase recovery attempts and usually quality, but also increase cost and latency; lower thresholds preserve speed but tolerate weaker evidence. Calibrate this value on held-out failures and monitor how often fallbacks improve answers versus creating unnecessary retries.

⚙️

Fallback Confidence Threshold

CONF_FALLBACK
Fallback policy

Threshold that decides when to enter fallback retrieval behavior, typically broader rewrites, expanded recall, or alternative retrievers. This is a policy lever for recovery under low initial confidence: lower values make fallback aggressive and improve answer coverage, while higher values keep costs controlled but may increase no-answer events. Because fallback often multiplies calls to LLM and reranker services, this setting should be tuned jointly with budget limits and call-rate alerts. Treat it as an operations control, not just a relevance knob.

⚙️

Filename Exact Match Multiplier

FILENAME_BOOST_EXACT
Lexical precision boost

Applies a multiplier when query tokens exactly match a filename or full path component, which is especially effective for identifier-driven code search. Exact filename intent often indicates the user already knows the artifact, so this feature can sharply improve rank quality for navigational queries. Set the multiplier high enough to surface true exact hits, but not so high that semantic relevance is overridden for exploratory questions. Validate with a mixed benchmark containing both known-file and concept-search tasks.

⚙️

Files Root Override

FILES_ROOT
Storage boundary

Overrides the base directory served by the files endpoint and effectively defines what the application is allowed to expose as retrievable file content. This is useful for containerized deployments, mounted corpora, and split storage layouts where app code and indexed files are not colocated. Keep the root narrow and explicit to reduce accidental data exposure, and align it with indexing paths so retrieval references resolve correctly. Any environment change to this path should be validated with path canonicalization and permission checks.

⚙️

Frequency Penalty

FREQUENCY_PENALTY
Decoding control

Controls how strongly generation penalizes reuse of tokens that already appeared in the output. In RAG systems this can reduce repetitive explanations and template loops, but overly aggressive settings may hurt code correctness, naming consistency, and syntax continuity. For technical answers, start low and evaluate on exactness and repetition metrics together, not fluency alone. This setting interacts with temperature and top-p, so tune jointly rather than in isolation.

⚙️

Freshness Bonus

FRESHNESS_BONUS
Temporal reranking

Adds a recency-based score bonus so newer files are favored during reranking. This is valuable in fast-moving repositories where recent commits are more likely to reflect current behavior, APIs, and incident fixes. The bonus should decay with file age to avoid suppressing stable but authoritative modules. Tune both the bonus magnitude and decay window against real query logs so freshness improves relevance without turning into naive newest-first ranking.

⚙️

Fusion Method

FUSION_METHOD
Core fusion strategy

Chooses how result lists from different retrievers are combined. Reciprocal Rank Fusion is usually robust when score scales are incomparable, while weighted score fusion is better when each modality is well normalized and intentionally calibrated. The method you choose affects both stability and interpretability of ranking behavior across query types. Keep evaluation and production on the same fusion method so offline gains translate reliably at runtime.

⚙️

Generation Backend

GEN_BACKEND
Provider routing

Generation backend selects the provider stack that executes model calls, which affects auth, parameter semantics, rate limits, timeouts, and tool-calling behavior. Treat backend choice as an operational contract, not a cosmetic model switch. In RAG systems, keep backend-specific defaults normalized so output length, safety behavior, and citation style stay predictable across providers. If you support multiple backends, define a deterministic fallback order and record backend metadata in logs for incident triage. Backend heterogeneity without observability is a common source of inconsistent answer quality.

⚙️

Generation Max Retries

GEN_RETRY_MAX
Resilience

This sets how many times generation requests are retried after transient failures such as rate limits or temporary backend faults. Higher values can improve success rate but also increase latency and amplify traffic during outages if backoff is weak. Use bounded retries with exponential backoff and jitter, and track request IDs to avoid accidental duplicate side effects. Interactive channels usually need fewer retries than background jobs. If retries are frequent but final success stays low, reduce retries and fix timeout, routing, or provider health first.

⚙️

Generation Timeout

GEN_TIMEOUT
SLO guardrail

Timeout sets the maximum wait for generation before the request is aborted. This is a reliability boundary that protects workers and users during provider slowdowns; too low causes false failures, too high causes queue buildup and cascading retries. Tune it by model class and expected output length, then enforce stricter limits for interactive paths. Combine timeout with retry policy so slow requests do not create retry storms. Rising timeout rates usually indicate context bloat, backend saturation, or routing misconfiguration rather than a need for unlimited timeout.

⚙️

Grafana Auth Mode

GRAFANA_AUTH_MODE
Access control

Auth mode determines how your app authenticates to Grafana and therefore defines the monitoring trust boundary. Token or service-account auth is preferred for automated integrations because it supports least privilege and clearer auditing. Basic auth can work for small internal setups but is harder to rotate safely and tends to leak into scripts. No-auth mode should be limited to intentionally public dashboards only. Align auth mode with environment tier and explicitly restrict access to administrative API surfaces.

⚙️

Grafana Auth Token

GRAFANA_AUTH_TOKEN
Credential

This token is the credential used for Grafana API or embed access when token auth mode is enabled. Prefer service-account tokens scoped to only required dashboards and APIs. Rotate tokens regularly and revoke immediately when leakage is suspected. Do not store them in frontend bundles, browser storage, or verbose logs. Monitor 401 and 403 failures against Grafana endpoints so expired or revoked tokens are detected quickly and do not silently break observability views.

⚙️

Grafana Base URL

GRAFANA_BASE_URL
Endpoint config

This is the canonical Grafana endpoint your app uses for links, API calls, and embedded dashboards. It must match deployment topology, including scheme, host, and any subpath behind reverse proxies. Misalignment between app base URL and Grafana root URL often causes broken embeds, redirect loops, or partial auth failures. Validate this value at startup and in health checks, especially across dev, staging, and production environments. Keep it environment-specific and versioned with infrastructure config so monitor links remain stable.

⚙️

Grafana Dashboard UID

GRAFANA_DASHBOARD_UID
Observability

GRAFANA_DASHBOARD_UID tells the app which Grafana dashboard to open as the default observability view. Use the dashboard UID, not the title slug, because UIDs stay stable across title edits and are the identifier used by Grafana APIs. In a RAG system, point this at a dashboard that tracks retrieval latency, top-k quality proxies, token usage, embedding throughput, and error rates so operators can diagnose regressions quickly. If this value is wrong or points to a dashboard the service account cannot read, users will land on an empty or error page even when Grafana is healthy. For multi-environment deployments, keep a distinct UID per environment and manage it as configuration, not hardcoded UI logic.

⚙️

Graph Max Hops

GRAPH_MAX_HOPS
Latency-Recall

GRAPH_MAX_HOPS caps traversal depth from each seed node in graph retrieval. One hop focuses on direct relationships, two hops often captures practical cross-file links, and larger values rapidly increase branching factor and latency. Higher hops can help for dependency-chain and architecture questions, but they also raise the chance of pulling weakly related evidence into the fusion stage. In most RAG/search deployments, this is one of the highest-impact latency controls because frontier size grows nonlinearly with graph degree. Tune with p95 latency and grounded answer metrics together, since deeper traversal can improve recall while reducing precision.

⚙️

Graph Weight

FUSION_GRAPH_WEIGHT
Fusion weighting

Sets the contribution of graph retrieval in weighted fusion relative to sparse and vector signals. Increase it when structural relationships such as calls, imports, and dependencies are essential to user tasks; decrease it when lexical or semantic similarity should dominate. Because weighted fusion blends heterogeneous score sources, calibration and normalization matter as much as the raw weight values. Track performance by query type to ensure graph-heavy tuning improves structural questions without hurting broad semantic retrieval.

⚙️

Graph Weight

GRAPH_WEIGHT
Fusion Tuning

GRAPH_WEIGHT sets the influence of graph-channel scores in hybrid or tri-brid fusion relative to dense and sparse channels. Higher values prioritize structural relationships such as call graphs, dependency chains, and shared entities, while lower values prioritize direct lexical and semantic relevance. This is a high-leverage setting because incorrect weighting can either bury useful structural evidence or over-promote loosely connected nodes. The best value is corpus- and query-dependent, so calibration should be done on representative workloads instead of one-off examples. If your evaluation mix includes both fact lookup and cross-file reasoning, consider a moderate default and query-aware adaptation.

⚙️

Greedy Fallback Target (Chars)

GREEDY_FALLBACK_TARGET
Chunking Fallback

GREEDY_FALLBACK_TARGET defines the approximate character size for fallback chunks when structured chunking fails, such as parse errors, malformed files, or oversized units that cannot be split semantically. It is a resilience control that keeps indexing and retrieval operational when ideal AST-aware segmentation is not possible. Smaller targets improve precision but can fragment meaning; larger targets preserve context but reduce retrieval granularity and increase prompt cost. Choose a value that aligns with your embedding model and downstream context budget, then validate on real failure cases instead of clean files only. Any change should be followed by reindexing so fallback boundaries are rebuilt consistently.

⚙️

GUI Theme

THEME_MODE

Controls the interface color system used by the app (`light`, `dark`, or `auto`). In `auto`, the UI should track OS/browser preference (`prefers-color-scheme`) and apply color tokens before first paint to avoid flash-of-incorrect-theme. This setting is not just aesthetic: it affects readability, contrast compliance, and operator fatigue during long debugging sessions. In production, pair theme switching with contrast checks so status badges, charts, and alert colors remain distinguishable in both modes.

⚙️

History Limit

CHAT_HISTORY_LIMIT
State management

Controls how many prior chat messages are retained for future turns. In a RAG workflow, this is effectively a memory window: too low and the assistant forgets constraints or decisions made earlier, too high and each request carries stale context that increases token usage, latency, and risk of instruction drift. A practical strategy is to keep enough turns to preserve active task state, then summarize or prune older exchanges. If your pipeline also injects retrieved chunks, remember that chat history and retrieval context compete for the same model context budget.

⚙️

HTTP Port

PORT
Requires restart

Defines the TCP port your HTTP service binds to when the Crucible backend starts. This parameter controls reachability from browsers, reverse proxies, health checks, and local tooling, so conflicts or misconfiguration can look like application failure even when the process is healthy. In production, this value should align with container port mappings, ingress rules, and firewall policy; in local development, it should avoid collisions with other common services. Any change here is operational, not just cosmetic: update deployment manifests and monitoring endpoints in the same change set to prevent silent outages.

⚙️

Hugging Face tokenizer name

TOKENIZATION_HF_TOKENIZER_NAME

Specifies the Hugging Face tokenizer implementation used when strategy is set to `huggingface` (for example, a model-specific BPE or SentencePiece tokenizer). The tokenizer should match the downstream embedding or generation model family; mismatches can skew token counts, split points, and truncation behavior. Pinning an explicit tokenizer name also improves reproducibility across environments and package updates. If this is wrong, chunk boundaries can drift even when text and chunk-size configs stay constant.

⚙️

Hydration Max Chars

HYDRATION_MAX_CHARS
Prompt Budget

HYDRATION_MAX_CHARS limits how much raw chunk text is loaded when turning retrieval hits into generation-ready context. This protects latency, memory, and prompt budgets from oversized chunks or unusually large files. A value that is too low can cut away critical lines and reduce answer grounding, while a value that is too high can bloat prompts and increase cost without better relevance. Tune this alongside chunk size, rerank depth, and model context window so each stage has a clear budget. Track truncation rate and citation failures to detect when the cap is suppressing necessary evidence.

⚙️

Hydration Mode

HYDRATION_MODE
Runtime Loading

HYDRATION_MODE controls when full chunk content is loaded into the retrieval pipeline. A lazy mode usually gives the best production balance because ranking can run on lightweight metadata first, and full text is fetched only for shortlisted results. A none mode is useful for retrieval diagnostics, fast metadata-only workflows, or systems where generation occurs in a separate step. Choosing the mode changes both latency profile and memory behavior, so it should be treated as an architectural runtime option rather than a cosmetic toggle. Align this setting with your reranker strategy and context assembly stage to avoid unnecessary data loading.

⚙️

Include Communities

GRAPH_INCLUDE_COMMUNITIES
Advanced Graph

GRAPH_INCLUDE_COMMUNITIES enables expansion across precomputed graph communities instead of only direct neighbors. This can surface related components that belong to the same subsystem even when explicit edges between the exact seed nodes are weak or missing. It is most useful for architecture, ownership, and impact-analysis questions where thematic grouping matters. The tradeoff is broader recall with higher risk of topic drift, so community expansion should usually be combined with conservative hop limits and robust reranking. Community quality depends heavily on graph construction and algorithm settings, so treat this as a quality-dependent feature flag rather than always-on behavior.

⚙️

Include Thinking in Stream

CHAT_STREAM_INCLUDE_THINKING
Advanced reasoning

When supported by the selected model, this streams intermediate reasoning content before the final answer. It can improve operator visibility during debugging and evaluation, especially when you need to understand why retrieved evidence was prioritized or ignored. The trade-offs are longer streams, higher token usage, and potential exposure of internal reasoning that may not be appropriate for all audiences. For production end-user chat, many teams keep this off by default and enable it for internal analysis, testing, or expert modes.

⚙️

Index delay (seconds)

chat.recall.index_delay_seconds

Debounce interval before a completed chat turn is sent to the Recall indexing job. A shorter delay makes newly discussed context retrievable sooner, while a longer delay reduces indexing churn during rapid back-and-forth exchanges or streaming-heavy sessions. Tune this value as a latency-throughput tradeoff: very low delays improve immediate memory availability but can increase write amplification and contention; higher delays smooth ingest workload but may cause users to reference details that are not indexed yet. Set it using real conversation cadence and ingestion capacity, not static defaults.

⚙️

Index max file size (MB)

INDEX_MAX_FILE_SIZE_MB
Stability guardrail

Sets a hard upper bound on file size for indexing to prevent memory spikes and long-tail ingestion delays caused by extremely large documents. In RAG pipelines this value protects indexing stability, but if set too low it can remove high-value sources such as architecture guides, policy manuals, or API bundles. Use corpus stats to choose a threshold, typically around the P95 or P99 file size, then special-case known large files with streaming or sectioned ingestion. This setting interacts with chunking strategy, parser behavior, and total token budget, so tune it alongside chunk size and overlap rather than in isolation. Periodic audits of skipped-file lists help avoid accidental knowledge gaps.

⚙️

Index Max Workers

INDEX_MAX_WORKERS
Capacity control

Defines the upper concurrency cap the indexer may use, which is useful when runtime logic auto-scales workers based on machine load or queue depth. In practice this cap should reflect total host capacity and external service quotas, not just raw CPU count. If you set it too high, embedding APIs can throttle and local contention can degrade throughput; if too low, expensive hardware remains underutilized and indexing windows get longer. Keep this value consistent with container CPU limits and thread pool defaults to avoid hidden mismatches. Validate by measuring throughput at multiple caps and selecting the smallest value that achieves near-peak performance.

⚙️

Index Profiles

INDEX_PROFILES
Preset workflows

Provides named presets that bundle multiple indexing and retrieval parameters into reproducible operating modes such as fast lexical-only, balanced hybrid, or full-quality dense pipelines. Profiles reduce configuration drift by ensuring teams do not manually toggle dozens of knobs per run. In RAG operations, this improves experiment comparability, rollback safety, and onboarding because each profile encodes an intentional quality-latency-cost tradeoff. Treat profiles as versioned artifacts and document when their defaults change, especially for chunking, embedding model, reranker, and validation strictness. A disciplined profile strategy usually outperforms ad hoc per-run tuning.

⚙️

Index Readiness

DASHBOARD_INDEX_PANEL
Observability

Operational panel that surfaces live index-readiness signals such as embedding configuration, index size trajectory, and estimated indexing cost from backend status endpoints. In a RAG system this view is not cosmetic: it is where you catch drift between configured embedding model/dimension and the actual index state before retrieval quality degrades. Frequent refresh is useful during reindexing because index freshness, storage growth, and backend health can change quickly. Treat this panel as the control plane for deciding when an index is safe to serve.

⚙️

Indexing Batch Size

INDEXING_BATCH_SIZE
Throughput

INDEXING_BATCH_SIZE sets how many chunks or records are processed together per indexing step, affecting throughput, memory pressure, and failure blast radius. Larger batches generally improve GPU and network utilization for embeddings and vector upserts, but they also increase peak memory and make retries more expensive. Smaller batches are slower but more resilient when providers rate-limit, vector stores throttle writes, or occasional malformed records appear. The best value depends on embedding latency, vector DB ingest speed, and available RAM, so it should be tuned with real pipeline telemetry. Start conservatively, then increase until throughput gains flatten or error rates begin rising.

⚙️

Indexing Logs Terminal

INDEX_LOGS_TERMINAL
Observability

Streams raw indexer logs for the current run so you can inspect stage-by-stage behavior rather than relying on summarized status text. This is where you confirm practical details that affect retrieval quality and latency, including parser fallbacks, chunk counts, dense-index skips, provider throttling, and retry/backoff behavior. For debugging, logs should be structured enough to correlate errors to repository, file path, and job id. For operations, logs should expose timing and failure-rate signals so bad settings are visible early instead of after poor search results are reported. Treat this panel as an observability surface, not just a console output viewer.

⚙️

Indexing Process

INDEXING_PROCESS
Index Pipeline

INDEXING_PROCESS describes the ordered pipeline that prepares documents for search and generation, typically including parsing, chunking, sparse indexing, embedding generation, and vector or graph writes. Understanding this flow is important because each stage introduces constraints that affect retrieval quality and operational cost. For example, weak chunk boundaries reduce both sparse and dense retrieval quality, and poor metadata propagation limits downstream filtering and reranking. Re-running indexing after major corpus or configuration changes keeps retrieval aligned with current source truth. Production systems should treat indexing as a monitored batch workflow with explicit success criteria, not a one-time setup task.

⚙️

Indexing Workers

INDEXING_WORKERS
Throughput tuning

Controls how many parallel workers execute indexing stages such as parsing, chunking, sparse indexing, and embedding preparation. In RAG systems this is a throughput lever, but only up to the point where CPU cores, memory bandwidth, disk I/O, or embedding-provider rate limits become the bottleneck. A practical baseline is physical cores minus one or two so interactive tasks and background services still have headroom. If this value is set too high, context switching, queue contention, and retry pressure can increase total wall-clock time rather than reduce it. Tune with real run metrics, especially files-per-second, average chunk latency, and failed-task retries.

⚙️

Inline File References

CHAT_SHOW_CITATIONS
Trust

Controls whether answers include explicit source attributions, such as file paths, snippets, or line references. In RAG, citations are critical for trust and debugging because they let users verify that claims are grounded in retrieved evidence rather than model guesswork. Enabling citations typically improves operator confidence and shortens investigation time when answers are wrong. The trade-off is extra response verbosity and minor UI complexity, but for technical and high-stakes workflows citations should usually remain on.

⚙️

Intent Matrix (Advanced)

LAYER_INTENT_MATRIX
Intent policy

Advanced mapping that applies different layer weights per detected intent, effectively creating a policy table for architectural routing in retrieval. Instead of one global bonus, you can express rules like boosting frontend for UI intents, boosting services for API intents, and damping unrelated layers to reduce noise. This matrix is powerful but easy to overfit, so values should be tuned with offline eval sets that represent your real question mix and reviewed whenever repository structure changes. Treat it as a ranking policy artifact: version it, test it, and roll it out with the same discipline as model or index updates.

⚙️

Keywords Boost

KEYWORDS_BOOST
Ranking weight

Applies a multiplicative weight when documents match configured corpus keywords, allowing lexical intent signals to influence ranking beyond base retrieval scores. This is useful when user phrasing closely matches repo terminology, but aggressive boosting can overwhelm semantic relevance and reduce answer diversity. Calibrate with offline relevance evaluation so boosted ranking improves precision without collapsing recall. In hybrid retrieval, keyword boost should be tuned alongside BM25 parameters and dense fusion weights, not independently. Start conservative and increase only when you have evidence that keyword hits are consistently high-value.

⚙️

Keywords Min Frequency

KEYWORDS_MIN_FREQ
Noise filter

Sets the minimum corpus frequency a term must reach before it is eligible as a stored keyword. This acts as a denoising threshold that removes one-off tokens, typos, and low-signal identifiers from routing logic. A low threshold improves recall of niche concepts but can increase noise; a high threshold improves precision but can suppress critical rare terms like subsystem names or protocol identifiers. Optimal values depend on corpus scale and update velocity, so tune against validation queries rather than intuition. Many teams pair this threshold with exception rules for known high-value rare terms.

⚙️

Keywords Refresh (Hours)

KEYWORDS_REFRESH_HOURS
Freshness cadence

Controls how often automatic keyword extraction is recomputed from current repository content. Short refresh intervals keep routing aligned with active development, while long intervals reduce compute load and ranking churn. In practice, this should track code-change velocity: fast-moving repos benefit from daily or sub-daily refreshes, while stable repos can refresh weekly. Too-frequent refresh can destabilize relevance if term statistics swing sharply between runs, so pair cadence tuning with quality monitoring. Incremental or diff-aware refresh pipelines usually deliver better freshness-cost balance than full rebuilds.

⚙️

LangChain Endpoint

LANGCHAIN_ENDPOINT
Telemetry routing

Specifies the base URL where LangSmith trace payloads are sent. This is critical in enterprise setups that route telemetry through regional gateways, private networks, or controlled egress proxies. Endpoint and key must match the same deployment; otherwise you can see authentication failures, timeouts, or fragmented projects across environments. Validate endpoint reachability with health checks before enabling full tracing volume in production. Keeping endpoint configuration explicit per environment reduces surprise during incident response and migration.

⚙️

LangChain Legacy

LANGCHAIN_LEGACY
Deprecated path

Marks an older tracing variable path that should be considered deprecated in modern LangSmith setups. Legacy env conventions tend to fragment observability because runs get split across inconsistent metadata or project naming schemes. Migration should explicitly prioritize LANGCHAIN_TRACING_V2 and LANGCHAIN_PROJECT with clear precedence rules so behavior is deterministic during rollout. Keep temporary backward compatibility only long enough to drain old deployments, then remove the legacy path to prevent regressions. Deprecation tracking is part of observability reliability, not only code cleanup.

⚙️

LangChain Project

LANGCHAIN_PROJECT
Namespace hygiene

Defines the project namespace under which traces are grouped in LangSmith dashboards and analytics. For RAG systems, stable project naming is essential for comparing retrieval quality, latency, and failure patterns across environments like dev, staging, and prod. Frequent renaming fragments trend history and makes incident forensics harder because related runs are no longer co-located. Use a predictable naming convention that encodes environment and service boundary without excessive granularity. Good project hygiene turns traces into operational evidence rather than isolated run logs.

⚙️

LangChain Tracing

LANGCHAIN_TRACING_V2
Tracing pipeline

Enables the modern LangSmith tracing path that captures structured run trees for model calls, tools, retrievers, and chain steps. In RAG pipelines this visibility is essential for understanding where latency and quality degrade, especially when retrieval and generation are orchestrated through multiple components. Turning tracing on without controls can add overhead, so production setups often apply sampling and metadata policies. Before exporting traces externally, ensure prompt and document payload redaction aligns with data governance requirements. Treat this switch as operational instrumentation, not just a debugging toggle.

⚙️

LangTrace API Host

LANGTRACE_API_HOST
Trace routing

Base endpoint for Langtrace ingestion and control APIs. This setting determines where traces from retrieval, reranking, and generation are delivered, so it effectively controls data residency, network path, and tenant routing for observability. Use an explicit host per environment and verify protocol, TLS, and region alignment before enabling high-volume tracing, especially when moving between cloud and self-hosted collectors. Host/key/project mismatches are a common cause of silent trace loss, so validate this alongside credentials during rollout.

⚙️

LangTrace Project ID

LANGTRACE_PROJECT_ID
Project scoping

Logical project namespace used by Langtrace to partition telemetry from different applications or environments. In practice, it is the boundary that keeps retrieval experiments, reranker tuning runs, and production traffic from mixing in the same dashboard and skewing metrics. Assign stable project IDs per environment and per major product surface so trace analytics remain comparable over time and access controls stay clean. If this is mis-set, traces may appear to vanish when they are actually being written to a different project bucket.

⚙️

Large file mode

LARGE_FILE_MODE
Ingestion strategy

Controls how very large files are ingested before chunking and indexing. `stream` mode processes bounded segments incrementally, which keeps memory predictable and enables indexing of large corpora without loading full files at once; `read_all` is simpler but can create memory spikes and slower recovery when parsing fails mid-file. For production RAG pipelines, stream mode is usually safer because it keeps ingestion throughput stable under heterogeneous file sizes. Choose mode together with chunk size and overlap policy, since ingestion strategy directly affects chunk coherence, retrieval recall, and downstream reranker quality.

⚙️

Large file stream chunk chars

LARGE_FILE_STREAM_CHUNK_CHARS
Stream chunking

Defines the character window read per streaming pass when large-file ingestion runs in `stream` mode. Smaller windows lower peak memory but increase boundary fragmentation, which can split function bodies or semantic units and hurt retrieval precision; larger windows improve local coherence but raise RAM pressure and processing latency per pass. Tune this against your typical document structure, tokenizer behavior, and overlap settings so chunk boundaries align with meaningful units instead of arbitrary offsets. A practical workflow is to benchmark retrieval hit quality at several chunk sizes and select the smallest value that preserves answer-bearing context continuity.

⚙️

Latency P99 Threshold (s)

LATENCY_P99_THRESHOLD
Reliability SLO

Alert threshold for the 99th-percentile request latency, used to detect tail-performance regressions that average latency hides. In RAG applications, p99 is often where user-visible failures emerge first because retries, slow vector index paths, and long model generations accumulate in the slowest slice of traffic. Set this threshold from SLO targets and real traffic baselines, then pair it with minimum sample volume to avoid noisy alerts during low-traffic periods. A well-calibrated p99 threshold improves release safety for retrieval and model changes by surfacing degradation quickly without overwhelming on-call responders.

⚙️

Layer Bonus (GUI)

LAYER_BONUS_GUI
Intent-layer routing

Score bias applied to chunks from frontend-oriented layers when query intent indicates UI behavior, navigation, or interaction logic. This helps a codebase RAG system rank components, views, and client-side state flows above backend internals when users ask interface-centric questions. Keep the bonus strong enough to overcome weak lexical overlap but not so strong that it suppresses semantically better backend evidence for mixed queries. The right setting is usually measured by evaluating intent-segmented query sets and checking whether UI questions improve without degrading cross-layer tasks.

⚙️

Layer Bonus (Indexer)

LAYER_BONUS_INDEXER

`LAYER_BONUS_INDEXER` is a structural ranking bias that boosts retrieval scores for artifacts mapped to indexing/ingestion layers before finer intent-matrix adjustments are applied. With the default `0.15` (range `0.0`-`0.5`), it helps prevent indexer-relevant files from being outscored by semantically similar but architecturally unrelated modules. Raising it increases recall for index pipeline troubleshooting and ingestion-change questions, but excessive values can over-prioritize indexer paths and reduce precision on mixed-intent queries. Tune this value together with other layer bonuses and evaluate with labeled queries that intentionally cross subsystem boundaries.

⚙️

Light for short questions

chat.recall_gate.light_for_short_questions

Enables lightweight memory retrieval for short, follow-up style questions that often depend on immediate prior context. Short prompts are frequently high-ambiguity in collaborative sessions, so a light recall pass can recover the missing referent without paying deep retrieval cost. This option is especially useful when users ask terse continuations like constraints, tradeoff checks, or implementation deltas. Disable it only if your environment heavily penalizes extra retrieval calls and most short questions are truly standalone, because otherwise you will see avoidable context drops.

⚙️

Light top_k

chat.recall_gate.light_top_k

Sets how many snippets are retrieved in light mode. Light retrieval is designed as a minimal disambiguation pass, so this value should stay small enough to preserve speed and context hygiene while still catching the most likely antecedents. If light mode often misses the relevant prior decision, increase this gradually before changing gate logic. If responses start showing irrelevant memory bleed, reduce it and rely on standard/deep paths for heavier context needs. In practice, this parameter works best when tuned against real short-follow-up traffic rather than synthetic prompts.

⚙️

Load History on Startup

CHAT_HISTORY_LOAD_ON_START
Startup UX

Determines whether previously saved conversations are loaded immediately when the chat UI opens. Enabling this improves continuity for multi-session debugging and long-running RAG investigations, but it can increase startup time and expose prior context that may no longer be relevant to the current retrieval task. Disabling it gives a clean session by default and reduces accidental carry-over of old assumptions. For large histories, a hybrid approach works well: load recent threads first and lazy-load older records on demand.

⚙️

Log Level

LOG_LEVEL

Controls runtime verbosity for diagnostics, operational visibility, and incident response. `DEBUG` is best for short-lived debugging sessions where per-step details matter; `INFO` is the stable default for normal operation; `WARNING` and `ERROR` reduce noise when you only need actionable signals. Excessive debug logging can materially impact latency and storage cost, and can also increase risk of sensitive payload exposure if message templates are not scrubbed. Production-safe practice is to run at INFO/WARNING and temporarily raise verbosity during scoped investigations.

⚙️

Markdown include code fences

MARKDOWN_INCLUDE_CODE_FENCES

Determines whether fenced code blocks are retained inside markdown chunks during indexing and retrieval. Enabling this is usually correct for technical corpora because code fences carry high-value implementation detail, API usage patterns, and exact syntax that dense-only prose chunks may lose. Disabling can help in prose-focused corpora where large fenced blocks dominate token budget and drown section-level semantics. Treat this as a retrieval-precision decision: include fences for code reasoning and troubleshooting, exclude when summarization quality on narrative text is the priority.

⚙️

Markdown max heading level

MARKDOWN_MAX_HEADING_LEVEL

Sets the deepest heading level that creates chunk boundaries when parsing markdown (`#` through `######`). Lower values create larger, more context-rich chunks that preserve section continuity, while higher values create finer-grained chunks that can improve pinpoint retrieval but may fragment evidence across many small nodes. In documentation-heavy repositories, a middle range typically balances recall and precision by respecting meaningful section hierarchy without over-splitting subheadings. Tune with query logs: if answers miss detail, increase granularity; if answers lose narrative context, reduce granularity.

⚙️

Max Chunk Summaries

CHUNK_SUMMARIES_MAX
Coverage budget

Caps how many chunk summaries are produced for a corpus. This is a budget control over indexing cost, storage footprint, and retrieval metadata coverage. A low cap is fast but can miss important modules, while a high cap improves coverage and long-tail recall at the cost of longer ingestion and larger indexes. Choose this value based on corpus size and criticality, then validate with retrieval benchmarks so the limit reflects actual answer quality rather than arbitrary round numbers.

⚙️

Max Chunk Tokens

MAX_CHUNK_TOKENS
Advanced chunkingRequires reindex

Maximum token length for a single code chunk during AST-based chunking. Limits chunk size to fit within embedding model token limits (typically 512-8192 tokens). Larger chunks (1000-2000 tokens) capture more context per chunk, reducing fragmentation of large functions/classes. Smaller chunks (200-512 tokens) create more granular units, improving precision but potentially losing broader context. Sweet spot: 512-768 tokens for balanced chunking. This fits most embedding models (e.g., OpenAI text-embedding-3 supports up to 8191 tokens, but 512-768 is practical). Use 768-1024 for code with large docstrings or complex classes where context matters. Use 256-512 for tight memory budgets or when targeting very specific code snippets. AST chunking respects syntax, so chunks won't split mid-function even if size limit is hit (falls back to greedy chunking). Token count is approximate (based on whitespace heuristics, not exact tokenization). Actual embedding input may vary slightly. If a logical unit (function, class) exceeds MAX_CHUNK_TOKENS, the chunker splits it using GREEDY_FALLBACK_TARGET for sub-chunking while preserving structure where possible. • Range: 200-2000 tokens (typical) • Small: 256-512 tokens (precision, tight memory) • Balanced: 512-768 tokens (recommended, fits most models) • Large: 768-1024 tokens (more context, larger functions) • Very large: 1024-2000 tokens (maximum context, risky for some models) • Constraint: Must not exceed embedding model token limit

⚙️

Max chunks per file

MAX_CHUNKS_PER_FILE

Caps how many chunks from a single file can appear in the final retrieved set. This prevents oversized or repetitive files from monopolizing top-k results and improves cross-file evidence coverage, which is critical when answers require synthesis across modules, services, or docs. If set too low, deep single-file debugging may lose needed local context; if set too high, retrieval diversity collapses and answers may overfit one source. Tune this jointly with reranking and MMR-style diversification so relevance and breadth remain balanced.

⚙️

Max Hops

MAX_HOPS

Limits traversal depth in graph-based retrieval so queries do not expand indefinitely across weakly related nodes. Hop 1 generally captures direct dependencies; hop 2 adds near-neighbor context; larger values can surface long-range relationships but typically increase latency, memory pressure, and semantic drift. In dense graphs, even one extra hop can multiply candidate volume, so higher values should be paired with aggressive reranking or path filtering. Choose the smallest hop depth that still captures the relationship patterns your questions require.

⚙️

Max Indexable File Size

MAX_INDEXABLE_FILE_SIZE
File filteringRequires reindex

Defines the byte-size cutoff above which files are excluded from indexing. This protects index jobs from pathological memory and token consumption on massive generated assets, archives, or dumps, and keeps indexing latency predictable. If this value is too low, important large source artifacts (for example long SQL, generated API clients, or monolithic configs) may never become retrievable. If too high, indexing throughput can collapse and storage cost can spike. Set this using observed file-size distribution, then reindex so the new threshold is applied consistently.

⚙️

Max Response Tokens (Chat)

CHAT_MAX_TOKENS
Cost & latency

Sets an upper bound on how many tokens the model may generate for the final answer. In practice, this is a hard cost and latency governor: higher values allow fuller explanations, while lower values force concise outputs and faster completion. In RAG systems, this setting should be tuned alongside retrieval depth and context length, because long retrieved evidence plus a large response budget can exceed practical latency targets. For production QA, start with a moderate cap, then raise it only for tasks that demonstrably need long-form synthesis.

⚙️

Max short-statement tokens

chat.recall_gate.skip_max_tokens

Upper token/word threshold used to classify very short statements for skip-or-light handling. This parameter shapes how aggressively the gate treats terse messages as low-information chatter versus potentially context-dependent directives. Lower values reduce retrieval cost but can miss important short commands; higher values recover more implicit follow-ups but increase retrieval frequency and noise risk. Tune against real conversation traces and inspect classification outcomes in signal/debug views, because the right threshold depends heavily on how your users phrase approvals, pivots, and micro-instructions.

⚙️

Max Tokens

GEN_MAX_TOKENS
Cost and latency

This is the upper bound on generated output length per request. In RAG, it directly controls cost and latency, but also determines whether answers can include full reasoning, citations, and edge-case handling without truncation. Set defaults by task class instead of one global value, then enforce stricter caps on interactive channels to protect tail latency. Pair this with context packing and answer format constraints so tokens are spent on grounded content rather than repetition. Monitor both truncation frequency and response quality, because either metric alone can hide a bad token budget.

⚙️

Max tokens (response limit)

chat.max_tokens

Hard upper bound on tokens the assistant may generate for one response. When the model hits this limit, generation stops even if the answer is incomplete, so this setting directly controls truncation risk for long-form outputs. Use higher values for synthesis-heavy tasks (plans, audits, code explanations) and lower values for short interactive turns to control latency and cost. Calibrate alongside context-window usage and prompt length, because larger prompts reduce remaining budget for output on providers that enforce combined constraints.

⚙️

Max tokens per chunk (hard)

TOKENIZATION_MAX_TOKENS_PER_CHUNK_HARD

Absolute upper bound on per-chunk token count after all splitting logic. If a chunk still exceeds this cap, it must be split again or truncated, preventing oversized payloads from breaking embedding/model limits. Set this above your normal target chunk size but below the strictest model context boundary in your stack. This parameter is a safety guardrail, and it should be tuned with overlap and splitter strategy to avoid accidental semantic fragmentation.

⚙️

Min Chunk Chars

MIN_CHUNK_CHARS
Index quality controlRequires reindex

Lower bound on chunk length kept during indexing. Chunks smaller than this threshold are typically merged or discarded to reduce retrieval noise from trivial fragments (isolated braces, tiny comments, short tokens). Setting it too low increases index clutter and false positives; setting it too high can remove short but meaningful facts (config flags, function signatures, one-line constraints). Tune this jointly with chunk size and overlap using real queries: track recall impact on terse lookups while watching precision and index growth.

⚙️

Min score (graph)

MIN_SCORE_GRAPH

Minimum graph-retrieval score required for a graph candidate to enter fusion/reranking. This threshold is a precision gate: raise it to suppress weak neighbors and spurious hops, lower it when relationship-driven queries are under-retrieving. Because graph score scales vary by implementation, calibrate against score histograms and judged examples instead of copying a fixed number between datasets. In practice, this parameter is most effective when tuned alongside graph hop depth and graph weight, so recall loss from filtering can be offset by better traversal settings.

⚙️

Min score (sparse)

MIN_SCORE_SPARSE

Minimum sparse-retrieval score (BM25/keyword leg) required before fusion. This controls how much lexical evidence is needed for a candidate to survive into final ranking. Raising the threshold improves precision by cutting low-signal term overlap; lowering it improves recall for partial wording and long-tail vocabulary. Because sparse scores are engine-specific, tune on your own relevance set and monitor both hit quality and zero-result rate. This threshold should be coordinated with sparse weight and tokenizer choices so filtering does not neutralize the sparse leg entirely.

⚙️

Min score (vector)

MIN_SCORE_VECTOR

Minimum score for dense retrieval gates out semantically weak neighbors before they reach fusion and reranking. In practice, this parameter is your first defense against embedding drift: ambiguous queries can pull near-random vectors unless a floor is enforced. Tune it against labeled queries by measuring recall@k and false-positive rate together, because raising the floor improves precision but can suppress valid long-tail matches. Use the threshold jointly with chunk size and reranker settings so you do not over-prune before higher-quality ranking stages can recover context.

⚙️

MMR lambda (λ)

MMR_LAMBDA

MMR lambda controls how much your retriever prioritizes raw relevance versus novelty across selected chunks. Values near 1.0 behave like pure similarity ranking and often return near-duplicates; lower values force more topical spread, which helps multi-facet questions and reduces redundant context. Treat lambda as a coupled parameter with top-k and reranker depth, because aggressive diversification with small candidate pools can lower answer grounding. For production tuning, track duplicate-rate, answer completeness, and p95 latency together rather than optimizing one metric in isolation.

⚙️

Multi‑Query Rewrites

MQ_REWRITES
Affects latencyHigher cost

Multi-query rewrites control how many alternate phrasings are generated before retrieval. Each additional rewrite can improve recall for underspecified queries, but it multiplies retrieval and reranking load, so latency and cost increase roughly with rewrite count. The practical strategy is to keep rewrites low by default (for example 2-3), then raise only for question classes that empirically benefit from expansion. Pair this with duplicate suppression and query-intent logging so expanded branches add new evidence instead of repeating the same documents.

⚙️

Neighbor window

NEIGHBOR_WINDOW

Neighbor window expands each top hit by pulling adjacent chunks using chunk order metadata. This helps when meaning spans boundaries (code blocks, list continuations, multi-paragraph explanations) and reduces brittle answers based on truncated snippets. The tradeoff is context bloat: larger windows increase token usage and can reintroduce boilerplate noise, especially in repetitive files. Tune this after chunking is stable, and evaluate grounded-answer rate plus prompt token growth to find the smallest window that restores continuity.

⚙️

Neo4j Auto-Create Databases

neo4j_auto_create_databases
Enterprise

When enabled in Enterprise multi-database deployments, missing per-corpus databases are created automatically during corpus provisioning. This reduces setup friction but shifts responsibility to strict naming rules, quota controls, and privilege boundaries. In production, auto-create should be paired with role-scoped credentials and explicit lifecycle policies so temporary corpora do not accumulate into unmanaged state. Also define failure behavior: if creation fails due to permissions or cluster health, ingestion should surface a clear operational error instead of silently falling back to shared storage assumptions. Use this setting when tenant isolation matters and platform automation can reliably manage database creation, monitoring, and cleanup.

⚙️

Neo4j Connection URI

NEO4J_URI

Neo4j URI config determines how clients connect, route, and secure graph queries in retrieval workflows. Use `neo4j://` for routed cluster-aware connections and `bolt://` for direct connections when routing is not needed. Misconfigured schemes can produce subtle behavior differences in failover, read routing, and TLS handling that only appear under load. Treat this value as infrastructure configuration: validate connectivity at startup, enforce encrypted transport in shared environments, and keep URI/auth settings externalized from source code.

⚙️

Neo4j Connection URI

neo4j_uri
Core Setting

This URI defines how the application reaches Neo4j and whether routing and encryption are used (`bolt`, `neo4j`, `bolt+s`, `bolt+ssc`, etc.). It is not a cosmetic setting: the scheme controls TLS behavior and, in clustered deployments, routing-aware connection semantics. Use explicit hostnames and production-safe schemes, then validate handshake behavior from the runtime environment where the app actually executes. If latency or connectivity issues appear, inspect connector settings and DNS/network boundaries before changing query logic. Keep URI, credentials, and database mode changes coordinated, because mismatched connection targets can look like data or permission bugs when the root cause is transport configuration.

⚙️

Neo4j Database Mode

neo4j_database_mode
Enterprise

This switch chooses the isolation model: shared database with logical filtering, or per-corpus physical separation. Shared mode is operationally simpler and Community-friendly, but its safety depends on consistently correct filters in every query path. Per-corpus mode improves blast-radius containment, access segmentation, and maintenance flexibility (backup, restore, lifecycle by corpus), but needs Enterprise features plus database provisioning automation. Choose based on tenant boundaries, compliance requirements, and operational maturity. If changing modes after deployment, treat it as a migration project with validation of query parity, index coverage, and rollback strategy, since mode changes can alter both performance characteristics and failure domains.

⚙️

Neo4j Database Name

neo4j_database
Shared Mode

This is the database name used in shared mode, where all corpora write into one Neo4j database and isolation is enforced at query level (for example via corpus identifiers and labels). Shared mode simplifies operations for Community-compatible setups and small deployments, but it concentrates workload and increases the importance of strict filtering correctness. Use stable naming, pin this value in environment configuration, and verify every read/write path includes tenant-scoping predicates. If you later migrate to per-corpus databases, treat the current shared name as a migration source and plan for data copy or dual-write periods to avoid mixed visibility during cutover.

⚙️

Neo4j Database Prefix

neo4j_database_prefix
Per-corpus Mode

In per-corpus mode, this prefix is prepended to sanitized corpus identifiers to generate physical Neo4j database names. A stable prefix prevents naming collisions and makes fleet operations easier (monitoring filters, backup targeting, retention tooling). Keep it short, lowercase, and environment-specific when needed (for example prod vs staging) so operational scripts can scope safely. Changing the prefix after data exists is effectively a rename/migration event, because existing databases retain old names until explicitly moved. Plan prefix strategy early and pair it with naming validation to avoid runtime creation failures from unsupported characters or length constraints.

⚙️

Neo4j Password

neo4j_password
Security

This credential is required for authenticated Neo4j access and should never be hardcoded in app settings, client bundles, or repository-tracked config files. Load it from environment or a secret manager, rotate it on a schedule, and scope the corresponding user to minimum privileges needed by the application path. For multi-database setups, privilege boundaries should map to the chosen isolation model (shared vs per-corpus) so a leaked credential cannot traverse unrelated data. Also pair password policy with transport security (TLS-enabled Bolt schemes and connector configuration), because secure credentials without encrypted transport still expose risk in transit.

⚙️

Neo4j Username

neo4j_user
Security

Neo4j username used by the driver when opening Bolt sessions to the graph database. In production, map this to a least-privilege account with only the read/write capabilities your retrieval or indexing flow actually needs, and rotate credentials on the same cadence as other service secrets. If SSO or external identity is enabled, this value still matters for fallback flows and migration windows; mismatches typically fail at connection time before any query logic runs. For multi-database setups, align this username with explicit per-database role grants so graph lookups succeed without over-privileging schema operations.

⚙️

Netlify Domains

NETLIFY_DOMAINS

Netlify domains should be treated as an explicit deployment target allowlist, not just display metadata. In automated deploy tooling, this parameter reduces misrouting risk by constraining which sites can receive publish actions. Include canonical and alias domains intentionally, and validate that each domain maps to the correct site before enabling unattended release jobs. Keep this list synchronized with DNS and ownership changes so stale entries do not become hidden failure points during release windows.

⚙️

Normalize Scores

FUSION_NORMALIZE_SCORES
Fusion tuning

In weighted fusion, vector similarity, BM25 relevance, and graph traversal scores usually exist on different numeric scales. This setting rescales them before combination so each retriever contributes based on relevance rather than raw magnitude. Keep normalization enabled when using weighted fusion, because otherwise one modality can dominate final ranking even with balanced weights. For rank-only fusion like RRF, normalization is usually unnecessary because only positions matter. If tuning weights does not change top results much, inspect score distributions first; poor normalization is often the real issue.

⚙️

Overlap tokens

OVERLAP_TOKENS

Number of tokens duplicated between adjacent chunks in token-based splitting. Overlap reduces boundary-loss errors by carrying local context forward, which usually improves retrieval for code blocks, parameter lists, and cross-sentence references. The tradeoff is index bloat, slower ingestion, and more near-duplicate candidates at query time. Tune this alongside chunk size and reranker settings: too little overlap hurts recall on boundary-heavy corpora, too much overlap burns storage/latency for marginal gain.

⚙️

Parquet Extract Max Cell Chars

PARQUET_EXTRACT_MAX_CELL_CHARS

Upper bound for characters extracted from any single Parquet cell before truncation. This prevents rare long values (JSON blobs, stack traces, raw HTML, encoded payloads) from dominating chunk budgets and crowding out other rows. A low cap improves throughput and keeps chunks balanced, but may clip high-value context in long descriptive fields. Choose a cap that protects indexing stability while preserving enough per-cell signal for your query patterns.

⚙️

Parquet Extract Max Chars

PARQUET_EXTRACT_MAX_CHARS

Global character budget for text extracted from one Parquet file during indexing. Once this threshold is reached, extraction stops (best effort), giving predictable upper bounds on memory, ingestion time, and index growth. This setting is critical for very large tables where full-file extraction is unnecessary or too expensive. Pair it with row limits and cell caps so your truncation strategy is intentional rather than accidental.

⚙️

Parquet Extract Max Rows

PARQUET_EXTRACT_MAX_ROWS

Best-effort cap on the number of rows read from a Parquet file during extraction. It is a coarse but effective control for ingestion cost when a dataset is too large to fully materialize into text. Higher values improve coverage and long-tail recall, while lower values reduce indexing time and memory pressure. If row order is meaningful (for example, temporal logs), this cap also determines which slice of data becomes searchable first.

⚙️

Parquet Include Column Names

PARQUET_EXTRACT_INCLUDE_COLUMN_NAMES

When enabled, column headers are injected into extracted Parquet text so retrieval can align values with field semantics (for example, distinguishing `price` from `discount_price`). This generally improves schema-aware search and downstream answer grounding, especially for wide analytical tables. The downside is extra tokens and potentially noisier chunks if column names are verbose or system-generated. Keep this on by default for mixed tabular + natural-language corpora, then validate index size impact on large datasets.

⚙️

Parquet Text Columns Only

PARQUET_EXTRACT_TEXT_COLUMNS_ONLY

Controls whether the Parquet ingestion path indexes only text-like columns (strings, long text blobs, comments, descriptions) instead of every column in the table. Keeping this enabled usually improves retrieval quality because numeric IDs, sparse codes, and high-cardinality counters often add noise without helping semantic recall. For mixed analytics datasets, this setting is a cost and relevance lever: you reduce token volume, embedding spend, and index size while preserving the fields that actually answer natural-language questions. Disable it only when numeric or categorical columns are first-class search targets and you have evaluation evidence that broader indexing improves recall more than it harms precision.

⚙️

Path Boosts

PATH_BOOSTS

Adds deterministic ranking bonuses for files whose paths match configured prefixes (for example `/api`, `/retrieval`, or `/infra`). This is not a filter; candidates outside boosted paths can still win, but matching paths start with an intentional prior that reflects project structure and ownership patterns. In practice, path boosts are most useful when repositories contain large amounts of generated code, vendor trees, or historical directories that are semantically similar but operationally lower value. Tune this with offline evaluation and query logs: too much boost can hide genuinely relevant files, while too little leaves high-signal code regions under-ranked.

⚙️

Path Component Partial Match Multiplier

FILENAME_BOOST_PARTIAL
Lexical recall boost

Applies a weaker multiplier for partial path or filename matches, helping fragment queries like auth or billing surface relevant areas of the codebase. Because substring matches are noisier than exact matches, this value should stay below exact filename boost and be tested against false-positive-heavy queries. Token boundary handling and minimum match length are important to avoid boosting accidental overlaps. This parameter is most effective when combined with semantic and sparse retrieval rather than used alone.

⚙️

PostgreSQL pgvector URL

POSTGRES_URL

Connection DSN used to reach PostgreSQL for relational storage and pgvector-backed similarity retrieval. This single string determines host, port, database, credentials, SSL behavior, and optional connection parameters, so parsing mistakes or stale credentials can break indexing and retrieval simultaneously. Keep secrets out of committed config and inject this value at runtime via environment management; then validate connectivity and extension availability (`pgvector`) during startup checks. If you operate multiple environments, treat DSN changes as deploy-time infrastructure changes with explicit migration and rollback plans.

⚙️

Presence Penalty

PRESENCE_PENALTY
Encourage noveltyRisk: drift

Sampling-time control that penalizes tokens once they have already appeared, nudging generation toward novelty instead of repetition. In retrieval-grounded workflows, this is a tradeoff knob: a small penalty can reduce repetitive phrasing, but a high penalty can push the model to introduce unsupported wording and weaken faithfulness to retrieved evidence. Tune it with grounded-answer evaluations rather than pure style preference, and watch citation alignment when increasing novelty controls. Keep this near neutral for strict extraction tasks and raise gradually for brainstorming or multi-perspective drafting.

⚙️

Preserve Imports

PRESERVE_IMPORTS
Dependency trackingRequires reindex

Forces the indexer to retain import/require/use statements even when chunks are otherwise below minimum size thresholds. This improves dependency-oriented retrieval, such as 'where is X imported' or 'which modules depend on Y', because import edges often encode architecture intent that function bodies alone miss. The tradeoff is slightly larger index size and potential noise if import blocks are highly repetitive across generated files. Keep it enabled when dependency tracing is a core use case, and pair it with deduplication or path-level weighting to avoid over-indexing boilerplate.

⚙️

Prometheus Port

PROMETHEUS_PORT

Port used to expose the metrics endpoint that Prometheus scrapes (typically `/metrics`). If this value is wrong, observability breaks quietly: the application can be healthy while dashboards, alerts, and SLO calculations go blind. Configure it together with scrape jobs, network policy, and service discovery labels so monitoring remains consistent across environments. In production, validate this by checking target health in Prometheus and ensuring metric cardinality and scrape intervals match system load.

⚙️

RAGWELD_AGENT_BACKEND

RAGWELD_AGENT_BACKEND

Chooses the runtime stack used to train and evaluate the agent model (for example, a Transformers/TRL pipeline with DeepSpeed, or another backend with different distributed semantics). This setting controls how batches are scheduled, how optimizer state is sharded, how mixed precision is handled, and what checkpoint artifacts are produced. In practice, backend choice affects throughput, memory headroom, resume reliability, and reproducibility more than most single hyperparameters. Keep backend, precision mode, and checkpoint format aligned so promoted adapters can be reloaded without silent drift.

⚙️

RAGWELD_AGENT_GRAD_ACCUM_STEPS

RAGWELD_AGENT_GRAD_ACCUM_STEPS

Defines how many micro-batches are accumulated before one optimizer update. Effective batch size is roughly `per_device_batch_size * grad_accum_steps * world_size`, so increasing this value lets you emulate larger batches under limited VRAM. The tradeoff is fewer optimizer steps per wall-clock minute and slightly staler gradients, which can change convergence behavior. Tune this together with learning rate and scheduler warmup, not in isolation, because accumulation directly changes update frequency.

⚙️

RAGWELD_AGENT_LORA_DROPOUT

RAGWELD_AGENT_LORA_DROPOUT

Applies dropout on the adapter path during training to reduce co-adaptation and improve generalization when data is limited or noisy. Setting this to `0.0` maximizes determinism and can help on very large, clean corpora, while moderate values often improve robustness on mixed-quality data. Too much dropout suppresses useful signal and slows learning. Tune it alongside alpha and rank because stronger regularization usually needs either more steps or slightly higher adapter capacity.

⚙️

RAGWELD_AGENT_LORA_RANK

RAGWELD_AGENT_LORA_RANK

Sets the low-rank adapter dimension (`r`), which is the main capacity knob for LoRA. Higher rank increases representational power and typically improves fit on complex tasks, but also raises VRAM, compute, and risk of overfitting. Lower rank is cheaper and often adequate for style or narrow-domain adaptation. Choose rank using validation metrics under fixed budget constraints, and retune alpha when rank changes because update scaling depends on both.

⚙️

RAGWELD_AGENT_LORA_TARGET_MODULES

RAGWELD_AGENT_LORA_TARGET_MODULES

Defines which submodules receive LoRA adapters (for example attention projections like `q_proj`/`v_proj`, or MLP projections in some architectures). This controls where adaptation capacity is spent, so module choice has large impact on quality-per-FLOP. Too narrow targeting can underfit complex behaviors; too broad targeting increases memory and training time with diminishing returns. Match target modules to the exact base model architecture names and validate by inspecting injected module counts before starting long runs.

⚙️

RAGWELD_AGENT_PROMOTE_EPSILON

RAGWELD_AGENT_PROMOTE_EPSILON

Sets the minimum metric gain required before a new checkpoint is promoted over the current best. This prevents noisy, statistically insignificant fluctuations from constantly replacing promoted models. Use epsilon in the same unit as your monitored metric (for example absolute NDCG gain or loss decrease), and calibrate it from historical run variance. If epsilon is too small, promotion churn increases; if too large, meaningful improvements are ignored and iteration slows.

⚙️

RAGWELD_AGENT_PROMOTE_IF_IMPROVES

RAGWELD_AGENT_PROMOTE_IF_IMPROVES

Boolean gate for checkpoint promotion based on validation outcomes. When enabled, a candidate checkpoint is promoted only if the tracked metric improves versus the current promoted model (typically with `PROMOTE_EPSILON` as the noise threshold). This keeps production candidates aligned to measured quality instead of recency. When disabled, every completed run can overwrite promoted state, which is useful for exploratory debugging but risky for stable deployments.

⚙️

RAGWELD_AGENT_TELEMETRY_INTERVAL_STEPS

RAGWELD_AGENT_TELEMETRY_INTERVAL_STEPS

Controls how often the training/runtime loop emits telemetry snapshots, measured in optimizer or agent steps. Lower values improve observability granularity (you see loss drift, action-quality regressions, and tool-failure spikes sooner) but increase logging overhead, storage volume, and dashboard cost. Higher values reduce overhead but can hide short-lived failures and make root-cause analysis harder because fewer intermediate states are preserved. Tune this together with batch size and run duration: keep intervals small during experiments and incident triage, then increase once behavior is stable.

⚙️

RAGWELD_AGENT_TRAIN_DATASET_PATH

RAGWELD_AGENT_TRAIN_DATASET_PATH

Filesystem path to the training dataset used by the agent/reranker training pipeline. This path determines what examples are loaded, so a wrong mount or stale directory silently changes training behavior and can invalidate evaluation comparisons. Prefer explicit absolute paths and versioned artifacts, and keep schema/format checks near load time (for example JSONL field validation) so bad rows fail early. In multi-environment setups (local, CI, container), treat this as an environment-specific input that must be pinned per run.

⚙️

Rate Limit Errors (per 5 min)

RATE_LIMIT_ERRORS_THRESHOLD
Cost Control

Sets the alerting threshold for HTTP 429 (rate-limit) errors over a rolling 5-minute window. This is an early-pressure signal for provider throttling, client burstiness, or missing retry/jitter controls. If set too low, alerts become noisy during normal traffic spikes; if set too high, sustained throttling can degrade latency and throughput before operators are notified. Calibrate from baseline traffic percentiles and combine with retry success-rate metrics so you distinguish transient spikes from persistent quota exhaustion.

⚙️

Recall intensity (next message)

chat_recall_intensity

Recall intensity is a one-message control that changes how aggressively memory retrieval runs before the next model call, then resets to auto. Operationally, it trades retrieval depth for latency and memory noise: lighter modes reduce cost and over-fetching, while deeper modes increase recall probability for long-running conversations with sparse cues. This knob is most useful when users explicitly signal intent (for example, "use what I told you last week") or when you need to skip memory for isolated tasks. Treat this as part of retrieval orchestration, not generation style; measure its impact using hit-rate on known memory facts, response latency, and the rate of irrelevant memory insertion.

⚙️

Reciprocal Rank Fusion (K)

RRF_K_DIV

`RRF_K_DIV` is the Reciprocal Rank Fusion smoothing constant in the fusion formula `score += 1 / (k + rank)`, and it governs how aggressively top-ranked items dominate the merged ranking. Lower values make the fusion more top-heavy and sensitive to rank-1/2 positions from individual retrievers, while higher values flatten contributions so deeper-ranked hits still influence final order. In implementation, this is a calibration parameter for hybrid retrieval behavior: tune it with representative queries and compare recall, top-k precision, and downstream answer grounding, because an overly small k can overfit to one retriever and an overly large k can dilute strong top signals.

⚙️

Recursive max depth

RECURSIVE_MAX_DEPTH

Maximum recursion depth for hierarchical splitter logic. At each depth level, the splitter tries progressively finer separators before falling back to hard token/character cuts. A higher depth can preserve semantic boundaries in mixed-structure content (headings, lists, code blocks), but costs more CPU and can increase preprocessing latency. A lower depth is faster and more predictable, but may produce boundary cuts that reduce retrieval precision. Tune alongside chunk size and overlap to balance indexing cost, recall, and answer grounding quality.

⚙️

Relationship Types

RELATIONSHIP_TYPES

Defines which edge labels are extracted or retained in your graph index (for example imports, calls, inherits, contains, references). This directly shapes what graph traversals are possible during retrieval: restrictive sets reduce noise but can miss multi-hop evidence chains; permissive sets increase recall but may introduce weak edges and larger traversal cost. Use task-driven selection: prioritize structural edges for code navigation and semantic/reference edges for documentation-heavy corpora.

⚙️

Repo Path Boosts (CSV)

tribrid_PATH_BOOSTS

Legacy CSV path-boost setting tied to the historical tribrid corpus. In current multi-corpus architecture, path weighting should be defined per repository in structured config so tuning is explicit, reviewable, and less error-prone. If this legacy variable is still active, keep boosts conservative, validate ranking deltas against baseline queries, and plan migration to per-repo settings to avoid hidden global coupling.

⚙️

REPO_PATH (legacy)

tribrid_PATH

Legacy single-corpus environment variable for the historical tribrid repository root. It remains for backward compatibility, but modern deployments should migrate to structured multi-repo configuration where each corpus defines path, routing hints, and ranking controls explicitly. During migration, run parallel validation (legacy and new config) to confirm identical file coverage and retrieval behavior before decommissioning the legacy variable.

⚙️

Reranker Log Path

TRIBRID_LOG_PATH

TRIBRID_LOG_PATH specifies where local runtime logs and trace artifacts are written on disk. A stable, writable path is required for reproducibility workflows such as replaying failure cases, auditing retrieval decisions, and comparing behavior across model/version changes. In multi-process deployments, this path should be paired with rotation and retention policy to prevent unbounded growth and partial-write corruption. Treat log-path configuration as part of operational hardening: explicit permissions, predictable lifecycle, and compatibility with your observability export strategy.

⚙️

Reranker Log Path

TriBridRAG_LOG_PATH

Legacy alias for `TRIBRID_LOG_PATH`. Defines the filesystem location where reranker and retrieval pipeline logs are written. Set this to a durable, writable path with rotation/retention policies aligned to your incident-response window. For local development, a relative project path keeps logs co-located with artifacts; for production, prefer an absolute path backed by a volume and a collector agent. If this path is invalid or non-writable, failures are often silent until debugging is needed, so add startup validation and emit a fatal configuration error on bad paths.

⚙️

Response Creativity (Chat)

CHAT_TEMPERATURE
Decoding

Controls sampling randomness during token generation. Lower values produce more deterministic, repeatable outputs that are usually preferable for factual QA, citations, and code generation; higher values increase variation and can help brainstorming but also raise hallucination risk. In RAG applications, temperature should be tuned with retrieval quality in mind: if retrieval is strong, low temperature usually yields the most grounded answers. For production support and search-heavy assistants, conservative settings are generally the safest default.

⚙️

Retrieval Confidence

CHAT_CONFIDENCE
Calibration

CHAT_CONFIDENCE enables a visible retrieval-confidence indicator next to model answers. This signal should be interpreted as evidence strength from retrieval and ranking, not as a guarantee that generated text is correct. In production, confidence is most useful for routing decisions such as warning banners, fallback prompts, or mandatory citation checks on low-confidence responses. Recalibrate after major index, chunking, or reranker changes, because confidence score distributions can drift even when raw retrieval metrics look stable.

⚙️

RRF k Parameter

FUSION_RRF_K
RRF control

RRF combines result lists with the formula 1 divided by k plus rank, so k controls how quickly importance decays with lower-ranked items. Smaller k values strongly favor top hits from each retriever, while larger values preserve more mid-ranked candidates and improve diversity. In tri-brid retrieval, k interacts with each retriever depth and chunk granularity, so tune it with offline metrics instead of intuition. Start near 60, then lower it if results feel noisy and raise it if relevant alternatives disappear too quickly. Changing k is often safer than hand-tuning many modality weights.

⚙️

Save Chat Messages

CHAT_HISTORY_ENABLED
Privacy

CHAT_HISTORY_ENABLED is the explicit toggle that turns message persistence on or off for the current client. Enabling it supports continuity across reloads and longer troubleshooting sessions, while disabling it is better for shared devices, private reviews, and ephemeral workflows. This control should be paired with obvious UI state and one-action purge behavior so users can verify whether persistence is active. In RAG systems, treating this as a first-class privacy switch helps balance convenience with data minimization.

⚙️

Semantic Synonyms Expansion

USE_SEMANTIC_SYNONYMS

Enables semantic synonym expansion before retrieval so user queries can match equivalent terminology, abbreviations, and team-specific phrasing beyond exact token overlap. This typically improves recall on natural-language prompts and cross-team vocabulary mismatches, especially when users ask with informal wording while documents use canonical terms. The tradeoff is expansion noise: broad or poorly curated synonym sets can pull in marginally related chunks and lower precision. Enable this with a controlled synonym dictionary, monitor zero-hit reduction and false-positive rates, and pair with reranking so expanded candidates are rescored instead of accepted blindly.

⚙️

Separator keep

SEPARATOR_KEEP

Controls whether the matched separator is attached to the preceding chunk (suffix), following chunk (prefix), or dropped. This seems minor, but it changes how punctuation, headings, delimiters, and code tokens survive chunk boundaries, which affects both lexical matching and LLM readability. Keeping separators often helps preserve grammatical and structural cues; dropping them can reduce token overhead but may remove important signals like path delimiters or sentence stops. Choose one mode, then evaluate answer grounding and snippet quality because this setting interacts with chunk overlap and tokenizer behavior.

⚙️

Separators (recursive chunking)

SEPARATORS

Ordered separator list for recursive chunking. The splitter tries separators from highest semantic boundary to lowest (for example paragraph break, newline, sentence punctuation, whitespace, then empty fallback) so chunks stay coherent before falling back to harder cuts. For code and mixed technical docs, this list strongly affects retrieval quality: if separators are too coarse, chunks exceed target size and get aggressively re-cut; if too fine, you fragment context and hurt recall. Keep domain-aware boundaries first (e.g., class/function headers) and retain an empty fallback so splitting always terminates.

⚙️

Server Host

HOST
Networking

HOST controls the network interface your retrieval service binds to. Using 127.0.0.1 restricts access to the local machine, while 0.0.0.0 exposes the service on all interfaces, which is often required in containers but increases exposure risk. In production, this value should be chosen with reverse-proxy routing, firewall rules, and authentication boundaries in mind. Misconfigured host binding is a common reason systems appear healthy but are unreachable from other services, or unexpectedly reachable from untrusted networks. Set HOST deliberately per environment and verify accessibility and security from the actual deployment path, not only local tests.

⚙️

Show decision in status bar

chat.recall_gate.show_gate_decision

UI observability toggle that displays which gate path was chosen (skip, light, standard, deep) and why. This does not alter retrieval itself; it exposes the gate decision layer so operators can trace behavior turn-by-turn. Enable it during tuning, incident triage, or trust-building phases where users need to understand why memory was or was not consulted. In stable production flows it can be disabled to reduce visual noise, but keeping it available for diagnostics is important because gate transparency shortens debugging cycles when retrieval quality drifts.

⚙️

Show raw signals (dev)

chat.recall_gate.show_signals

Developer-facing diagnostics toggle that reveals raw gating signals and intermediate scoring features behind each decision. This view is useful when thresholds interact in non-obvious ways, because it shows whether misclassification came from weak lexical triggers, length heuristics, recency priors, or override logic. Use this to calibrate gating rules with evidence instead of intuition. Since raw signals can be noisy and implementation-specific, this setting is best kept off for normal users and enabled only during controlled tuning or when investigating retrieval regressions.

⚙️

Skip greetings/acknowledgments

chat.recall_gate.skip_greetings

Skips memory retrieval for phatic turns such as greetings, acknowledgments, and other conversational glue that rarely needs historical grounding. This reduces unnecessary retrieval calls and prevents low-information turns from pulling irrelevant memory into context windows. It is a practical precision control: by filtering clearly non-task content, you preserve budget for turns that materially affect decisions. If your team encodes meaningful approvals in short acknowledgments, monitor for false skips and adjust companion thresholds so operational confirmations are still captured when needed.

⚙️

Skip standalone questions

chat.recall_gate.skip_standalone_questions

Skips Recall retrieval for prompts that are usually self-contained, such as fresh definitions, one-off how-to questions, or requests that do not reference prior turns. The goal is to reduce accidental memory injection, where unrelated historical snippets can change answer tone, assumptions, or scope. In production, this gate is usually implemented as a lightweight intent classifier or heuristic filter before vector recall. Tune it with offline replay: compare hallucination rate, answer directness, and user correction frequency with the gate on vs. off. If you disable this, Recall can improve continuity for under-specified prompts but often at the cost of topic drift. If you enable it too aggressively, follow-up questions that appear standalone may lose needed conversational state.

⚙️

Skip when RAG active

chat.recall_gate.skip_when_rag_active

Disables Recall memory retrieval when repository/document retrieval is already active, prioritizing ground-truth corpus context over conversational memory. This gate is useful in code-heavy workflows where historical chat can conflict with current file snippets or commit state. Operationally, it acts as a context-budget allocator: when RAG is enabled, token budget is reserved for retrieved artifacts, not prior discussion. Measure impact with retrieval-grounded accuracy and citation correctness; a healthy setting reduces cross-contamination between old chat context and fresh indexed content. If your users often ask comparative questions that depend on prior decisions, keep a narrow fallback path that still includes small Recall context when confidence in RAG relevance is low.

⚙️

Sparse Weight

FUSION_SPARSE_WEIGHT
Keyword bias

This weight controls how much lexical evidence from sparse retrieval influences the final fused ranking. Raising it improves exact-term tasks such as API names, error messages, file paths, and identifiers, but can reduce semantic recall when user wording differs from source text. Sparse weight should be tuned together with tokenizer and BM25 settings, because score behavior changes when stemming or chunk length changes. Use an evaluation set that includes both literal and conceptual queries so one class does not overfit the setting. If results become too keyword-literal, reduce this value before changing retriever architecture.

⚙️

Sparse Weight

SPARSE_WEIGHT

Sets the contribution of BM25-style lexical scoring in hybrid/tri-brid ranking. Higher sparse weight favors exact token overlap (identifiers, symbols, stack traces), while lower values favor semantic similarity from dense vectors. There is no universal best value: the right point depends on corpus cleanliness, query style, and how strong your reranker is. Treat this as a balance knob between precision on exact terms and semantic recall on paraphrased intent, and tune it jointly with sparse top-k and dense candidate counts.

⚙️

Standard recency weight

chat.recall_gate.standard_recency_weight

Controls how much timestamp recency boosts Recall candidates relative to semantic similarity. At low values, Recall selects the most semantically similar historical snippets regardless of age; at higher values, newer snippets are favored even if semantic match is slightly weaker. This is a ranking tradeoff, not a retrieval count control. For stable behavior, calibrate recency weighting against conversation length and topic volatility: longer, multi-topic chats usually benefit from moderate recency bias, while short technical debugging threads often need stronger similarity dominance. Evaluate with turn-level attribution checks to confirm selected memories actually support the final answer rather than merely being recent.

⚙️

Standard top_k

chat.recall_gate.standard_top_k

Sets how many Recall snippets are passed in standard mode after ranking. This parameter affects both quality and latency: larger top_k improves coverage for multi-part follow-ups but increases token usage and the chance of introducing weakly relevant memory. Smaller top_k is faster and cleaner, but can drop critical constraints from earlier turns. Treat top_k as a task-shape parameter, not a global maximum: narrow troubleshooting flows often perform best with small top_k, while planning or design conversations may need larger values. Pair this with recency weighting and deduplication to prevent near-duplicate memories from consuming context window budget.

⚙️

Stream Timeout (seconds)

CHAT_STREAM_TIMEOUT
Reliability

Defines how long the system waits for a streaming response before aborting. This is a reliability safeguard against stalled model calls, network interruptions, or overloaded inference backends. Set it too low and valid long-form answers will be cut off; set it too high and failed requests tie up resources and degrade user experience. A practical approach is to align timeout values with observed p95 or p99 completion times for your largest retrieval contexts, then add retry logic and clear UI messaging for partial or timed-out outputs.

⚙️

Streaming responses

ui.chat_streaming_enabled

Enables incremental token streaming in chat instead of waiting for a fully buffered response. This typically improves perceived responsiveness (faster first-token time) and helps users detect answer direction early, but it requires robust partial-state handling, cancellation logic, and transport fallback when providers or proxies drop streams. Keep it enabled for interactive workflows unless infrastructure reliability is poor; when disabled, ensure the UI clearly indicates buffered mode so users do not interpret waiting as failure.

⚙️

Sustained Frequency Duration (minutes)

ENDPOINT_SUSTAINED_DURATION
Noise filtering

This sets how long elevated endpoint call frequency must persist before an alert is triggered. It acts as a temporal noise filter that separates transient bursts from real incidents such as infinite loops or sustained abuse traffic. Short durations improve detection speed but can increase false positives; longer durations reduce noise but delay response. Tune duration together with frequency threshold using historical traffic playback, not one setting in isolation. Many teams use staged alerting windows so warnings arrive quickly while critical pages require longer persistence.

⚙️

Synonyms File Path

TRIBRID_SYNONYMS_PATH
Optional override

Path to the synonyms dictionary used for controlled query expansion and lexical normalization. This file can materially change retrieval behavior, especially for domain acronyms, aliases, and product-specific terminology that embeddings may underrepresent. Keep the synonym set versioned and scoped: broad global replacements can hurt precision by over-expanding ambiguous terms. Treat updates as relevance experiments, not static configuration, and validate with representative query buckets before rollout.

⚙️

Synonyms File Path

TriBridRAG_SYNONYMS_PATH

File path to the semantic synonym dictionary used during query expansion. The file should be versioned with your project and treated as retrieval configuration, not random text: entries should map domain terms to controlled alternatives (aliases, acronyms, team-specific jargon, and legacy naming). A good synonyms file raises recall by helping sparse and dense retrieval find conceptually equivalent language, but an overly broad file can introduce drift by matching loosely related terms. Keep the file schema consistent, validate JSON on load, and review changes with relevance tests so newly added synonym sets do not silently degrade precision.

⚙️

System prompt (base)

chat.system_prompt_base

Defines the legacy base instruction layer used when state-specific prompts are not selected. In a multi-state architecture, this base prompt should only hold invariant policy: role, safety boundaries, response style defaults, and output constraints that must apply in every mode. Avoid placing retrieval-specific instructions here, because they can conflict with context-aware prompts (Direct, RAG, Recall, RAG+Recall). In deployment, keep this prompt concise and versioned; changes here affect all requests and can cause wide regressions. A good practice is prompt contract testing: replay a benchmark set after each base-prompt edit and diff behavior across states.

⚙️

System prompt suffix: RAG (legacy)

chat.system_prompt_rag_suffix

Legacy fallback suffix appended when RAG context exists but state-specific prompt content is unavailable. Treat this as compatibility scaffolding, not the main instruction surface. Its job is to minimally preserve grounded behavior when the preferred four-state prompt path is partially configured. Keep the suffix small, explicit, and free of duplicated policy from the base prompt to avoid instruction collisions. If this suffix grows large, that is usually a signal to migrate fully to dedicated state prompts and remove legacy fallback complexity.

⚙️

System prompt suffix: Recall (legacy)

chat.system_prompt_recall_suffix

This suffix is appended to the legacy system prompt only when Recall context is attached to the request and the active four-state system prompt slot is empty. Treat it as a narrowly scoped adapter layer: it should clarify how memory snippets are interpreted, how conflicts between memory and user intent are resolved, and how uncertainty is surfaced when recalled facts are stale or low-confidence. In practice, the safest pattern is to keep this suffix procedural instead of stylistic: define citation behavior, conflict resolution order, and refusal conditions. Overly broad suffixes can silently change answer style for all recall-backed turns, so version this text and evaluate it against memory-heavy test prompts before rollout.

⚙️

System prompt: Direct (no context)

chat.system_prompt_direct

Used when no retrieval context is attached and the model must answer directly from user input plus baseline instructions. This prompt should strongly enforce uncertainty handling (ask clarifying questions, avoid fabricated specifics) because there is no external grounding context. It is the best place to define fallbacks for missing details and expected response framing for general questions. Keep direct-mode policies separate from retrieval-mode instructions to avoid references to nonexistent context blocks. During tuning, compare direct-mode helpfulness against hallucination rate and clarification frequency to ensure the model remains useful without overcommitting.

⚙️

System prompt: RAG + Recall

chat.system_prompt_rag_and_recall

Used when both repository retrieval (RAG) and chat memory (Recall) are attached, so the prompt must define priority and merge rules between two context channels. A robust pattern is hierarchical trust: prefer current retrieved artifacts for factual grounding, then use Recall for user preferences, unresolved decisions, and conversational continuity. Without explicit precedence rules, models often blend channels inconsistently, causing subtle contradictions. This prompt should also instruct the model to surface conflicts when Recall and retrieved documents disagree. Tune with multi-turn regression suites that include changed files, shifted requirements, and stale historical assumptions.

⚙️

System prompt: RAG only

chat.system_prompt_rag

Applied when retrieved corpus snippets are present and should be treated as primary evidence. This prompt should explicitly require grounding behavior: cite or reference retrieved content, prefer provided context over prior assumptions, and acknowledge when context is incomplete. In practice, this mode is where you define conflict resolution rules (for example, newest file snapshot overrides stale assumptions). Keep instructions deterministic so answers remain stable when retrieval order changes slightly. Evaluate with grounded answer rate, citation accuracy, and contradiction checks against retrieved chunks.

⚙️

System prompt: Recall only

chat.system_prompt_recall

Used when conversational memory snippets are present without repository retrieval. This prompt should define how to use memory safely: incorporate relevant prior decisions, preserve user preferences, and avoid treating old assumptions as immutable facts. Because Recall often contains stale or superseded statements, instructions should require temporal caution and conflict checks against the current user turn. In production, this mode benefits from stricter relevance thresholds and explicit refusal to overfit on weakly related memories. Evaluate with long-session benchmarks where user goals evolve over time.

⚙️

System Prompts

SYSTEM_PROMPTS_SUBTAB
Live reload

Central editor for system-level instructions that shape retrieval behavior, response style, and tool orchestration across the pipeline. Because these prompts influence multiple downstream components, changes here can silently shift answer grounding quality, citation behavior, and even token cost. Treat edits as versioned configuration: test against a fixed evaluation suite before promoting to shared defaults. For production reliability, pair prompt changes with telemetry (hallucination rate, unsupported claims, and fallback frequency) so regressions are caught quickly.

⚙️

Table Name

TABLE_NAME

Overrides the default pgvector table target used for storing and querying embeddings. This is useful for profile isolation, A/B model comparisons, staged reindex rollouts, and parallel corpora that share one database. Naming must comply with PostgreSQL identifier rules, and schema/table design should stay consistent with index strategy (IVFFlat/HNSW settings, metadata columns, and migration plans). If you rotate this value without coordinated indexing, retrieval can silently point at empty or stale vectors.

⚙️

Target tokens

TARGET_TOKENS

Defines the target chunk size for token-based splitting before indexing. Smaller targets improve retrieval precision and citation locality but increase chunk count, storage, and embedding cost; larger targets improve context continuity but can bury exact evidence and hurt reranker discrimination. Tune this against your model context window, overlap policy, and observed answer grounding rate. In production, treat token target as a measurable retrieval parameter, not a static constant, and retest after model or tokenizer changes.

⚙️

Temperature (with retrieval)

chat.temperature

This temperature applies when retrieval is active (RAG corpus context and/or Recall memory). Because retrieval already constrains the answer space, temperature should usually be tuned lower than direct-chat settings to reduce drift from grounded evidence. Higher values can improve phrasing diversity, but they also increase the chance the model over-generalizes beyond retrieved passages. A practical workflow is to tune this jointly with retrieval thresholds: if context precision is high, modest temperature increases can help fluency; if retrieval is noisy, lower temperature prevents compounding errors. Evaluate with groundedness checks, citation adherence, and contradiction rate against source chunks, not only user preference scores.

⚙️

Thinking Budget Tokens

CHAT_THINKING_BUDGET_TOKENS
Inference budget

Sets the token budget allocated to reasoning or hidden deliberation for models that support extended thinking modes. Larger budgets can improve performance on multi-step reasoning, but they also increase latency and spend, and may be unnecessary for straightforward retrieval-backed answers. This parameter should be tuned per task class: keep budgets small for routine lookups and raise them only for complex synthesis, planning, or ambiguity resolution. Monitor both answer quality and total time-to-final-token when adjusting this value.

⚙️

Thread ID

THREAD_ID

Stable conversation identifier used to bind requests to one persistent dialogue state. Reusing the same `THREAD_ID` allows checkpoints, tool outputs, and prior turns to be recovered across retries and restarts; changing it creates a clean session boundary. In multi-user systems, construct IDs deterministically (workspace + user + session) to prevent cross-user context bleed. Treat this value as state-routing infrastructure, not just a label, because it determines where memory is read and written.

⚙️

tiktoken encoding

TOKENIZATION_TIKTOKEN_ENCODING

Defines the exact tiktoken vocabulary/merge table used to count and split tokens (for example `o200k_base`). The encoding choice must match the target model family; otherwise token budgets, chunk boundaries, and truncation guards can be wrong even when chunk-size settings look correct. Explicitly pinning encoding improves reproducibility across deployments and helps avoid silent fallback behavior. For mixed-model systems, store encoding per model assignment rather than globally.

⚙️

Timeout Errors (per 5 min)

TIMEOUT_ERRORS_THRESHOLD
Reliability

Defines how many timeout failures are tolerated inside a rolling 5-minute window before paging or incident workflows trigger. This threshold should align with your SLO budget: too low causes alert storms during normal jitter, too high delays detection of real saturation. Tune it together with upstream timeouts, retry policy, and queue depth so alerts represent sustained user-impacting latency rather than transient spikes. Revisit after infrastructure or model-provider changes, since timeout baselines can shift quickly.

⚙️

Tokenization estimate-only

TOKENIZATION_ESTIMATE_ONLY

When enabled, token counts are approximated instead of computed with the exact tokenizer. This speeds large indexing passes and quick planning runs, but estimates can drift on code, mixed-language text, and Unicode-heavy corpora where token boundaries are irregular. Use this mode for rough budgeting and capacity checks, then switch to exact counting before final chunking and cost-sensitive production runs. The key tradeoff is throughput versus boundary accuracy.

⚙️

Tokenization lowercase

TOKENIZATION_LOWERCASE

Lowercases text before tokenization to reduce vocabulary sparsity and make matching less case-sensitive. This often improves recall for noisy user queries, but it can also erase meaning in case-sensitive domains (identifiers, product SKUs, legal names, biomedical symbols). For code retrieval and logs, keeping case is usually safer; for broad natural-language corpora, lowercasing may stabilize indexing. Evaluate it with representative queries rather than enabling globally by default.

⚙️

Tokenization normalize Unicode

TOKENIZATION_NORMALIZE_UNICODE

Applies Unicode normalization (commonly NFKC) before tokenization so visually similar or canonically equivalent forms collapse to consistent code points. This reduces hard-to-debug token drift caused by mixed sources (PDF extraction, OCR, copied web text, multilingual content). It improves index consistency and duplicate detection, but can alter some script-specific distinctions, so validate on domain text before enforcing globally. In practice, normalization is a high-leverage cleanup step for heterogeneous corpora.

⚙️

Tokenization strategy

TOKENIZATION_STRATEGY

Chooses which tokenizer engine drives token-aware chunking and cost/context calculations (for example `tiktoken`, `huggingface`, or simpler fallback methods). Different strategies produce different token boundaries and counts on the same text, which directly changes chunk sizes, truncation points, and retrieval behavior. Pick the strategy that matches your serving model family to minimize budgeting error and split instability. Standardize one strategy per pipeline stage so evaluation metrics remain comparable across runs.

⚙️

Top-P (Nucleus Sampling)

GEN_TOP_P
Sampling control

Top-p applies nucleus sampling by limiting choices to the smallest token set whose cumulative probability reaches p. Lower values narrow the candidate set and improve determinism, while higher values increase lexical diversity. In RAG answers, top-p is usually tuned with temperature; high values for both can increase hallucination risk even with good retrieval context. Keep top-p conservative for technical and policy-sensitive responses. When troubleshooting unstable outputs, reduce top-p before redesigning prompts so you isolate sampling entropy effects first.

⚙️

Trace Retention

TRACE_RETENTION

TRACE_RETENTION defines how long trace records are kept before pruning. Retention is a tradeoff between forensic depth and operational cost: longer windows improve post-incident analysis and regression investigations, while shorter windows limit storage growth and reduce compliance surface area. Set this value based on your incident review cadence and model rollout cycle, then validate that pruning does not remove traces needed for reproducibility. In production, align retention with data-governance policy and downstream index lifecycle settings so trace deletion is predictable and auditable.

⚙️

Trace Sampling Rate

TRACE_SAMPLING_RATE
Cost controlObservability

TRACE_SAMPLING_RATE sets the fraction of requests that emit full traces. Higher sampling improves visibility into rare routing failures and latency spikes, but increases telemetry volume, cost, and operator noise. Lower sampling is cheaper but can miss edge cases unless paired with rule-based overrides for errors, timeouts, or high-value tenants. A robust strategy is adaptive sampling: keep a low baseline for normal traffic and automatically raise sampling around deployments, incidents, or anomalous metrics.

⚙️

Tracing Enabled

TRACING_ENABLED

TRACING_ENABLED is the master switch for request-level trace capture in the retrieval and generation pipeline. When enabled, each request can emit structured events that explain routing decisions, retrieval candidates, rerank outcomes, and timing breakdowns. This setting is foundational for debugging because it turns opaque failures into inspectable execution paths. In production, keep it enabled with controlled sampling so you retain diagnostic coverage without overwhelming observability storage.

⚙️

Tracing Mode

TRACING_MODE

TRACING_MODE selects the trace backend behavior (for example local-only, external export, or disabled pathways in mixed environments). This mode determines where spans are emitted, which metadata is attached, and how operators inspect runs during incident triage. Choose a mode that matches deployment stage: local views for rapid iteration, full OpenTelemetry export for shared production observability, and controlled fallback modes for constrained environments. Ensure mode changes are tested with synthetic requests so trace continuity does not break across upgrades.

⚙️

Tri-Brid Fusion

TRIBRID_FUSION

TRIBRID_FUSION configures how dense, sparse, and graph-derived candidates are combined before final reranking. The fusion method (for example weighted sum vs. rank fusion) controls whether the system favors consensus across signals or aggressively promotes a single strong channel. Strong fusion design is workload-dependent: code and identifier-heavy corpora often need lexical strength, while conceptual QA benefits from semantic breadth and graph context expansion. Tune fusion with held-out query sets and monitor per-signal contribution so failures can be traced to the responsible retrieval path.

⚙️

Triplets Dataset Path

TRIBRID_TRIPLETS_PATH

Location of the JSONL triplets corpus used to mine and train the reranker. Because this dataset defines supervision quality, the path should point to a durable, versioned artifact rather than an ad hoc local file. Maintain a consistent schema (query, positive, negative, metadata) and track generation provenance so model regressions can be traced back to specific triplet revisions. In practice, good triplet hygiene often improves ranking quality more than additional training steps.

⚙️

Triplets Dataset Path

TriBridRAG_TRIPLETS_PATH

Legacy alias for TRIBRID_TRIPLETS_PATH. This path points to the dataset that defines graph edges as subject-predicate-object triplets for graph-aware retrieval and relationship expansion. Treat this file as a structured knowledge artifact: normalize identifiers, maintain stable predicates, and enforce schema checks before indexing so graph lookups remain deterministic. If triplets are noisy or inconsistent, graph expansion can amplify errors; if they are clean and domain-specific, they provide high-value context that sparse/dense retrieval can miss. Keep ingestion reproducible and validate that triplet updates improve grounded answer quality on dependency and relationship-heavy queries.

⚙️

Triplets Mine Mode

TRIPLETS_MINE_MODE
Advanced training controlUse semi-hard for production

Controls how newly mined triplets are persisted to disk: `replace` creates a clean dataset for a reproducible training run, while `append` extends an existing corpus for incremental hard-negative collection. Use `replace` when you want strict experiment comparability, fixed train/validation splits, and clear provenance. Use `append` when your retrieval index, query set, or domain vocabulary is evolving and you intentionally want longitudinal data accumulation. In production retraining pipelines, pair this setting with dataset versioning and a run manifest so you can trace exactly which mined triplets entered each reranker checkpoint.

⚙️

UI Public Directory

GUI_DIR
Deployment

GUI_DIR is the filesystem path used for public UI assets that both frontend code and backend endpoints depend on, such as model catalogs and generated metadata. In RAG/search deployments, this directory often bridges runtime-generated data with static asset serving, so path correctness directly affects what users can select or inspect in the UI. Keep writes atomic to avoid partial JSON reads by the frontend, and prefer explicit volume mounts in containerized environments. If GUI_DIR differs between build and runtime contexts, you can get stale or missing model lists even though indexing and APIs are healthy. Treat this as deployment configuration that should be consistent across local, staging, and production.

⚙️

Validation Error

INDEX_VALIDATION_ERROR
Blocks execution

Represents a blocking configuration fault that must be fixed before indexing proceeds, such as embedding dimension mismatch, invalid chunk parameters, missing credentials, or contradictory profile settings. Failing fast here protects index integrity by preventing partially-built or semantically inconsistent artifacts from entering production search. In RAG systems, validation errors are cheaper than silent corruption because bad indexes often look healthy until answer quality drops. Resolve by correcting the source config and rerunning validation, not by bypassing checks. Keep error messages actionable so operators know which field failed, why it failed, and the expected valid range.

⚙️

Validation Warning

INDEX_VALIDATION_WARNING
Quality risk

Signals a non-blocking but potentially harmful setting combination, for example oversized chunks, disabled dense retrieval, or weak keyword filters that can reduce relevance quality. Warnings let indexing continue while making tradeoffs explicit, which is useful for exploratory runs and incident recovery. In mature environments, recurring warnings should be promoted into profile-level policies or automated guardrails. Treat warnings as hypotheses about future quality regressions and verify them with retrieval metrics instead of ignoring them. The right workflow is acknowledge, monitor, and either tune or formally accept the risk.

⚙️

Vector Backend

VECTOR_BACKEND
Core Setting

Selects the storage and query engine used for dense-vector retrieval. In practice, this choice determines how embeddings are indexed, how similarity search is executed, and which operational constraints apply (memory profile, filtering behavior, sharding options, and query latency under load). Switching backends is not just a performance toggle: index build strategy, distance metric defaults, and filtering semantics can differ across systems. Benchmark with representative query mixes and metadata filters, then align backend selection with your production constraints: throughput targets, fault tolerance, and operational tooling.

⚙️

Vector Similarity Threshold

VECTOR_SIMILARITY_THRESHOLD
Precision tuning

Minimum similarity score required for a dense candidate to be kept. This parameter is effectively a quality gate: low thresholds preserve recall by allowing weaker semantic matches into fusion, while high thresholds enforce precision by discarding borderline neighbors early. Threshold behavior is embedding-model dependent, so absolute values are not portable across models or domains. Calibrate by plotting score distributions for relevant vs irrelevant pairs on your own corpus, then pick a threshold that reduces noisy candidates without suppressing valid paraphrases and long-tail terminology.

⚙️

Vector Weight

FUSION_VECTOR_WEIGHT
Semantic bias

This weight determines how strongly semantic nearest-neighbor matches influence fused ranking. Higher values help when users ask conceptual questions using synonyms not present in source text, while lower values protect exact-match intent such as identifiers and versioned commands. Re-tune this after embedding-model changes, chunking changes, or reranker changes because score calibration shifts quickly across those updates. Evaluate with mixed query types and inspect which retriever wins per query, not just aggregate averages. If answers feel topically related but miss required literals, vector weight is likely too high.

⚙️

Vector Weight (Hybrid Fusion)

VECTOR_WEIGHT
Advanced RAG tuningPairs with BM25_WEIGHT

Relative influence of dense semantic scores during hybrid fusion. Raising vector weight helps when user wording differs from document wording (paraphrases, alias-heavy language, conceptual queries), while lowering it helps when exact identifiers and lexical precision matter more (error codes, symbol names, strict API strings). This is not an isolated knob: optimal weight depends on BM25 configuration, candidate pool sizes, and reranker behavior. Tune weight on a fixed benchmark set and inspect failure cases; if dense-heavy tuning introduces topical but non-specific hits, reduce vector weight or increase lexical/reranker influence.

⚙️

Vendor Mode

VENDOR_MODE
Code priority

Controls whether ranking heuristics prioritize first-party project code or third-party/vendor dependencies when scores are close. In large repos, vendor and framework code can dominate candidate lists simply because it is abundant; this setting counterbalances that effect for tasks where users primarily want answers about their own application logic. Prefer first-party mode for product debugging, architecture discovery, and onboarding into your codebase. Prefer vendor mode only when your query intent is explicitly about dependency internals. Evaluate with intent-labeled queries to confirm the mode aligns with expected navigation behavior.

⚙️

Vendor Penalty

VENDOR_PENALTY
Advanced RAG tuningCode priority control

Negative score adjustment applied during reranking to chunks detected as third-party or vendored code (for example dependencies under vendor/, node_modules, generated SDKs, or mirrored upstream trees). The parameter is most useful when VENDOR_MODE prefers first-party sources and you want your application logic to outrank framework internals for ambiguous queries. Treat this as a ranking-bias control, not a hard filter: if the penalty is too large, relevant dependency docs can disappear from top results; if too small, repeated library boilerplate can crowd out business logic. Tune with side-by-side eval sets that include both product-code questions and dependency troubleshooting questions so recall and precision stay balanced.

⚙️

Vision enabled

chat.multimodal.vision_enabled

Enables image input in chat so messages can include visual context in addition to text. With this flag off, image attachments should be blocked or ignored; with it on, the runtime must route requests to a vision-capable model and include the correct media payload format. Turning vision on changes both quality and cost profiles: image inputs consume additional processing budget, can increase latency, and may require stricter content handling rules. Validate provider/model compatibility and monitor failure modes where text-only fallbacks accidentally run on image-dependent prompts.