refactor:adapt rag storage and add integration documents. (#2361)

This commit is contained in:
Aries-ckt
2025-02-24 12:49:36 +08:00
committed by GitHub
parent 94b51284e0
commit 22598ca79f
27 changed files with 647 additions and 343 deletions

View File

@@ -25,6 +25,11 @@ class BaseService(BaseComponent, Generic[T, REQ, RES], ABC):
"""
self._system_app = system_app
@property
def system_app(self) -> SystemApp:
"""Returns system_app."""
return self._system_app
@property
@abstractmethod
def dao(self) -> BaseDao[T, REQ, RES]:

View File

@@ -159,7 +159,7 @@ class DBSummaryClient:
vector_store_name = dbname + "_profile"
table_vector_store_config = VectorStoreConfig(name=vector_store_name)
table_vector_connector = VectorStoreConnector.from_default(
self.storage_config.vector.type,
self.storage_config.vector.get("type"),
self.embeddings,
vector_store_config=table_vector_store_config,
system_app=self.system_app,
@@ -167,7 +167,7 @@ class DBSummaryClient:
field_vector_store_name = dbname + "_profile_field"
field_vector_store_config = VectorStoreConfig(name=field_vector_store_name)
field_vector_connector = VectorStoreConnector.from_default(
self.storage_config.vector.type,
self.storage_config.vector.get("type"),
self.embeddings,
vector_store_config=field_vector_store_config,
system_app=self.system_app,

View File

@@ -8,9 +8,11 @@ from typing import Any, DefaultDict, Dict, List, Optional, Tuple, Type, cast
from dbgpt import SystemApp
from dbgpt.core import Chunk, Embeddings
from dbgpt.storage.base import IndexStoreBase, IndexStoreConfig
from dbgpt.storage.base import IndexStoreConfig
from dbgpt.storage.vector_store.base import VectorStoreConfig
from dbgpt.storage.vector_store.filters import MetadataFilters
from dbgpt_ext.storage import __knowledge_graph__ as supported_kg_store_list
from dbgpt_ext.storage import __vector_store__ as supported_vector_store_list
logger = logging.getLogger(__name__)
@@ -69,6 +71,11 @@ class VectorStoreConnector:
self._embeddings = vector_store_config.embedding_fn
config_dict = {}
storage_config = self.app_config.rag.storage
if vector_store_type in supported_vector_store_list:
config_dict = storage_config.vector
elif vector_store_type in supported_kg_store_list:
config_dict = storage_config.graph
for key in vector_store_config.to_dict().keys():
value = getattr(vector_store_config, key)
if value is not None:
@@ -268,11 +275,9 @@ class VectorStoreConnector:
return bool(connector.get(vector_store_type))
def _register(self):
from dbgpt_ext.storage import vector_store
from dbgpt_ext.storage import __all__ as rag_storages
from dbgpt_ext.storage import _select_rag_storage
for cls in vector_store.__all__:
store_cls, config_cls = getattr(vector_store, cls)
if issubclass(store_cls, IndexStoreBase) and issubclass(
config_cls, IndexStoreConfig
):
connector[cls] = (store_cls, config_cls)
for cls_name in rag_storages:
store_cls, config_cls = _select_rag_storage(cls_name)
connector[cls_name] = (store_cls, config_cls)