From cf61bed62c3d63690d81eaa53c1dfe10df3517a9 Mon Sep 17 00:00:00 2001 From: yangdx Date: Wed, 12 Feb 2025 21:48:48 +0800 Subject: [PATCH] Reorganize env config sections, add data store config to env file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Add namespace prefix config option • Make AGE graph name optional • Update env variable requirements • Add comments for deprecated options --- .env.example | 109 +++++++++++++++++++++------------------- lightrag/kg/age_impl.py | 4 +- lightrag/lightrag.py | 7 ++- 3 files changed, 65 insertions(+), 55 deletions(-) diff --git a/.env.example b/.env.example index 135852a5..369bde4b 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,30 @@ -# Server Configuration -HOST=0.0.0.0 -PORT=9621 +### Server Configuration +#HOST=0.0.0.0 +#PORT=9621 +#NAMESPACE_PREFIX=lightrag # separating data from difference Lightrag instances -# Directory Configuration -WORKING_DIR=/app/data/rag_storage -INPUT_DIR=/app/data/inputs +### Optional SSL Configuration +#SSL=true +#SSL_CERTFILE=/path/to/cert.pem +#SSL_KEYFILE=/path/to/key.pem -# RAG Configuration +### Security (empty for no api-key is needed) +# LIGHTRAG_API_KEY=your-secure-api-key-here + +### Directory Configuration +# WORKING_DIR=./rag_storage +# INPUT_DIR=./inputs + +### Logging level +LOG_LEVEL=INFO + +### Optional Timeout +TIMEOUT=300 + +# Ollama Emulating Model Tag +# OLLAMA_EMULATING_MODEL_TAG=latest + +### RAG Configuration MAX_ASYNC=4 MAX_TOKENS=32768 EMBEDDING_DIM=1024 @@ -17,53 +35,39 @@ MAX_EMBED_TOKENS=8192 #COSINE_THRESHOLD=0.4 # 0.2 while not running API server #TOP_K=50 # 60 while not running API server -# LLM Configuration (Use valid host. For local services, you can use host.docker.internal) -# Ollama example +### LLM Configuration (Use valid host. For local services, you can use host.docker.internal) +### Ollama example LLM_BINDING=ollama LLM_BINDING_HOST=http://host.docker.internal:11434 LLM_MODEL=mistral-nemo:latest -# OpenAI alike example +### OpenAI alike example # LLM_BINDING=openai # LLM_MODEL=deepseek-chat # LLM_BINDING_HOST=https://api.deepseek.com # LLM_BINDING_API_KEY=your_api_key -# for OpenAI LLM (LLM_BINDING_API_KEY take priority) +### for OpenAI LLM (LLM_BINDING_API_KEY take priority) # OPENAI_API_KEY=your_api_key -# Lollms example +### Lollms example # LLM_BINDING=lollms # LLM_BINDING_HOST=http://host.docker.internal:9600 # LLM_MODEL=mistral-nemo:latest -# Embedding Configuration (Use valid host. For local services, you can use host.docker.internal) +### Embedding Configuration (Use valid host. For local services, you can use host.docker.internal) # Ollama example EMBEDDING_BINDING=ollama EMBEDDING_BINDING_HOST=http://host.docker.internal:11434 EMBEDDING_MODEL=bge-m3:latest -# Lollms example +### Lollms example # EMBEDDING_BINDING=lollms # EMBEDDING_BINDING_HOST=http://host.docker.internal:9600 # EMBEDDING_MODEL=bge-m3:latest -# Security (empty for no key) -LIGHTRAG_API_KEY=your-secure-api-key-here - -# Logging -LOG_LEVEL=INFO - -# Optional SSL Configuration -#SSL=true -#SSL_CERTFILE=/path/to/cert.pem -#SSL_KEYFILE=/path/to/key.pem - -# Optional Timeout -#TIMEOUT=30 - -# Optional for Azure (LLM_BINDING_HOST, LLM_BINDING_API_KEY take priority) +### Optional for Azure (LLM_BINDING_HOST, LLM_BINDING_API_KEY take priority) # AZURE_OPENAI_API_VERSION=2024-08-01-preview # AZURE_OPENAI_DEPLOYMENT=gpt-4o # AZURE_OPENAI_API_KEY=myapikey @@ -72,54 +76,57 @@ LOG_LEVEL=INFO # AZURE_EMBEDDING_DEPLOYMENT=text-embedding-3-large # AZURE_EMBEDDING_API_VERSION=2023-05-15 -# Ollama Emulating Model Tag -# OLLAMA_EMULATING_MODEL_TAG=latest - - -# Data storage selection +### Data storage selection # LIGHTRAG_KV_STORAGE=PGKVStorage # LIGHTRAG_VECTOR_STORAGE=PGVectorStorage # LIGHTRAG_GRAPH_STORAGE=PGGraphStorage # LIGHTRAG_DOC_STATUS_STORAGE=PGDocStatusStorage -# Oracle Database Configuration +### Oracle Database Configuration ORACLE_DSN=localhost:1521/XEPDB1 ORACLE_USER=your_username ORACLE_PASSWORD='your_password' ORACLE_CONFIG_DIR=/path/to/oracle/config -ORACLE_WALLET_LOCATION=/path/to/wallet # 可选 -#ORACLE_WALLET_PASSWORD='your_password' # 可选 -#ORACLE_WORKSPACE=default # 可选,默认为default +#ORACLE_WALLET_LOCATION=/path/to/wallet # optional +#ORACLE_WALLET_PASSWORD='your_password' # optional +#ORACLE_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) -# TiDB Configuration +### TiDB Configuration TIDB_HOST=localhost TIDB_PORT=4000 TIDB_USER=your_username TIDB_PASSWORD='your_password' TIDB_DATABASE=your_database -#TIDB_WORKSPACE=default # 可选,默认为default +#TIDB_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) -# PostgreSQL Configuration +### PostgreSQL Configuration POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_USER=your_username POSTGRES_PASSWORD='your_password' POSTGRES_DATABASE=your_database -#POSTGRES_WORKSPACE=default # 可选,默认为default -# AGE Configuration -AGE_GRAPH_NAME=dickens +#POSTGRES_WORKSPACE=default # separating all data from difference Lightrag instances(deprecated, use NAMESPACE_PREFIX in future) -# Database Configurations -# Neo4j +### Independent AGM Configuration(not for AMG embedded in PostreSQL) +AGE_POSTGRES_DB= +AGE_POSTGRES_USER= +AGE_POSTGRES_PASSWORD= +AGE_POSTGRES_HOST= +# AGE_POSTGRES_PORT=8529 + +# AGE Graph Name(apply to PostgreSQL and independent AGM) +# AGE_GRAPH_NAME=lightrag # deprecated, use NAME_SPACE_PREFIX instead + +### Neo4j Configuration NEO4J_URI=neo4j+s://xxxxxxxx.databases.neo4j.io NEO4J_USERNAME=neo4j NEO4J_PASSWORD='your_password' -# MongoDB (可选) -MONGODB_URI=mongodb+srv://name:password@your-cluster-address -MONGODB_DATABASE=lightrag -MONGODB_GRAPH=false +### MongoDB Configuration +MONGODB_URI=mongodb://root:root@localhost:27017/ +MONGODB_DATABASE=LightRAG +MONGODB_GRAPH=false # deprecated (keep for backward compatibility) -# Qdrant +### Qdrant QDRANT_URL=http://localhost:16333 QDRANT_API_KEY=your-api-key # 可选 diff --git a/lightrag/kg/age_impl.py b/lightrag/kg/age_impl.py index df32b7cb..a6857f22 100644 --- a/lightrag/kg/age_impl.py +++ b/lightrag/kg/age_impl.py @@ -75,8 +75,8 @@ class AGEStorage(BaseGraphStorage): .replace("'", "\\'") ) HOST = os.environ["AGE_POSTGRES_HOST"].replace("\\", "\\\\").replace("'", "\\'") - PORT = int(os.environ["AGE_POSTGRES_PORT"]) - self.graph_name = os.environ["AGE_GRAPH_NAME"] + PORT = os.environ.get("AGE_POSTGRES_PORT", "8529") + self.graph_name = namespace or os.environ.get("AGE_GRAPH_NAME", "lightrag") connection_string = f"dbname='{DB}' user='{USER}' password='{PASSWORD}' host='{HOST}' port={PORT}" diff --git a/lightrag/lightrag.py b/lightrag/lightrag.py index cb1aa195..48c20428 100644 --- a/lightrag/lightrag.py +++ b/lightrag/lightrag.py @@ -107,10 +107,13 @@ STORAGE_ENV_REQUIREMENTS = { "AGE_POSTGRES_DB", "AGE_POSTGRES_USER", "AGE_POSTGRES_PASSWORD", - "AGE_GRAPH_NAME", ], "GremlinStorage": ["GREMLIN_HOST", "GREMLIN_PORT", "GREMLIN_GRAPH"], - "PGGraphStorage": ["POSTGRES_USER", "POSTGRES_PASSWORD", "POSTGRES_DATABASE"], + "PGGraphStorage": [ + "POSTGRES_USER", + "POSTGRES_PASSWORD", + "POSTGRES_DATABASE", + ], "OracleGraphStorage": [ "ORACLE_DSN", "ORACLE_USER",