Skip to content

Configuration

Environment Variables

Database

VariableDefaultDescription
DB_HOSTlocalhostPostgreSQL host
DB_PORT5432PostgreSQL port
DB_USERpostgresPostgreSQL user
DB_PASSWORDPostgreSQL password
DB_NAMEknowledgeDatabase name

Redis

VariableDefaultDescription
REDIS_HOSTlocalhostRedis host
REDIS_PORT6379Redis port
REDIS_PASSWORDRedis password

Embedding

VariableDefaultDescription
EMBEDDING_PROVIDERopenaiEmbedding provider (openai/gemini/ollama)
EMBEDDING_MODELtext-embedding-3-smallEmbedding model name
EMBEDDING_API_KEYAPI key for embedding provider
EMBEDDING_BASE_URLCustom base URL (for Ollama or compatible APIs)
EMBEDDING_DIMENSION1536Embedding dimension

Storage

VariableDefaultDescription
STORAGE_TYPElocalStorage type (local/minio/s3)
STORAGE_LOCAL_PATH./uploadsLocal storage path
STORAGE_S3_BUCKETS3 bucket name
STORAGE_S3_REGIONS3 region
STORAGE_S3_ENDPOINTS3 endpoint (for MinIO)

Auth

VariableDefaultDescription
AUTH_TYPEjwtAuth type (jwt/noop)
JWT_SECRETJWT secret key

Server

VariableDefaultDescription
SERVER_PORT8083HTTP server port
SERVER_HOST0.0.0.0HTTP server host

Configuration File

Create a .env file in the project root:

bash
cp .env.example .env
# Edit .env with your values

Programmatic Configuration

When using the Go SDK:

go
engine, err := knowledge.New(knowledge.Config{
    DatabaseURL: "postgres://...",
    RedisURL:    "redis://localhost:6379",
    Embedding: knowledge.EmbeddingConfig{
        Provider:  "openai",
        APIKey:    "sk-...",
        Model:     "text-embedding-3-small",
        Dimension: 1536,
    },
    Storage: knowledge.StorageConfig{
        Type:      "minio",
        Bucket:    "knowledge",
        Endpoint:  "localhost:9000",
        AccessKey: "minioadmin",
        SecretKey: "minioadmin",
    },
    Auth: knowledge.AuthConfig{
        Type:       "jwt",
        JWTSecret:  "your-secret",
    },
})

Released under the MIT License.