mirror of
https://github.com/langgenius/dify.git
synced 2025-12-19 17:27:16 -05:00
92 lines
2.8 KiB
Python
92 lines
2.8 KiB
Python
"""Configuration for InterSystems IRIS vector database."""
|
|
|
|
from pydantic import Field, PositiveInt, model_validator
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class IrisVectorConfig(BaseSettings):
|
|
"""Configuration settings for IRIS vector database connection and pooling."""
|
|
|
|
IRIS_HOST: str | None = Field(
|
|
description="Hostname or IP address of the IRIS server.",
|
|
default="localhost",
|
|
)
|
|
|
|
IRIS_SUPER_SERVER_PORT: PositiveInt | None = Field(
|
|
description="Port number for IRIS connection.",
|
|
default=1972,
|
|
)
|
|
|
|
IRIS_USER: str | None = Field(
|
|
description="Username for IRIS authentication.",
|
|
default="_SYSTEM",
|
|
)
|
|
|
|
IRIS_PASSWORD: str | None = Field(
|
|
description="Password for IRIS authentication.",
|
|
default="Dify@1234",
|
|
)
|
|
|
|
IRIS_SCHEMA: str | None = Field(
|
|
description="Schema name for IRIS tables.",
|
|
default="dify",
|
|
)
|
|
|
|
IRIS_DATABASE: str | None = Field(
|
|
description="Database namespace for IRIS connection.",
|
|
default="USER",
|
|
)
|
|
|
|
IRIS_CONNECTION_URL: str | None = Field(
|
|
description="Full connection URL for IRIS (overrides individual fields if provided).",
|
|
default=None,
|
|
)
|
|
|
|
IRIS_MIN_CONNECTION: PositiveInt = Field(
|
|
description="Minimum number of connections in the pool.",
|
|
default=1,
|
|
)
|
|
|
|
IRIS_MAX_CONNECTION: PositiveInt = Field(
|
|
description="Maximum number of connections in the pool.",
|
|
default=3,
|
|
)
|
|
|
|
IRIS_TEXT_INDEX: bool = Field(
|
|
description="Enable full-text search index using %iFind.Index.Basic.",
|
|
default=True,
|
|
)
|
|
|
|
IRIS_TEXT_INDEX_LANGUAGE: str = Field(
|
|
description="Language for full-text search index (e.g., 'en', 'ja', 'zh', 'de').",
|
|
default="en",
|
|
)
|
|
|
|
@model_validator(mode="before")
|
|
@classmethod
|
|
def validate_config(cls, values: dict) -> dict:
|
|
"""Validate IRIS configuration values.
|
|
|
|
Args:
|
|
values: Configuration dictionary
|
|
|
|
Returns:
|
|
Validated configuration dictionary
|
|
|
|
Raises:
|
|
ValueError: If required fields are missing or pool settings are invalid
|
|
"""
|
|
# Only validate required fields if IRIS is being used as the vector store
|
|
# This allows the config to be loaded even when IRIS is not in use
|
|
|
|
# vector_store = os.environ.get("VECTOR_STORE", "")
|
|
# We rely on Pydantic defaults for required fields if they are missing from env.
|
|
# Strict existence check is removed to allow defaults to work.
|
|
|
|
min_conn = values.get("IRIS_MIN_CONNECTION", 1)
|
|
max_conn = values.get("IRIS_MAX_CONNECTION", 3)
|
|
if min_conn > max_conn:
|
|
raise ValueError("IRIS_MIN_CONNECTION must be less than or equal to IRIS_MAX_CONNECTION")
|
|
|
|
return values
|