diff --git a/.env.template b/.env.template index 43cdedee2..ada92ad39 100644 --- a/.env.template +++ b/.env.template @@ -7,19 +7,19 @@ GRAPHISTRY_PASSWORD= SENTRY_REPORTING_URL= -GRAPH_DATABASE_PROVIDER="neo4j" # or "networkx" +GRAPH_DATABASE_PROVIDER="neo4j" # "neo4j" or "networkx" # Not needed if using networkx GRAPH_DATABASE_URL= GRAPH_DATABASE_USERNAME= GRAPH_DATABASE_PASSWORD= -VECTOR_ENGINE_PROVIDER="qdrant" # or "weaviate" or "lancedb" +VECTOR_ENGINE_PROVIDER="qdrant" # or "qdrant", "pgvector", "weaviate" or "lancedb" # Not needed if using "lancedb" VECTOR_DB_URL= VECTOR_DB_KEY= # Database provider -DB_PROVIDER="sqlite" # or "postgres" +DB_PROVIDER="sqlite" # "sqlite" or "postgres" # Database name DB_NAME=cognee_db diff --git a/README.md b/README.md index 7255bf754..c1dfdb0a9 100644 --- a/README.md +++ b/README.md @@ -190,11 +190,11 @@ Cognee supports a variety of tools and services for different operations: - **Local Setup**: By default, LanceDB runs locally with NetworkX and OpenAI. -- **Vector Stores**: Cognee supports Qdrant and Weaviate for vector storage. +- **Vector Stores**: Cognee supports LanceDB, Qdrant, PGVector and Weaviate for vector storage. - **Language Models (LLMs)**: You can use either Anyscale or Ollama as your LLM provider. -- **Graph Stores**: In addition to LanceDB, Neo4j is also supported for graph storage. +- **Graph Stores**: In addition to NetworkX, Neo4j is also supported for graph storage. - **User management**: Create individual user graphs and manage permissions diff --git a/cognee/api/client.py b/cognee/api/client.py index 6a0759cdd..7853f4d0c 100644 --- a/cognee/api/client.py +++ b/cognee/api/client.py @@ -362,7 +362,7 @@ class LLMConfig(BaseModel): apiKey: str class VectorDBConfig(BaseModel): - provider: Union[Literal["lancedb"], Literal["qdrant"], Literal["weaviate"]] + provider: Union[Literal["lancedb"], Literal["qdrant"], Literal["weaviate"], Literal["pgvector"]] url: str apiKey: str diff --git a/cognee/infrastructure/databases/vector/create_vector_engine.py b/cognee/infrastructure/databases/vector/create_vector_engine.py index 19859ae48..e3571152f 100644 --- a/cognee/infrastructure/databases/vector/create_vector_engine.py +++ b/cognee/infrastructure/databases/vector/create_vector_engine.py @@ -26,6 +26,8 @@ def create_vector_engine(config: VectorConfig, embedding_engine): api_key = config["vector_db_key"], embedding_engine = embedding_engine ) + elif config["vector_db_provider"] == "pgvector": + pass else: from .lancedb.LanceDBAdapter import LanceDBAdapter diff --git a/cognee/modules/settings/get_settings.py b/cognee/modules/settings/get_settings.py index 2cc4650ac..6b2edd55a 100644 --- a/cognee/modules/settings/get_settings.py +++ b/cognee/modules/settings/get_settings.py @@ -13,6 +13,9 @@ def get_settings(): }, { "value": "lancedb", "label": "LanceDB", + }, { + "value": "pgvector", + "label": "PGVector", }] vector_config = get_vectordb_config() diff --git a/cognee/modules/settings/save_vector_db_config.py b/cognee/modules/settings/save_vector_db_config.py index bef5f4701..b1546e17a 100644 --- a/cognee/modules/settings/save_vector_db_config.py +++ b/cognee/modules/settings/save_vector_db_config.py @@ -5,7 +5,7 @@ from cognee.infrastructure.databases.vector import get_vectordb_config class VectorDBConfig(BaseModel): url: str apiKey: str - provider: Union[Literal["lancedb"], Literal["qdrant"], Literal["weaviate"]] + provider: Union[Literal["lancedb"], Literal["qdrant"], Literal["weaviate"], Literal["pgvector"]] async def save_vector_db_config(vector_db_config: VectorDBConfig): vector_config = get_vectordb_config() diff --git a/docker-compose.yml b/docker-compose.yml index 2ef05170a..426b178a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,7 +62,7 @@ services: - cognee-network postgres: - image: postgres:latest + image: pgvector/pgvector:pg17 container_name: postgres environment: POSTGRES_USER: cognee