File size: 1,529 Bytes
b5d3a91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# built-in dependencies
from typing import TypedDict, Type, Dict

# project dependencies
from deepface.modules.database.types import Database
from deepface.modules.database.postgres import PostgresClient
from deepface.modules.database.pgvector import PGVectorClient
from deepface.modules.database.mongo import MongoDbClient as MongoClient
from deepface.modules.database.weaviate import WeaviateClient
from deepface.modules.database.neo4j import Neo4jClient
from deepface.modules.database.pinecone import PineconeClient


class DatabaseSpec(TypedDict):
    is_vector_db: bool
    connection_string: str
    client: Type["Database"]


database_inventory: Dict[str, DatabaseSpec] = {
    "postgres": {
        "is_vector_db": False,
        "connection_string": "DEEPFACE_POSTGRES_URI",
        "client": PostgresClient,
    },
    "mongo": {
        "is_vector_db": False,
        "connection_string": "DEEPFACE_MONGO_URI",
        "client": MongoClient,
    },
    "weaviate": {
        "is_vector_db": True,
        "connection_string": "DEEPFACE_WEAVIATE_URI",
        "client": WeaviateClient,
    },
    "neo4j": {
        "is_vector_db": True,
        "connection_string": "DEEPFACE_NEO4J_URI",
        "client": Neo4jClient,
    },
    "pgvector": {
        "is_vector_db": True,
        "connection_string": "DEEPFACE_POSTGRES_URI",
        "client": PGVectorClient,
    },
    "pinecone": {
        "is_vector_db": True,
        "connection_string": "DEEPFACE_PINECONE_API_KEY",
        "client": PineconeClient,
    },
}