| 12 | self.ap = ap |
| 13 | |
| 14 | async def initialize(self): |
| 15 | kb_config = self.ap.instance_config.data.get('vdb') |
| 16 | if kb_config: |
| 17 | vdb_type = kb_config.get('use') |
| 18 | |
| 19 | if vdb_type == 'chroma': |
| 20 | from .vdbs.chroma import ChromaVectorDatabase |
| 21 | |
| 22 | self.vector_db = ChromaVectorDatabase(self.ap) |
| 23 | self.ap.logger.info('Initialized Chroma vector database backend.') |
| 24 | |
| 25 | elif vdb_type == 'qdrant': |
| 26 | from .vdbs.qdrant import QdrantVectorDatabase |
| 27 | |
| 28 | self.vector_db = QdrantVectorDatabase(self.ap) |
| 29 | self.ap.logger.info('Initialized Qdrant vector database backend.') |
| 30 | elif vdb_type == 'seekdb': |
| 31 | from .vdbs.seekdb import SeekDBVectorDatabase |
| 32 | |
| 33 | self.vector_db = SeekDBVectorDatabase(self.ap) |
| 34 | self.ap.logger.info('Initialized SeekDB vector database backend.') |
| 35 | |
| 36 | elif vdb_type == 'milvus': |
| 37 | from .vdbs.milvus import MilvusVectorDatabase |
| 38 | |
| 39 | # Get Milvus configuration |
| 40 | milvus_config = kb_config.get('milvus', {}) |
| 41 | uri = milvus_config.get('uri', './data/milvus.db') |
| 42 | token = milvus_config.get('token') |
| 43 | db_name = milvus_config.get('db_name', 'default') |
| 44 | self.vector_db = MilvusVectorDatabase(self.ap, uri=uri, token=token, db_name=db_name) |
| 45 | self.ap.logger.info('Initialized Milvus vector database backend.') |
| 46 | |
| 47 | elif vdb_type == 'pgvector': |
| 48 | from .vdbs.pgvector_db import PgVectorDatabase |
| 49 | |
| 50 | # Get pgvector configuration |
| 51 | pgvector_config = kb_config.get('pgvector', {}) |
| 52 | connection_string = pgvector_config.get('connection_string') |
| 53 | if connection_string: |
| 54 | self.vector_db = PgVectorDatabase(self.ap, connection_string=connection_string) |
| 55 | else: |
| 56 | # Use individual parameters |
| 57 | host = pgvector_config.get('host', 'localhost') |
| 58 | port = pgvector_config.get('port', 5432) |
| 59 | database = pgvector_config.get('database', 'langbot') |
| 60 | user = pgvector_config.get('user', 'postgres') |
| 61 | password = pgvector_config.get('password', 'postgres') |
| 62 | self.vector_db = PgVectorDatabase( |
| 63 | self.ap, host=host, port=port, database=database, user=user, password=password |
| 64 | ) |
| 65 | self.ap.logger.info('Initialized pgvector database backend.') |
| 66 | |
| 67 | else: |
| 68 | from .vdbs.chroma import ChromaVectorDatabase |
| 69 | |
| 70 | self.vector_db = ChromaVectorDatabase(self.ap) |
| 71 | self.ap.logger.warning('No valid vector database backend configured, defaulting to Chroma.') |