mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-05-11 18:10:10 +08:00
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
from typing import Dict, List, Type
|
|
|
|
from .base import BaseVectorProvider
|
|
from .milvus_lite import MilvusLiteProvider
|
|
from .milvus_server import MilvusServerProvider
|
|
from .qdrant import QdrantProvider
|
|
|
|
_PROVIDER_REGISTRY: Dict[str, Dict[str, object]] = {
|
|
MilvusLiteProvider.type: {
|
|
"class": MilvusLiteProvider,
|
|
"label": MilvusLiteProvider.label,
|
|
"description": MilvusLiteProvider.description,
|
|
"enabled": MilvusLiteProvider.enabled,
|
|
"config_schema": MilvusLiteProvider.config_schema,
|
|
},
|
|
MilvusServerProvider.type: {
|
|
"class": MilvusServerProvider,
|
|
"label": MilvusServerProvider.label,
|
|
"description": MilvusServerProvider.description,
|
|
"enabled": MilvusServerProvider.enabled,
|
|
"config_schema": MilvusServerProvider.config_schema,
|
|
},
|
|
QdrantProvider.type: {
|
|
"class": QdrantProvider,
|
|
"label": QdrantProvider.label,
|
|
"description": QdrantProvider.description,
|
|
"enabled": QdrantProvider.enabled,
|
|
"config_schema": QdrantProvider.config_schema,
|
|
},
|
|
}
|
|
|
|
|
|
def list_providers() -> List[Dict[str, object]]:
|
|
return [
|
|
{
|
|
"type": type_key,
|
|
"label": meta["label"],
|
|
"description": meta.get("description"),
|
|
"enabled": meta.get("enabled", True),
|
|
"config_schema": meta.get("config_schema", []),
|
|
}
|
|
for type_key, meta in _PROVIDER_REGISTRY.items()
|
|
]
|
|
|
|
|
|
def get_provider_entry(provider_type: str) -> Dict[str, object] | None:
|
|
return _PROVIDER_REGISTRY.get(provider_type)
|
|
|
|
|
|
def get_provider_class(provider_type: str) -> Type[BaseVectorProvider] | None:
|
|
entry = get_provider_entry(provider_type)
|
|
if not entry:
|
|
return None
|
|
return entry.get("class") # type: ignore[return-value]
|
|
|
|
|
|
__all__ = [
|
|
"BaseVectorProvider",
|
|
"MilvusLiteProvider",
|
|
"MilvusServerProvider",
|
|
"QdrantProvider",
|
|
"list_providers",
|
|
"get_provider_entry",
|
|
"get_provider_class",
|
|
]
|