| 'SQLALCHEMY_POOL_RECYCLE': 3600, | 'SQLALCHEMY_POOL_RECYCLE': 3600, | ||||
| 'SQLALCHEMY_POOL_PRE_PING': 'False', | 'SQLALCHEMY_POOL_PRE_PING': 'False', | ||||
| 'SQLALCHEMY_ECHO': 'False', | 'SQLALCHEMY_ECHO': 'False', | ||||
| 'WEAVIATE_GRPC_ENABLED': 'True', | |||||
| 'WEAVIATE_BATCH_SIZE': 100, | |||||
| 'QDRANT_CLIENT_TIMEOUT': 20, | |||||
| 'QDRANT_GRPC_ENABLED': 'False', | |||||
| 'QDRANT_GRPC_PORT': '6334', | |||||
| 'CELERY_BACKEND': 'database', | 'CELERY_BACKEND': 'database', | ||||
| 'HOSTED_OPENAI_QUOTA_LIMIT': 200, | 'HOSTED_OPENAI_QUOTA_LIMIT': 200, | ||||
| 'HOSTED_OPENAI_TRIAL_ENABLED': 'False', | 'HOSTED_OPENAI_TRIAL_ENABLED': 'False', | ||||
| 'HOSTED_MODERATION_PROVIDERS': '', | 'HOSTED_MODERATION_PROVIDERS': '', | ||||
| 'HOSTED_FETCH_APP_TEMPLATES_MODE': 'remote', | 'HOSTED_FETCH_APP_TEMPLATES_MODE': 'remote', | ||||
| 'HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN': 'https://tmpl.dify.ai', | 'HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN': 'https://tmpl.dify.ai', | ||||
| 'MILVUS_DATABASE': 'default', | |||||
| } | } | ||||
| self.TENCENT_COS_SECRET_KEY = get_env('TENCENT_COS_SECRET_KEY') | self.TENCENT_COS_SECRET_KEY = get_env('TENCENT_COS_SECRET_KEY') | ||||
| self.TENCENT_COS_SCHEME = get_env('TENCENT_COS_SCHEME') | self.TENCENT_COS_SCHEME = get_env('TENCENT_COS_SCHEME') | ||||
| # ------------------------ | |||||
| # Vector Store Configurations. | |||||
| # Currently, only support: qdrant, milvus, zilliz, weaviate, relyt, pgvector | |||||
| # ------------------------ | |||||
| # qdrant settings | |||||
| self.QDRANT_URL = get_env('QDRANT_URL') | |||||
| self.QDRANT_API_KEY = get_env('QDRANT_API_KEY') | |||||
| self.QDRANT_CLIENT_TIMEOUT = get_env('QDRANT_CLIENT_TIMEOUT') | |||||
| self.QDRANT_GRPC_ENABLED = get_env('QDRANT_GRPC_ENABLED') | |||||
| self.QDRANT_GRPC_PORT = get_env('QDRANT_GRPC_PORT') | |||||
| # milvus / zilliz setting | |||||
| self.MILVUS_HOST = get_env('MILVUS_HOST') | |||||
| self.MILVUS_PORT = get_env('MILVUS_PORT') | |||||
| self.MILVUS_USER = get_env('MILVUS_USER') | |||||
| self.MILVUS_PASSWORD = get_env('MILVUS_PASSWORD') | |||||
| self.MILVUS_SECURE = get_env('MILVUS_SECURE') | |||||
| self.MILVUS_DATABASE = get_env('MILVUS_DATABASE') | |||||
| # OpenSearch settings | |||||
| self.OPENSEARCH_HOST = get_env('OPENSEARCH_HOST') | |||||
| self.OPENSEARCH_PORT = get_env('OPENSEARCH_PORT') | |||||
| self.OPENSEARCH_USER = get_env('OPENSEARCH_USER') | |||||
| self.OPENSEARCH_PASSWORD = get_env('OPENSEARCH_PASSWORD') | |||||
| self.OPENSEARCH_SECURE = get_bool_env('OPENSEARCH_SECURE') | |||||
| # weaviate settings | |||||
| self.WEAVIATE_ENDPOINT = get_env('WEAVIATE_ENDPOINT') | |||||
| self.WEAVIATE_API_KEY = get_env('WEAVIATE_API_KEY') | |||||
| self.WEAVIATE_GRPC_ENABLED = get_bool_env('WEAVIATE_GRPC_ENABLED') | |||||
| self.WEAVIATE_BATCH_SIZE = int(get_env('WEAVIATE_BATCH_SIZE')) | |||||
| # relyt settings | |||||
| self.RELYT_HOST = get_env('RELYT_HOST') | |||||
| self.RELYT_PORT = get_env('RELYT_PORT') | |||||
| self.RELYT_USER = get_env('RELYT_USER') | |||||
| self.RELYT_PASSWORD = get_env('RELYT_PASSWORD') | |||||
| self.RELYT_DATABASE = get_env('RELYT_DATABASE') | |||||
| # tencent settings | |||||
| self.TENCENT_VECTOR_DB_URL = get_env('TENCENT_VECTOR_DB_URL') | |||||
| self.TENCENT_VECTOR_DB_API_KEY = get_env('TENCENT_VECTOR_DB_API_KEY') | |||||
| self.TENCENT_VECTOR_DB_TIMEOUT = get_env('TENCENT_VECTOR_DB_TIMEOUT') | |||||
| self.TENCENT_VECTOR_DB_USERNAME = get_env('TENCENT_VECTOR_DB_USERNAME') | |||||
| self.TENCENT_VECTOR_DB_DATABASE = get_env('TENCENT_VECTOR_DB_DATABASE') | |||||
| self.TENCENT_VECTOR_DB_SHARD = get_env('TENCENT_VECTOR_DB_SHARD') | |||||
| self.TENCENT_VECTOR_DB_REPLICAS = get_env('TENCENT_VECTOR_DB_REPLICAS') | |||||
| # pgvecto rs settings | |||||
| self.PGVECTO_RS_HOST = get_env('PGVECTO_RS_HOST') | |||||
| self.PGVECTO_RS_PORT = get_env('PGVECTO_RS_PORT') | |||||
| self.PGVECTO_RS_USER = get_env('PGVECTO_RS_USER') | |||||
| self.PGVECTO_RS_PASSWORD = get_env('PGVECTO_RS_PASSWORD') | |||||
| self.PGVECTO_RS_DATABASE = get_env('PGVECTO_RS_DATABASE') | |||||
| # pgvector settings | |||||
| self.PGVECTOR_HOST = get_env('PGVECTOR_HOST') | |||||
| self.PGVECTOR_PORT = get_env('PGVECTOR_PORT') | |||||
| self.PGVECTOR_USER = get_env('PGVECTOR_USER') | |||||
| self.PGVECTOR_PASSWORD = get_env('PGVECTOR_PASSWORD') | |||||
| self.PGVECTOR_DATABASE = get_env('PGVECTOR_DATABASE') | |||||
| # tidb-vector settings | |||||
| self.TIDB_VECTOR_HOST = get_env('TIDB_VECTOR_HOST') | |||||
| self.TIDB_VECTOR_PORT = get_env('TIDB_VECTOR_PORT') | |||||
| self.TIDB_VECTOR_USER = get_env('TIDB_VECTOR_USER') | |||||
| self.TIDB_VECTOR_PASSWORD = get_env('TIDB_VECTOR_PASSWORD') | |||||
| self.TIDB_VECTOR_DATABASE = get_env('TIDB_VECTOR_DATABASE') | |||||
| # chroma settings | |||||
| self.CHROMA_HOST = get_env('CHROMA_HOST') | |||||
| self.CHROMA_PORT = get_env('CHROMA_PORT') | |||||
| self.CHROMA_TENANT = get_env('CHROMA_TENANT') | |||||
| self.CHROMA_DATABASE = get_env('CHROMA_DATABASE') | |||||
| self.CHROMA_AUTH_PROVIDER = get_env('CHROMA_AUTH_PROVIDER') | |||||
| self.CHROMA_AUTH_CREDENTIALS = get_env('CHROMA_AUTH_CREDENTIALS') | |||||
| # ------------------------ | # ------------------------ | ||||
| # Platform Configurations. | # Platform Configurations. | ||||
| # ------------------------ | # ------------------------ |
| from pydantic import BaseModel, Field | from pydantic import BaseModel, Field | ||||
| from configs.middleware.redis_configs import RedisConfigs | from configs.middleware.redis_configs import RedisConfigs | ||||
| from configs.middleware.vdb.chroma_configs import ChromaConfigs | |||||
| from configs.middleware.vdb.milvus_configs import MilvusConfigs | |||||
| from configs.middleware.vdb.opensearch_configs import OpenSearchConfigs | |||||
| from configs.middleware.vdb.pgvector_configs import PGVectorConfigs | |||||
| from configs.middleware.vdb.pgvectors_configs import PGVectoRSConfigs | |||||
| from configs.middleware.vdb.qdrant_configs import QdrantConfigs | |||||
| from configs.middleware.vdb.relyt_configs import RelytConfigs | |||||
| from configs.middleware.vdb.tencent_vector_configs import TencentVectorDBConfigs | |||||
| from configs.middleware.vdb.tidb_vector_configs import TiDBVectorConfigs | |||||
| from configs.middleware.vdb.weaviate_configs import WeaviateConfigs | |||||
| class StorageConfigs(BaseModel): | class StorageConfigs(BaseModel): | ||||
| KeywordStoreConfigs, | KeywordStoreConfigs, | ||||
| RedisConfigs, | RedisConfigs, | ||||
| StorageConfigs, | StorageConfigs, | ||||
| # configs of vdb and vdb providers | |||||
| VectorStoreConfigs, | VectorStoreConfigs, | ||||
| ChromaConfigs, | |||||
| MilvusConfigs, | |||||
| OpenSearchConfigs, | |||||
| PGVectorConfigs, | |||||
| PGVectoRSConfigs, | |||||
| QdrantConfigs, | |||||
| RelytConfigs, | |||||
| TencentVectorDBConfigs, | |||||
| TiDBVectorConfigs, | |||||
| WeaviateConfigs, | |||||
| ): | ): | ||||
| pass | pass |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class ChromaConfigs(BaseModel): | |||||
| """ | |||||
| Chroma configs | |||||
| """ | |||||
| CHROMA_HOST: Optional[str] = Field( | |||||
| description='Chroma host', | |||||
| default=None, | |||||
| ) | |||||
| CHROMA_PORT: PositiveInt = Field( | |||||
| description='Chroma port', | |||||
| default=8000, | |||||
| ) | |||||
| CHROMA_TENANT: Optional[str] = Field( | |||||
| description='Chroma database', | |||||
| default=None, | |||||
| ) | |||||
| CHROMA_DATABASE: Optional[str] = Field( | |||||
| description='Chroma database', | |||||
| default=None, | |||||
| ) | |||||
| CHROMA_AUTH_PROVIDER: Optional[str] = Field( | |||||
| description='Chroma authentication provider', | |||||
| default=None, | |||||
| ) | |||||
| CHROMA_AUTH_CREDENTIALS: Optional[str] = Field( | |||||
| description='Chroma authentication credentials', | |||||
| default=None, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class MilvusConfigs(BaseModel): | |||||
| """ | |||||
| Milvus configs | |||||
| """ | |||||
| MILVUS_HOST: Optional[str] = Field( | |||||
| description='Milvus host', | |||||
| default=None, | |||||
| ) | |||||
| MILVUS_PORT: PositiveInt = Field( | |||||
| description='Milvus RestFul API port', | |||||
| default=9091, | |||||
| ) | |||||
| MILVUS_USER: Optional[str] = Field( | |||||
| description='Milvus user', | |||||
| default=None, | |||||
| ) | |||||
| MILVUS_PASSWORD: Optional[str] = Field( | |||||
| description='Milvus password', | |||||
| default=None, | |||||
| ) | |||||
| MILVUS_SECURE: bool = Field( | |||||
| description='wheter to use SSL connection for Milvus', | |||||
| default=False, | |||||
| ) | |||||
| MILVUS_DATABASE: str = Field( | |||||
| description='Milvus database', | |||||
| default='default', | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class OpenSearchConfigs(BaseModel): | |||||
| """ | |||||
| OpenSearch configs | |||||
| """ | |||||
| OPENSEARCH_HOST: Optional[str] = Field( | |||||
| description='OpenSearch host', | |||||
| default=None, | |||||
| ) | |||||
| OPENSEARCH_PORT: PositiveInt = Field( | |||||
| description='OpenSearch port', | |||||
| default=9200, | |||||
| ) | |||||
| OPENSEARCH_USER: Optional[str] = Field( | |||||
| description='OpenSearch user', | |||||
| default=None, | |||||
| ) | |||||
| OPENSEARCH_PASSWORD: Optional[str] = Field( | |||||
| description='OpenSearch password', | |||||
| default=None, | |||||
| ) | |||||
| OPENSEARCH_SECURE: bool = Field( | |||||
| description='whether to use SSL connection for OpenSearch', | |||||
| default=False, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class PGVectorConfigs(BaseModel): | |||||
| """ | |||||
| PGVector configs | |||||
| """ | |||||
| PGVECTOR_HOST: Optional[str] = Field( | |||||
| description='PGVector host', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTOR_PORT: Optional[PositiveInt] = Field( | |||||
| description='PGVector port', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTOR_USER: Optional[str] = Field( | |||||
| description='PGVector user', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTOR_PASSWORD: Optional[str] = Field( | |||||
| description='PGVector password', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTOR_DATABASE: Optional[str] = Field( | |||||
| description='PGVector database', | |||||
| default=None, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class PGVectoRSConfigs(BaseModel): | |||||
| """ | |||||
| PGVectoRS configs | |||||
| """ | |||||
| PGVECTO_RS_HOST: Optional[str] = Field( | |||||
| description='PGVectoRS host', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTO_RS_PORT: Optional[PositiveInt] = Field( | |||||
| description='PGVectoRS port', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTO_RS_USER: Optional[str] = Field( | |||||
| description='PGVectoRS user', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTO_RS_PASSWORD: Optional[str] = Field( | |||||
| description='PGVectoRS password', | |||||
| default=None, | |||||
| ) | |||||
| PGVECTO_RS_DATABASE: Optional[str] = Field( | |||||
| description='PGVectoRS database', | |||||
| default=None, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, NonNegativeInt, PositiveInt | |||||
| class QdrantConfigs(BaseModel): | |||||
| """ | |||||
| Qdrant configs | |||||
| """ | |||||
| QDRANT_URL: Optional[str] = Field( | |||||
| description='Qdrant url', | |||||
| default=None, | |||||
| ) | |||||
| QDRANT_API_KEY: Optional[str] = Field( | |||||
| description='Qdrant api key', | |||||
| default=None, | |||||
| ) | |||||
| QDRANT_CLIENT_TIMEOUT: NonNegativeInt = Field( | |||||
| description='Qdrant client timeout in seconds', | |||||
| default=20, | |||||
| ) | |||||
| QDRANT_GRPC_ENABLED: bool = Field( | |||||
| description='whether enable grpc support for Qdrant connection', | |||||
| default=False, | |||||
| ) | |||||
| QDRANT_GRPC_PORT: PositiveInt = Field( | |||||
| description='Qdrant grpc port', | |||||
| default=6334, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class RelytConfigs(BaseModel): | |||||
| """ | |||||
| Relyt configs | |||||
| """ | |||||
| RELYT_HOST: Optional[str] = Field( | |||||
| description='Relyt host', | |||||
| default=None, | |||||
| ) | |||||
| RELYT_PORT: PositiveInt = Field( | |||||
| description='Relyt port', | |||||
| default=9200, | |||||
| ) | |||||
| RELYT_USER: Optional[str] = Field( | |||||
| description='Relyt user', | |||||
| default=None, | |||||
| ) | |||||
| RELYT_PASSWORD: Optional[str] = Field( | |||||
| description='Relyt password', | |||||
| default=None, | |||||
| ) | |||||
| RELYT_DATABASE: Optional[str] = Field( | |||||
| description='Relyt database', | |||||
| default='default', | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class TencentVectorDBConfigs(BaseModel): | |||||
| """ | |||||
| Tencent Vector configs | |||||
| """ | |||||
| TENCENT_VECTOR_DB_URL: Optional[str] = Field( | |||||
| description='Tencent Vector URL', | |||||
| default=None, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_API_KEY: Optional[str] = Field( | |||||
| description='Tencent Vector api key', | |||||
| default=None, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_TIMEOUT: PositiveInt = Field( | |||||
| description='Tencent Vector timeout', | |||||
| default=30, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_USERNAME: Optional[str] = Field( | |||||
| description='Tencent Vector password', | |||||
| default=None, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_PASSWORD: Optional[str] = Field( | |||||
| description='Tencent Vector password', | |||||
| default=None, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_SHARD: PositiveInt = Field( | |||||
| description='Tencent Vector sharding number', | |||||
| default=1, | |||||
| ) | |||||
| TENCENT_VECTOR_DB_REPLICAS: PositiveInt = Field( | |||||
| description='Tencent Vector replicas', | |||||
| default=2, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class TiDBVectorConfigs(BaseModel): | |||||
| """ | |||||
| TiDB Vector configs | |||||
| """ | |||||
| TIDB_VECTOR_HOST: Optional[str] = Field( | |||||
| description='TiDB Vector host', | |||||
| default=None, | |||||
| ) | |||||
| TIDB_VECTOR_PORT: Optional[PositiveInt] = Field( | |||||
| description='TiDB Vector port', | |||||
| default=None, | |||||
| ) | |||||
| TIDB_VECTOR_USER: Optional[str] = Field( | |||||
| description='TiDB Vector user', | |||||
| default=None, | |||||
| ) | |||||
| TIDB_VECTOR_PASSWORD: Optional[str] = Field( | |||||
| description='TiDB Vector password', | |||||
| default=None, | |||||
| ) | |||||
| TIDB_VECTOR_DATABASE: Optional[str] = Field( | |||||
| description='TiDB Vector database', | |||||
| default=None, | |||||
| ) |
| from typing import Optional | |||||
| from pydantic import BaseModel, Field, PositiveInt | |||||
| class WeaviateConfigs(BaseModel): | |||||
| """ | |||||
| Weaviate configs | |||||
| """ | |||||
| WEAVIATE_ENDPOINT: Optional[str] = Field( | |||||
| description='Weaviate endpoint URL', | |||||
| default=None, | |||||
| ) | |||||
| WEAVIATE_API_KEY: Optional[str] = Field( | |||||
| description='Weaviate API key', | |||||
| default=None, | |||||
| ) | |||||
| WEAVIATE_GRPC_ENABLED: bool = Field( | |||||
| description='whether to enable gRPC for Weaviate connection', | |||||
| default=True, | |||||
| ) | |||||
| WEAVIATE_BATCH_SIZE: PositiveInt = Field( | |||||
| description='Weaviate batch size', | |||||
| default=100, | |||||
| ) |