|
|
|
|
|
|
|
|
batch_size: int = 100 # Batch size for operations |
|
|
batch_size: int = 100 # Batch size for operations |
|
|
database: str = "default" # Database name |
|
|
database: str = "default" # Database name |
|
|
enable_hybrid_search: bool = False # Flag to enable hybrid search |
|
|
enable_hybrid_search: bool = False # Flag to enable hybrid search |
|
|
|
|
|
analyzer_params: Optional[str] = None # Analyzer params |
|
|
|
|
|
|
|
|
@model_validator(mode="before") |
|
|
@model_validator(mode="before") |
|
|
@classmethod |
|
|
@classmethod |
|
|
|
|
|
|
|
|
"user": self.user, |
|
|
"user": self.user, |
|
|
"password": self.password, |
|
|
"password": self.password, |
|
|
"db_name": self.database, |
|
|
"db_name": self.database, |
|
|
|
|
|
"analyzer_params": self.analyzer_params, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create the text field, enable_analyzer will be set True to support milvus automatically |
|
|
# Create the text field, enable_analyzer will be set True to support milvus automatically |
|
|
# transfer text to sparse_vector, reference: https://milvus.io/docs/full-text-search.md |
|
|
# transfer text to sparse_vector, reference: https://milvus.io/docs/full-text-search.md |
|
|
fields.append( |
|
|
|
|
|
FieldSchema( |
|
|
|
|
|
Field.CONTENT_KEY.value, |
|
|
|
|
|
DataType.VARCHAR, |
|
|
|
|
|
max_length=65_535, |
|
|
|
|
|
enable_analyzer=self._hybrid_search_enabled, |
|
|
|
|
|
) |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
content_field_kwargs: dict[str, Any] = { |
|
|
|
|
|
"max_length": 65_535, |
|
|
|
|
|
"enable_analyzer": self._hybrid_search_enabled, |
|
|
|
|
|
} |
|
|
|
|
|
if ( |
|
|
|
|
|
self._hybrid_search_enabled |
|
|
|
|
|
and self._client_config.analyzer_params is not None |
|
|
|
|
|
and self._client_config.analyzer_params.strip() |
|
|
|
|
|
): |
|
|
|
|
|
content_field_kwargs["analyzer_params"] = self._client_config.analyzer_params |
|
|
|
|
|
|
|
|
|
|
|
fields.append(FieldSchema(Field.CONTENT_KEY.value, DataType.VARCHAR, **content_field_kwargs)) |
|
|
|
|
|
|
|
|
# Create the primary key field |
|
|
# Create the primary key field |
|
|
fields.append(FieldSchema(Field.PRIMARY_KEY.value, DataType.INT64, is_primary=True, auto_id=True)) |
|
|
fields.append(FieldSchema(Field.PRIMARY_KEY.value, DataType.INT64, is_primary=True, auto_id=True)) |
|
|
# Create the vector field, supports binary or float vectors |
|
|
# Create the vector field, supports binary or float vectors |
|
|
|
|
|
|
|
|
password=dify_config.MILVUS_PASSWORD or "", |
|
|
password=dify_config.MILVUS_PASSWORD or "", |
|
|
database=dify_config.MILVUS_DATABASE or "", |
|
|
database=dify_config.MILVUS_DATABASE or "", |
|
|
enable_hybrid_search=dify_config.MILVUS_ENABLE_HYBRID_SEARCH or False, |
|
|
enable_hybrid_search=dify_config.MILVUS_ENABLE_HYBRID_SEARCH or False, |
|
|
|
|
|
analyzer_params=dify_config.MILVUS_ANALYZER_PARAMS or "", |
|
|
), |
|
|
), |
|
|
) |
|
|
) |