|
|
|
|
@ -32,6 +32,7 @@ class MilvusConfig(BaseModel):
|
|
|
|
|
batch_size: int = 100 # Batch size for operations
|
|
|
|
|
database: str = "default" # Database name
|
|
|
|
|
enable_hybrid_search: bool = False # Flag to enable hybrid search
|
|
|
|
|
analyzer_params: Optional[str] = None # Analyzer params
|
|
|
|
|
|
|
|
|
|
@model_validator(mode="before")
|
|
|
|
|
@classmethod
|
|
|
|
|
@ -58,6 +59,7 @@ class MilvusConfig(BaseModel):
|
|
|
|
|
"user": self.user,
|
|
|
|
|
"password": self.password,
|
|
|
|
|
"db_name": self.database,
|
|
|
|
|
"analyzer_params": self.analyzer_params,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -300,14 +302,19 @@ class MilvusVector(BaseVector):
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
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
|
|
|
|
|
fields.append(FieldSchema(Field.PRIMARY_KEY.value, DataType.INT64, is_primary=True, auto_id=True))
|
|
|
|
|
# Create the vector field, supports binary or float vectors
|
|
|
|
|
@ -383,5 +390,6 @@ class MilvusVectorFactory(AbstractVectorFactory):
|
|
|
|
|
password=dify_config.MILVUS_PASSWORD or "",
|
|
|
|
|
database=dify_config.MILVUS_DATABASE or "",
|
|
|
|
|
enable_hybrid_search=dify_config.MILVUS_ENABLE_HYBRID_SEARCH or False,
|
|
|
|
|
analyzer_params=dify_config.MILVUS_ANALYZER_PARAMS or "",
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
|