diff --git a/lightrag/kg/__init__.py b/lightrag/kg/__init__.py index 2f3eae87..18aa2796 100644 --- a/lightrag/kg/__init__.py +++ b/lightrag/kg/__init__.py @@ -134,3 +134,25 @@ STORAGES = { "FaissVectorDBStorage": ".kg.faiss_impl", "QdrantVectorDBStorage": ".kg.qdrant_impl", } + +def verify_storage_implementation( + storage_type: str, storage_name: str + ) -> None: + """Verify if storage implementation is compatible with specified storage type + + Args: + storage_type: Storage type (KV_STORAGE, GRAPH_STORAGE etc.) + storage_name: Storage implementation name + + Raises: + ValueError: If storage implementation is incompatible or missing required methods + """ + if storage_type not in STORAGE_IMPLEMENTATIONS: + raise ValueError(f"Unknown storage type: {storage_type}") + + storage_info = STORAGE_IMPLEMENTATIONS[storage_type] + if storage_name not in storage_info["implementations"]: + raise ValueError( + f"Storage implementation '{storage_name}' is not compatible with {storage_type}. " + f"Compatible implementations are: {', '.join(storage_info['implementations'])}" + ) \ No newline at end of file diff --git a/lightrag/lightrag.py b/lightrag/lightrag.py index 1a8dcf5c..ca9733ce 100644 --- a/lightrag/lightrag.py +++ b/lightrag/lightrag.py @@ -8,7 +8,7 @@ from datetime import datetime from functools import partial from typing import Any, AsyncIterator, Callable, Iterator, cast, final -from lightrag.kg import STORAGE_ENV_REQUIREMENTS, STORAGE_IMPLEMENTATIONS, STORAGES +from lightrag.kg import STORAGE_ENV_REQUIREMENTS, STORAGES, verify_storage_implementation from .base import ( BaseGraphStorage, @@ -44,6 +44,7 @@ from .utils import ( encode_string_by_tiktoken, ) +# TODO: TO REMOVE @Yannick config = configparser.ConfigParser() config.read("config.ini", "utf-8") @@ -272,7 +273,7 @@ class LightRAG: for storage_type, storage_name in storage_configs: # Verify storage implementation compatibility - self.verify_storage_implementation(storage_type, storage_name) + verify_storage_implementation(storage_type, storage_name) # Check environment variables # self.check_storage_env_vars(storage_name) @@ -1462,27 +1463,6 @@ class LightRAG: return result - def verify_storage_implementation( - self, storage_type: str, storage_name: str - ) -> None: - """Verify if storage implementation is compatible with specified storage type - - Args: - storage_type: Storage type (KV_STORAGE, GRAPH_STORAGE etc.) - storage_name: Storage implementation name - - Raises: - ValueError: If storage implementation is incompatible or missing required methods - """ - if storage_type not in STORAGE_IMPLEMENTATIONS: - raise ValueError(f"Unknown storage type: {storage_type}") - - storage_info = STORAGE_IMPLEMENTATIONS[storage_type] - if storage_name not in storage_info["implementations"]: - raise ValueError( - f"Storage implementation '{storage_name}' is not compatible with {storage_type}. " - f"Compatible implementations are: {', '.join(storage_info['implementations'])}" - ) def check_storage_env_vars(self, storage_name: str) -> None: """Check if all required environment variables for storage implementation exist