mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-10 21:10:59 +00:00
refactor(vector): use lazy imports for vector database backends
Move imports from module-level to inside initialize() method to avoid loading unnecessary vector database dependencies at startup.
This commit is contained in:
@@ -2,11 +2,6 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from ..core import app
|
from ..core import app
|
||||||
from .vdb import VectorDatabase, SearchType
|
from .vdb import VectorDatabase, SearchType
|
||||||
from .vdbs.chroma import ChromaVectorDatabase
|
|
||||||
from .vdbs.qdrant import QdrantVectorDatabase
|
|
||||||
from .vdbs.seekdb import SeekDBVectorDatabase
|
|
||||||
from .vdbs.milvus import MilvusVectorDatabase
|
|
||||||
from .vdbs.pgvector_db import PgVectorDatabase
|
|
||||||
|
|
||||||
|
|
||||||
class VectorDBManager:
|
class VectorDBManager:
|
||||||
@@ -22,17 +17,25 @@ class VectorDBManager:
|
|||||||
vdb_type = kb_config.get('use')
|
vdb_type = kb_config.get('use')
|
||||||
|
|
||||||
if vdb_type == 'chroma':
|
if vdb_type == 'chroma':
|
||||||
|
from .vdbs.chroma import ChromaVectorDatabase
|
||||||
|
|
||||||
self.vector_db = ChromaVectorDatabase(self.ap)
|
self.vector_db = ChromaVectorDatabase(self.ap)
|
||||||
self.ap.logger.info('Initialized Chroma vector database backend.')
|
self.ap.logger.info('Initialized Chroma vector database backend.')
|
||||||
|
|
||||||
elif vdb_type == 'qdrant':
|
elif vdb_type == 'qdrant':
|
||||||
|
from .vdbs.qdrant import QdrantVectorDatabase
|
||||||
|
|
||||||
self.vector_db = QdrantVectorDatabase(self.ap)
|
self.vector_db = QdrantVectorDatabase(self.ap)
|
||||||
self.ap.logger.info('Initialized Qdrant vector database backend.')
|
self.ap.logger.info('Initialized Qdrant vector database backend.')
|
||||||
elif vdb_type == 'seekdb':
|
elif vdb_type == 'seekdb':
|
||||||
|
from .vdbs.seekdb import SeekDBVectorDatabase
|
||||||
|
|
||||||
self.vector_db = SeekDBVectorDatabase(self.ap)
|
self.vector_db = SeekDBVectorDatabase(self.ap)
|
||||||
self.ap.logger.info('Initialized SeekDB vector database backend.')
|
self.ap.logger.info('Initialized SeekDB vector database backend.')
|
||||||
|
|
||||||
elif vdb_type == 'milvus':
|
elif vdb_type == 'milvus':
|
||||||
|
from .vdbs.milvus import MilvusVectorDatabase
|
||||||
|
|
||||||
# Get Milvus configuration
|
# Get Milvus configuration
|
||||||
milvus_config = kb_config.get('milvus', {})
|
milvus_config = kb_config.get('milvus', {})
|
||||||
uri = milvus_config.get('uri', './data/milvus.db')
|
uri = milvus_config.get('uri', './data/milvus.db')
|
||||||
@@ -42,6 +45,8 @@ class VectorDBManager:
|
|||||||
self.ap.logger.info('Initialized Milvus vector database backend.')
|
self.ap.logger.info('Initialized Milvus vector database backend.')
|
||||||
|
|
||||||
elif vdb_type == 'pgvector':
|
elif vdb_type == 'pgvector':
|
||||||
|
from .vdbs.pgvector_db import PgVectorDatabase
|
||||||
|
|
||||||
# Get pgvector configuration
|
# Get pgvector configuration
|
||||||
pgvector_config = kb_config.get('pgvector', {})
|
pgvector_config = kb_config.get('pgvector', {})
|
||||||
connection_string = pgvector_config.get('connection_string')
|
connection_string = pgvector_config.get('connection_string')
|
||||||
@@ -60,9 +65,13 @@ class VectorDBManager:
|
|||||||
self.ap.logger.info('Initialized pgvector database backend.')
|
self.ap.logger.info('Initialized pgvector database backend.')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
from .vdbs.chroma import ChromaVectorDatabase
|
||||||
|
|
||||||
self.vector_db = ChromaVectorDatabase(self.ap)
|
self.vector_db = ChromaVectorDatabase(self.ap)
|
||||||
self.ap.logger.warning('No valid vector database backend configured, defaulting to Chroma.')
|
self.ap.logger.warning('No valid vector database backend configured, defaulting to Chroma.')
|
||||||
else:
|
else:
|
||||||
|
from .vdbs.chroma import ChromaVectorDatabase
|
||||||
|
|
||||||
self.vector_db = ChromaVectorDatabase(self.ap)
|
self.vector_db = ChromaVectorDatabase(self.ap)
|
||||||
self.ap.logger.warning('No vector database backend configured, defaulting to Chroma.')
|
self.ap.logger.warning('No vector database backend configured, defaulting to Chroma.')
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1 @@
|
|||||||
"""Vector database implementations for LangBot."""
|
"""Vector database implementations for LangBot."""
|
||||||
|
|
||||||
from .chroma import ChromaVectorDatabase
|
|
||||||
from .qdrant import QdrantVectorDatabase
|
|
||||||
from .seekdb import SeekDBVectorDatabase
|
|
||||||
|
|
||||||
__all__ = ['ChromaVectorDatabase', 'QdrantVectorDatabase', 'SeekDBVectorDatabase']
|
|
||||||
|
|||||||
Reference in New Issue
Block a user