mirror of https://github.com/langgenius/dify.git
94 lines
3.1 KiB
Python
94 lines
3.1 KiB
Python
from typing import Literal
|
|
|
|
from pydantic import Field, PositiveInt
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class OceanBaseVectorConfig(BaseSettings):
|
|
"""
|
|
Configuration settings for OceanBase Vector database
|
|
"""
|
|
|
|
OCEANBASE_VECTOR_HOST: str | None = Field(
|
|
description="Hostname or IP address of the OceanBase Vector server (e.g. 'localhost')",
|
|
default=None,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_PORT: PositiveInt | None = Field(
|
|
description="Port number on which the OceanBase Vector server is listening (default is 2881)",
|
|
default=2881,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_USER: str | None = Field(
|
|
description="Username for authenticating with the OceanBase Vector database",
|
|
default=None,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_PASSWORD: str | None = Field(
|
|
description="Password for authenticating with the OceanBase Vector database",
|
|
default=None,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_DATABASE: str | None = Field(
|
|
description="Name of the OceanBase Vector database to connect to",
|
|
default=None,
|
|
)
|
|
|
|
OCEANBASE_ENABLE_HYBRID_SEARCH: bool = Field(
|
|
description="Enable hybrid search features (requires OceanBase >= 4.3.5.1). Set to false for compatibility "
|
|
"with older versions",
|
|
default=False,
|
|
)
|
|
|
|
OCEANBASE_FULLTEXT_PARSER: str | None = Field(
|
|
description=(
|
|
"Fulltext parser to use for text indexing. "
|
|
"Built-in options: 'ngram' (N-gram tokenizer for English/numbers), "
|
|
"'beng' (Basic English tokenizer), 'space' (Space-based tokenizer), "
|
|
"'ngram2' (Improved N-gram tokenizer), 'ik' (Chinese tokenizer). "
|
|
"External plugins (require installation): 'japanese_ftparser' (Japanese tokenizer), "
|
|
"'thai_ftparser' (Thai tokenizer). Default is 'ik'"
|
|
),
|
|
default="ik",
|
|
)
|
|
|
|
OCEANBASE_VECTOR_BATCH_SIZE: PositiveInt = Field(
|
|
description="Number of documents to insert per batch",
|
|
default=100,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_METRIC_TYPE: Literal["l2", "cosine", "inner_product"] = Field(
|
|
description="Distance metric type for vector index: l2, cosine, or inner_product",
|
|
default="l2",
|
|
)
|
|
|
|
OCEANBASE_HNSW_M: PositiveInt = Field(
|
|
description="HNSW M parameter (max number of connections per node)",
|
|
default=16,
|
|
)
|
|
|
|
OCEANBASE_HNSW_EF_CONSTRUCTION: PositiveInt = Field(
|
|
description="HNSW efConstruction parameter (index build-time search width)",
|
|
default=256,
|
|
)
|
|
|
|
OCEANBASE_HNSW_EF_SEARCH: int = Field(
|
|
description="HNSW efSearch parameter (query-time search width, -1 uses server default)",
|
|
default=-1,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_POOL_SIZE: PositiveInt = Field(
|
|
description="SQLAlchemy connection pool size",
|
|
default=5,
|
|
)
|
|
|
|
OCEANBASE_VECTOR_MAX_OVERFLOW: int = Field(
|
|
description="SQLAlchemy connection pool max overflow connections",
|
|
default=10,
|
|
)
|
|
|
|
OCEANBASE_HNSW_REFRESH_THRESHOLD: int = Field(
|
|
description="Minimum number of inserted documents to trigger an automatic HNSW index refresh (0 to disable)",
|
|
default=1000,
|
|
)
|