factory.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from open_webui.retrieval.vector.main import VectorDBBase
  2. from open_webui.retrieval.vector.type import VectorType
  3. from open_webui.config import VECTOR_DB, ENABLE_QDRANT_MULTITENANCY_MODE
  4. class Vector:
  5. @staticmethod
  6. def get_vector(vector_type: str) -> VectorDBBase:
  7. """
  8. get vector db instance by vector type
  9. """
  10. match vector_type:
  11. case VectorType.MILVUS:
  12. from open_webui.retrieval.vector.dbs.milvus import MilvusClient
  13. return MilvusClient()
  14. case VectorType.QDRANT:
  15. if ENABLE_QDRANT_MULTITENANCY_MODE:
  16. from open_webui.retrieval.vector.dbs.qdrant_multitenancy import (
  17. QdrantClient,
  18. )
  19. return QdrantClient()
  20. else:
  21. from open_webui.retrieval.vector.dbs.qdrant import QdrantClient
  22. return QdrantClient()
  23. case VectorType.PINECONE:
  24. from open_webui.retrieval.vector.dbs.pinecone import PineconeClient
  25. return PineconeClient()
  26. case VectorType.S3VECTOR:
  27. from open_webui.retrieval.vector.dbs.s3vector import S3VectorClient
  28. return S3VectorClient()
  29. case VectorType.OPENSEARCH:
  30. from open_webui.retrieval.vector.dbs.opensearch import OpenSearchClient
  31. return OpenSearchClient()
  32. case VectorType.PGVECTOR:
  33. from open_webui.retrieval.vector.dbs.pgvector import PgvectorClient
  34. return PgvectorClient()
  35. case VectorType.ELASTICSEARCH:
  36. from open_webui.retrieval.vector.dbs.elasticsearch import (
  37. ElasticsearchClient,
  38. )
  39. return ElasticsearchClient()
  40. case VectorType.CHROMA:
  41. from open_webui.retrieval.vector.dbs.chroma import ChromaClient
  42. return ChromaClient()
  43. case VectorType.ORACLE23AI:
  44. from open_webui.retrieval.vector.dbs.oracle23ai import Oracle23aiClient
  45. return Oracle23aiClient()
  46. case _:
  47. raise ValueError(f"Unsupported vector type: {vector_type}")
  48. VECTOR_DB_CLIENT = Vector.get_vector(VECTOR_DB)