Skip to main content

Configuration

Agentic GraphRAG reads its configuration from environment variables. This page lists every variable, its default, and the settings class that reads it.

How configuration loads​

Each settings class reads three sources. The first source that has a value wins.

  1. An environment variable with the class prefix, for example NEO4J_URI.
  2. A .env file in the working directory.
  3. The default in the table.

A class ignores variables it does not know. A list or object value is a JSON string.

Neo4j​

Class: Neo4jSettings. Prefix: NEO4J_.

VariableDefaultMeaning
NEO4J_URIbolt://localhost:7687The Bolt URI. Use neo4j+s:// for Aura. A plain bolt:// or neo4j:// URI to a non-local host raises ValueError.
NEO4J_USERNAMEneo4jThe database user.
NEO4J_PASSWORDneo4jThe database password.
NEO4J_DATABASEneo4jThe database name.
NEO4J_MAX_CONNECTION_LIFETIME240Seconds a pooled connection lives. Aura closes idle connections after about five minutes.

Vector stores​

Each class rejects a plain http URL to a non-local host when a credential is set, or when REQUIRE_TLS is true.

VariableDefaultClassMeaning
QDRANT_URLhttp://localhost:6333QdrantSettingsThe Qdrant endpoint.
QDRANT_API_KEYemptyQdrantSettingsThe Qdrant API key.
QDRANT_REQUIRE_TLSfalseQdrantSettingsReject a plain http URL to a non-local host.
WEAVIATE_MODEcustomWeaviateSettingscloud for Weaviate Cloud, custom for a self-hosted instance.
WEAVIATE_URLhttp://localhost:8080WeaviateSettingsThe Weaviate endpoint.
WEAVIATE_API_KEYemptyWeaviateSettingsThe Weaviate API key.
WEAVIATE_GRPC_PORT50051WeaviateSettingsThe gRPC port. Only custom mode uses it.
WEAVIATE_REQUIRE_TLSfalseWeaviateSettingsReject a plain http URL to a non-local host.
MILVUS_URIhttp://localhost:19530MilvusSettingsThe Milvus endpoint.
MILVUS_TOKENemptyMilvusSettingsThe Milvus token.
MILVUS_REQUIRE_TLSfalseMilvusSettingsReject a plain http URI to a non-local host.

Embeddings​

Class: EmbeddingSettings. Prefix: EMBEDDING_.

VariableDefaultMeaning
EMBEDDING_MODELibm-granite/granite-embedding-small-english-r2The model name. The default embedder takes a model that FastEmbed supports. A SentenceTransformerEmbedder takes a sentence-transformers model name or path.
EMBEDDING_DEVICEnoneThe device, such as cpu or cuda. Only SentenceTransformerEmbedder uses it. None lets sentence-transformers choose.
EMBEDDING_NORMALIZEtrueWhether to L2-normalize the vectors.
EMBEDDING_BATCH_SIZE32Texts encoded per call.
EMBEDDING_CACHE_FOLDERnoneWhere the embedder caches downloaded model files.

LLM clients​

Three roles call an LLM: extraction, the agent, and the evaluation judge. You can set one endpoint for all three with the shared variables, or set a role's own variables.

Shared variables​

VariableDefaultRead by
LLM_BASE_URLnonefrom_openai_compatible_env() of the three roles. Required for extraction.
LLM_API_KEYnoneThe same three methods.
LLM_MODEL_IDnoneThe same three methods. Required for extraction and for the judge.

Extraction​

Class: ExtractionLLMSettings. Prefix: EXTRACTION_LLM_.

VariableDefaultMeaning
EXTRACTION_LLM_CLIENTSrequiredA JSON list of client objects (see below).
EXTRACTION_LLM_STRATEGYsinglesingle, fallback, or round_robin. Ignored with one client.
EXTRACTION_LLM_RETRYsee belowA JSON object with max_retries (3), delay_ms (200), multiplier (1.5), max_delay_ms (10000), and timeout_ms (0, no deadline).

ExtractionLLMSettings.from_openai_compatible_env() builds one openai-generic client from LLM_BASE_URL, LLM_API_KEY, and LLM_MODEL_ID. It raises RuntimeError when LLM_BASE_URL or LLM_MODEL_ID is missing.

Agent​

Class: AgentLLMSettings. Prefix: AGENT_LLM_.

VariableDefaultMeaning
AGENT_LLM_CLIENTSrequiredA JSON list of client objects.
AGENT_LLM_STRATEGYsinglesingle, fallback, or round_robin. Ignored with one client.
AGENT_LLM_BASE_URLLLM_BASE_URLRead by from_openai_compatible_env().
AGENT_LLM_API_KEYLLM_API_KEYRead by from_openai_compatible_env().
AGENT_LLM_MODEL_IDLLM_MODEL_ID, then gpt-4o-miniRead by from_openai_compatible_env().

Evaluation judge​

Class: EvalJudgeSettings. Prefix: EVAL_JUDGE_.

VariableDefaultMeaning
EVAL_JUDGE_CLIENTrequiredA JSON client object. Only direct construction reads it.
EVAL_JUDGE_TEMPERATURE0.0The sampling temperature. An empty value sends none.
EVAL_JUDGE_BASE_URLLLM_BASE_URLRead by from_openai_compatible_env().
EVAL_JUDGE_API_KEYLLM_API_KEYRead by from_openai_compatible_env().
EVAL_JUDGE_MODEL_IDLLM_MODEL_IDRead by from_openai_compatible_env(). There is no default model.

Client object​

Each entry in a *_CLIENTS list has these keys.

KeyMeaning
nameA unique name for the client.
providerOne of anthropic, aws-bedrock, google-ai, vertex-ai, openai, openai-responses, azure-openai, openai-generic.
modelThe model identifier the provider expects.
api_keyThe API key, when the provider needs one directly.
base_urlA custom endpoint. Required for openai-generic.
optionsProvider fields with no common shape, such as an Azure deployment id.
EXTRACTION_LLM_CLIENTS=[{"name": "c", "provider": "openai-generic", "model": "your-model", "base_url": "https://your-endpoint.example.com/v1", "api_key": "your-key"}]

Agent loop​

Class: AgentSettings. Prefix: AGENT_.

VariableDefaultMeaning
AGENT_RECURSION_LIMIT50The maximum LangGraph steps before the loop stops.
AGENT_MAX_RESEARCH_ATTEMPTS3How many times the planner can send the researcher back after an INSUFFICIENT verdict.

Retrieval​

Class: RetrievalSettings. Prefix: RETRIEVAL_.

VariableDefaultMeaning
RETRIEVAL_ENTITY_COLLECTIONagrag_entitiesThe vector-store collection for entity search.
RETRIEVAL_RESOLVED_ENTITY_COLLECTIONagrag_resolved_entitiesThe collection for resolved-entity search.
RETRIEVAL_CHUNK_COLLECTIONagrag_chunksThe collection for chunk search.
RETRIEVAL_COMMUNITY_COLLECTIONagrag_communitiesThe collection for community search.
RETRIEVAL_ENTITY_LABELS[]A JSON list of graph labels for native entity search when no vector store is set.
RETRIEVAL_ENTITY_TOP_K10Results per entity search.
RETRIEVAL_RESOLVED_ENTITY_TOP_K10Results per resolved-entity search.
RETRIEVAL_CHUNK_TOP_K10Results per chunk search.
RETRIEVAL_COMMUNITY_TOP_K5Results per community search.
RETRIEVAL_HYBRID_ALPHA0.5The dense-to-keyword blend for hybrid search, from 0 to 1. Vector-store search only.
RETRIEVAL_TRAVERSAL_DEPTH2The maximum hops of a graph expansion.
RETRIEVAL_TRAVERSAL_LIMIT50The maximum nodes a graph expansion returns.
RETRIEVAL_RRF_K60The reciprocal-rank-fusion constant.
RETRIEVAL_RERANKER_MIN_SCOREnoneDrop results below this score after reranking. None keeps all.
RETRIEVAL_NODE_DISTANCE_SEED_TOP_K3How many top entity hits seed the node-distance reranker.
RETRIEVAL_CROSS_ENCODER_MODELcross-encoder/ms-marco-MiniLM-L-6-v2The cross-encoder for reranking.
RETRIEVAL_TEXT2CYPHER_TIMEOUT_SECONDS10.0The server-side timeout for a generated query. None uses the server default.
RETRIEVAL_TEXT2CYPHER_MAX_ROWS1000The maximum rows a generated query returns.

Ingestion​

Class: CutoverJobSettings. Prefix: CUTOVER_JOB_.

VariableDefaultMeaning
CUTOVER_JOB_LEASE_TTL_SECONDS60Seconds a worker's lease on a document stays valid before another worker can take it. Must be greater than zero.