Merge branch 'dev' into chore/update-cognee-ui-cli-mcp-docker-image
This commit is contained in:
commit
6aeaa6877a
22 changed files with 889 additions and 2497 deletions
|
|
@ -16,7 +16,7 @@
|
|||
STRUCTURED_OUTPUT_FRAMEWORK="instructor"
|
||||
|
||||
LLM_API_KEY="your_api_key"
|
||||
LLM_MODEL="openai/gpt-4o-mini"
|
||||
LLM_MODEL="openai/gpt-5-mini"
|
||||
LLM_PROVIDER="openai"
|
||||
LLM_ENDPOINT=""
|
||||
LLM_API_VERSION=""
|
||||
|
|
@ -36,7 +36,7 @@ EMBEDDING_MAX_TOKENS=8191
|
|||
|
||||
# If using BAML structured output these env variables will be used
|
||||
BAML_LLM_PROVIDER=openai
|
||||
BAML_LLM_MODEL="gpt-4o-mini"
|
||||
BAML_LLM_MODEL="gpt-5-mini"
|
||||
BAML_LLM_ENDPOINT=""
|
||||
BAML_LLM_API_KEY="your_api_key"
|
||||
BAML_LLM_API_VERSION=""
|
||||
|
|
|
|||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -58,7 +58,7 @@ body:
|
|||
- Python version: [e.g. 3.9.0]
|
||||
- Cognee version: [e.g. 0.1.0]
|
||||
- LLM Provider: [e.g. OpenAI, Ollama]
|
||||
- Database: [e.g. Neo4j, FalkorDB]
|
||||
- Database: [e.g. Neo4j]
|
||||
validations:
|
||||
required: true
|
||||
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ RUN apt-get update && apt-get install -y \
|
|||
libpq-dev \
|
||||
git \
|
||||
curl \
|
||||
cmake \
|
||||
clang \
|
||||
build-essential \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
|
|
|||
|
|
@ -76,6 +76,9 @@ Get started quickly with a Google Colab <a href="https://colab.research.google.
|
|||
|
||||
## About cognee
|
||||
|
||||
cognee works locally and stores your data on your device.
|
||||
Our hosted solution is just our deployment of OSS cognee on Modal, with the goal of making development and productionization easier.
|
||||
|
||||
Self-hosted package:
|
||||
|
||||
- Interconnects any kind of documents: past conversations, files, images, and audio transcriptions
|
||||
|
|
|
|||
|
|
@ -38,4 +38,4 @@ allow-direct-references = true
|
|||
|
||||
[project.scripts]
|
||||
cognee = "src:main"
|
||||
cognee-mcp = "src:main_mcp"
|
||||
cognee-mcp = "src:main_mcp"
|
||||
|
|
|
|||
|
|
@ -50,26 +50,26 @@ class GraphConfig(BaseSettings):
|
|||
# Model validator updates graph_filename and path dynamically after class creation based on current database provider
|
||||
# If no specific graph_filename or path are provided
|
||||
@pydantic.model_validator(mode="after")
|
||||
def fill_derived(cls, values):
|
||||
provider = values.graph_database_provider.lower()
|
||||
def fill_derived(self):
|
||||
provider = self.graph_database_provider.lower()
|
||||
base_config = get_base_config()
|
||||
|
||||
# Set default filename if no filename is provided
|
||||
if not values.graph_filename:
|
||||
values.graph_filename = f"cognee_graph_{provider}"
|
||||
if not self.graph_filename:
|
||||
self.graph_filename = f"cognee_graph_{provider}"
|
||||
|
||||
# Handle graph file path
|
||||
if values.graph_file_path:
|
||||
if self.graph_file_path:
|
||||
# Check if absolute path is provided
|
||||
values.graph_file_path = ensure_absolute_path(
|
||||
os.path.join(values.graph_file_path, values.graph_filename)
|
||||
self.graph_file_path = ensure_absolute_path(
|
||||
os.path.join(self.graph_file_path, self.graph_filename)
|
||||
)
|
||||
else:
|
||||
# Default path
|
||||
databases_directory_path = os.path.join(base_config.system_root_directory, "databases")
|
||||
values.graph_file_path = os.path.join(databases_directory_path, values.graph_filename)
|
||||
self.graph_file_path = os.path.join(databases_directory_path, self.graph_filename)
|
||||
|
||||
return values
|
||||
return self
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -44,16 +44,14 @@ def create_graph_engine(
|
|||
Parameters:
|
||||
-----------
|
||||
|
||||
- graph_database_provider: The type of graph database provider to use (e.g., neo4j,
|
||||
falkordb, kuzu).
|
||||
- graph_database_url: The URL for the graph database instance. Required for neo4j
|
||||
and falkordb providers.
|
||||
- graph_database_provider: The type of graph database provider to use (e.g., neo4j, falkor, kuzu).
|
||||
- graph_database_url: The URL for the graph database instance. Required for neo4j and falkordb providers.
|
||||
- graph_database_username: The username for authentication with the graph database.
|
||||
Required for neo4j provider.
|
||||
- graph_database_password: The password for authentication with the graph database.
|
||||
Required for neo4j provider.
|
||||
- graph_database_port: The port number for the graph database connection. Required
|
||||
for the falkordb provider.
|
||||
for the falkordb provider
|
||||
- graph_file_path: The filesystem path to the graph file. Required for the kuzu
|
||||
provider.
|
||||
|
||||
|
|
@ -86,21 +84,6 @@ def create_graph_engine(
|
|||
graph_database_name=graph_database_name or None,
|
||||
)
|
||||
|
||||
elif graph_database_provider == "falkordb":
|
||||
if not (graph_database_url and graph_database_port):
|
||||
raise EnvironmentError("Missing required FalkorDB credentials.")
|
||||
|
||||
from cognee.infrastructure.databases.vector.embeddings import get_embedding_engine
|
||||
from cognee.infrastructure.databases.hybrid.falkordb.FalkorDBAdapter import FalkorDBAdapter
|
||||
|
||||
embedding_engine = get_embedding_engine()
|
||||
|
||||
return FalkorDBAdapter(
|
||||
database_url=graph_database_url,
|
||||
database_port=graph_database_port,
|
||||
embedding_engine=embedding_engine,
|
||||
)
|
||||
|
||||
elif graph_database_provider == "kuzu":
|
||||
if not graph_file_path:
|
||||
raise EnvironmentError("Missing required Kuzu database path.")
|
||||
|
|
@ -179,5 +162,5 @@ def create_graph_engine(
|
|||
|
||||
raise EnvironmentError(
|
||||
f"Unsupported graph database provider: {graph_database_provider}. "
|
||||
f"Supported providers are: {', '.join(list(supported_databases.keys()) + ['neo4j', 'falkordb', 'kuzu', 'kuzu-remote', 'memgraph', 'neptune', 'neptune_analytics'])}"
|
||||
f"Supported providers are: {', '.join(list(supported_databases.keys()) + ['neo4j', 'kuzu', 'kuzu-remote', 'memgraph', 'neptune', 'neptune_analytics'])}"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,29 @@ class KuzuAdapter(GraphDBInterface):
|
|||
|
||||
def _initialize_connection(self) -> None:
|
||||
"""Initialize the Kuzu database connection and schema."""
|
||||
|
||||
def _install_json_extension():
|
||||
"""
|
||||
Function handles installing of the json extension for the current Kuzu version.
|
||||
This has to be done with an empty graph db before connecting to an existing database otherwise
|
||||
missing json extension errors will be raised.
|
||||
"""
|
||||
try:
|
||||
with tempfile.NamedTemporaryFile(mode="w", delete=True) as temp_file:
|
||||
temp_graph_file = temp_file.name
|
||||
tmp_db = Database(
|
||||
temp_graph_file,
|
||||
buffer_pool_size=2048 * 1024 * 1024, # 2048MB buffer pool
|
||||
max_db_size=4096 * 1024 * 1024,
|
||||
)
|
||||
tmp_db.init_database()
|
||||
connection = Connection(tmp_db)
|
||||
connection.execute("INSTALL JSON;")
|
||||
except Exception as e:
|
||||
logger.info(f"JSON extension already installed or not needed: {e}")
|
||||
|
||||
_install_json_extension()
|
||||
|
||||
try:
|
||||
if "s3://" in self.db_path:
|
||||
with tempfile.NamedTemporaryFile(mode="w", delete=False) as temp_file:
|
||||
|
|
@ -109,11 +132,6 @@ class KuzuAdapter(GraphDBInterface):
|
|||
self.db.init_database()
|
||||
self.connection = Connection(self.db)
|
||||
|
||||
try:
|
||||
self.connection.execute("INSTALL JSON;")
|
||||
except Exception as e:
|
||||
logger.info(f"JSON extension already installed or not needed: {e}")
|
||||
|
||||
try:
|
||||
self.connection.execute("LOAD EXTENSION JSON;")
|
||||
logger.info("Loaded JSON extension")
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -23,14 +23,14 @@ class RelationalConfig(BaseSettings):
|
|||
model_config = SettingsConfigDict(env_file=".env", extra="allow")
|
||||
|
||||
@pydantic.model_validator(mode="after")
|
||||
def fill_derived(cls, values):
|
||||
def fill_derived(self):
|
||||
# Set file path based on graph database provider if no file path is provided
|
||||
if not values.db_path:
|
||||
if not self.db_path:
|
||||
base_config = get_base_config()
|
||||
databases_directory_path = os.path.join(base_config.system_root_directory, "databases")
|
||||
values.db_path = databases_directory_path
|
||||
self.db_path = databases_directory_path
|
||||
|
||||
return values
|
||||
return self
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -30,21 +30,21 @@ class VectorConfig(BaseSettings):
|
|||
model_config = SettingsConfigDict(env_file=".env", extra="allow")
|
||||
|
||||
@pydantic.model_validator(mode="after")
|
||||
def validate_paths(cls, values):
|
||||
def validate_paths(self):
|
||||
base_config = get_base_config()
|
||||
|
||||
# If vector_db_url is provided and is not a path skip checking if path is absolute (as it can also be a url)
|
||||
if values.vector_db_url and Path(values.vector_db_url).exists():
|
||||
if self.vector_db_url and Path(self.vector_db_url).exists():
|
||||
# Relative path to absolute
|
||||
values.vector_db_url = ensure_absolute_path(
|
||||
values.vector_db_url,
|
||||
self.vector_db_url = ensure_absolute_path(
|
||||
self.vector_db_url,
|
||||
)
|
||||
elif not values.vector_db_url:
|
||||
elif not self.vector_db_url:
|
||||
# Default path
|
||||
databases_directory_path = os.path.join(base_config.system_root_directory, "databases")
|
||||
values.vector_db_url = os.path.join(databases_directory_path, "cognee.lancedb")
|
||||
self.vector_db_url = os.path.join(databases_directory_path, "cognee.lancedb")
|
||||
|
||||
return values
|
||||
return self
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@ def create_vector_engine(
|
|||
for each provider, raising an EnvironmentError if any are missing, or ImportError if the
|
||||
ChromaDB package is not installed.
|
||||
|
||||
Supported providers include: pgvector, FalkorDB, ChromaDB, and
|
||||
LanceDB.
|
||||
Supported providers include: pgvector, ChromaDB, and LanceDB.
|
||||
|
||||
Parameters:
|
||||
-----------
|
||||
|
|
@ -79,18 +78,6 @@ def create_vector_engine(
|
|||
embedding_engine,
|
||||
)
|
||||
|
||||
elif vector_db_provider == "falkordb":
|
||||
if not (vector_db_url and vector_db_port):
|
||||
raise EnvironmentError("Missing requred FalkorDB credentials!")
|
||||
|
||||
from ..hybrid.falkordb.FalkorDBAdapter import FalkorDBAdapter
|
||||
|
||||
return FalkorDBAdapter(
|
||||
database_url=vector_db_url,
|
||||
database_port=vector_db_port,
|
||||
embedding_engine=embedding_engine,
|
||||
)
|
||||
|
||||
elif vector_db_provider == "chromadb":
|
||||
try:
|
||||
import chromadb
|
||||
|
|
|
|||
|
|
@ -125,41 +125,42 @@ class PGVectorAdapter(SQLAlchemyAdapter, VectorDBInterface):
|
|||
data_point_types = get_type_hints(DataPoint)
|
||||
vector_size = self.embedding_engine.get_vector_size()
|
||||
|
||||
async with self.VECTOR_DB_LOCK:
|
||||
if not await self.has_collection(collection_name):
|
||||
if not await self.has_collection(collection_name):
|
||||
async with self.VECTOR_DB_LOCK:
|
||||
if not await self.has_collection(collection_name):
|
||||
|
||||
class PGVectorDataPoint(Base):
|
||||
"""
|
||||
Represent a point in a vector data space with associated data and vector representation.
|
||||
class PGVectorDataPoint(Base):
|
||||
"""
|
||||
Represent a point in a vector data space with associated data and vector representation.
|
||||
|
||||
This class inherits from Base and is associated with a database table defined by
|
||||
__tablename__. It maintains the following public methods and instance variables:
|
||||
This class inherits from Base and is associated with a database table defined by
|
||||
__tablename__. It maintains the following public methods and instance variables:
|
||||
|
||||
- __init__(self, id, payload, vector): Initializes a new PGVectorDataPoint instance.
|
||||
- __init__(self, id, payload, vector): Initializes a new PGVectorDataPoint instance.
|
||||
|
||||
Instance variables:
|
||||
- id: Identifier for the data point, defined by data_point_types.
|
||||
- payload: JSON data associated with the data point.
|
||||
- vector: Vector representation of the data point, with size defined by vector_size.
|
||||
"""
|
||||
Instance variables:
|
||||
- id: Identifier for the data point, defined by data_point_types.
|
||||
- payload: JSON data associated with the data point.
|
||||
- vector: Vector representation of the data point, with size defined by vector_size.
|
||||
"""
|
||||
|
||||
__tablename__ = collection_name
|
||||
__table_args__ = {"extend_existing": True}
|
||||
# PGVector requires one column to be the primary key
|
||||
id: Mapped[data_point_types["id"]] = mapped_column(primary_key=True)
|
||||
payload = Column(JSON)
|
||||
vector = Column(self.Vector(vector_size))
|
||||
__tablename__ = collection_name
|
||||
__table_args__ = {"extend_existing": True}
|
||||
# PGVector requires one column to be the primary key
|
||||
id: Mapped[data_point_types["id"]] = mapped_column(primary_key=True)
|
||||
payload = Column(JSON)
|
||||
vector = Column(self.Vector(vector_size))
|
||||
|
||||
def __init__(self, id, payload, vector):
|
||||
self.id = id
|
||||
self.payload = payload
|
||||
self.vector = vector
|
||||
def __init__(self, id, payload, vector):
|
||||
self.id = id
|
||||
self.payload = payload
|
||||
self.vector = vector
|
||||
|
||||
async with self.engine.begin() as connection:
|
||||
if len(Base.metadata.tables.keys()) > 0:
|
||||
await connection.run_sync(
|
||||
Base.metadata.create_all, tables=[PGVectorDataPoint.__table__]
|
||||
)
|
||||
async with self.engine.begin() as connection:
|
||||
if len(Base.metadata.tables.keys()) > 0:
|
||||
await connection.run_sync(
|
||||
Base.metadata.create_all, tables=[PGVectorDataPoint.__table__]
|
||||
)
|
||||
|
||||
@retry(
|
||||
retry=retry_if_exception_type(DeadlockDetectedError),
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class LLMConfig(BaseSettings):
|
|||
|
||||
structured_output_framework: str = "instructor"
|
||||
llm_provider: str = "openai"
|
||||
llm_model: str = "openai/gpt-4o-mini"
|
||||
llm_model: str = "openai/gpt-5-mini"
|
||||
llm_endpoint: str = ""
|
||||
llm_api_key: Optional[str] = None
|
||||
llm_api_version: Optional[str] = None
|
||||
|
|
@ -48,7 +48,7 @@ class LLMConfig(BaseSettings):
|
|||
llm_max_completion_tokens: int = 16384
|
||||
|
||||
baml_llm_provider: str = "openai"
|
||||
baml_llm_model: str = "gpt-4o-mini"
|
||||
baml_llm_model: str = "gpt-5-mini"
|
||||
baml_llm_endpoint: str = ""
|
||||
baml_llm_api_key: Optional[str] = None
|
||||
baml_llm_temperature: float = 0.0
|
||||
|
|
|
|||
|
|
@ -288,7 +288,6 @@ class SummarizedCode(BaseModel):
|
|||
class GraphDBType(Enum):
|
||||
NETWORKX = auto()
|
||||
NEO4J = auto()
|
||||
FALKORDB = auto()
|
||||
KUZU = auto()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,174 +0,0 @@
|
|||
import os
|
||||
import cognee
|
||||
import pathlib
|
||||
from cognee.infrastructure.files.storage import get_storage_config
|
||||
from cognee.modules.search.operations import get_history
|
||||
from cognee.modules.users.methods import get_default_user
|
||||
from cognee.shared.logging_utils import get_logger
|
||||
from cognee.modules.search.types import SearchType
|
||||
|
||||
logger = get_logger()
|
||||
|
||||
|
||||
async def check_falkordb_connection():
|
||||
"""Check if FalkorDB is available at localhost:6379"""
|
||||
try:
|
||||
from falkordb import FalkorDB
|
||||
|
||||
client = FalkorDB(host="localhost", port=6379)
|
||||
# Try to list graphs to check connection
|
||||
client.list_graphs()
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.warning(f"FalkorDB not available at localhost:6379: {e}")
|
||||
return False
|
||||
|
||||
|
||||
async def main():
|
||||
# Check if FalkorDB is available
|
||||
if not await check_falkordb_connection():
|
||||
print("⚠️ FalkorDB is not available at localhost:6379")
|
||||
print(" To run this test, start FalkorDB server:")
|
||||
print(" docker run -p 6379:6379 falkordb/falkordb:latest")
|
||||
print(" Skipping FalkorDB test...")
|
||||
return
|
||||
|
||||
print("✅ FalkorDB connection successful, running test...")
|
||||
|
||||
# Configure FalkorDB as the graph database provider
|
||||
cognee.config.set_graph_db_config(
|
||||
{
|
||||
"graph_database_url": "localhost", # FalkorDB URL (using Redis protocol)
|
||||
"graph_database_port": 6379,
|
||||
"graph_database_provider": "falkordb",
|
||||
}
|
||||
)
|
||||
|
||||
# Configure FalkorDB as the vector database provider too since it's a hybrid adapter
|
||||
cognee.config.set_vector_db_config(
|
||||
{
|
||||
"vector_db_url": "localhost",
|
||||
"vector_db_port": 6379,
|
||||
"vector_db_provider": "falkordb",
|
||||
}
|
||||
)
|
||||
|
||||
data_directory_path = str(
|
||||
pathlib.Path(
|
||||
os.path.join(pathlib.Path(__file__).parent, ".data_storage/test_falkordb")
|
||||
).resolve()
|
||||
)
|
||||
cognee.config.data_root_directory(data_directory_path)
|
||||
cognee_directory_path = str(
|
||||
pathlib.Path(
|
||||
os.path.join(pathlib.Path(__file__).parent, ".cognee_system/test_falkordb")
|
||||
).resolve()
|
||||
)
|
||||
cognee.config.system_root_directory(cognee_directory_path)
|
||||
|
||||
await cognee.prune.prune_data()
|
||||
await cognee.prune.prune_system(metadata=True)
|
||||
|
||||
dataset_name = "artificial_intelligence"
|
||||
|
||||
ai_text_file_path = os.path.join(
|
||||
pathlib.Path(__file__).parent, "test_data/artificial-intelligence.pdf"
|
||||
)
|
||||
await cognee.add([ai_text_file_path], dataset_name)
|
||||
|
||||
text = """A large language model (LLM) is a language model notable for its ability to achieve general-purpose language generation and other natural language processing tasks such as classification. LLMs acquire these abilities by learning statistical relationships from text documents during a computationally intensive self-supervised and semi-supervised training process. LLMs can be used for text generation, a form of generative AI, by taking an input text and repeatedly predicting the next token or word.
|
||||
LLMs are artificial neural networks. The largest and most capable, as of March 2024, are built with a decoder-only transformer-based architecture while some recent implementations are based on other architectures, such as recurrent neural network variants and Mamba (a state space model).
|
||||
Up to 2020, fine tuning was the only way a model could be adapted to be able to accomplish specific tasks. Larger sized models, such as GPT-3, however, can be prompt-engineered to achieve similar results.[6] They are thought to acquire knowledge about syntax, semantics and "ontology" inherent in human language corpora, but also inaccuracies and biases present in the corpora.
|
||||
Some notable LLMs are OpenAI's GPT series of models (e.g., GPT-3.5 and GPT-4, used in ChatGPT and Microsoft Copilot), Google's PaLM and Gemini (the latter of which is currently used in the chatbot of the same name), xAI's Grok, Meta's LLaMA family of open-source models, Anthropic's Claude models, Mistral AI's open source models, and Databricks' open source DBRX.
|
||||
"""
|
||||
|
||||
await cognee.add([text], dataset_name)
|
||||
|
||||
await cognee.cognify([dataset_name])
|
||||
|
||||
from cognee.infrastructure.databases.vector import get_vector_engine
|
||||
|
||||
vector_engine = get_vector_engine()
|
||||
random_node = (await vector_engine.search("entity.name", "AI"))[0]
|
||||
random_node_name = random_node.payload["text"]
|
||||
|
||||
search_results = await cognee.search(
|
||||
query_type=SearchType.INSIGHTS, query_text=random_node_name
|
||||
)
|
||||
assert len(search_results) != 0, "The search results list is empty."
|
||||
print("\n\nExtracted sentences are:\n")
|
||||
for result in search_results:
|
||||
print(f"{result}\n")
|
||||
|
||||
search_results = await cognee.search(query_type=SearchType.CHUNKS, query_text=random_node_name)
|
||||
assert len(search_results) != 0, "The search results list is empty."
|
||||
print("\n\nExtracted chunks are:\n")
|
||||
for result in search_results:
|
||||
print(f"{result}\n")
|
||||
|
||||
search_results = await cognee.search(
|
||||
query_type=SearchType.SUMMARIES, query_text=random_node_name
|
||||
)
|
||||
assert len(search_results) != 0, "Query related summaries don't exist."
|
||||
print("\nExtracted summaries are:\n")
|
||||
for result in search_results:
|
||||
print(f"{result}\n")
|
||||
|
||||
user = await get_default_user()
|
||||
history = await get_history(user.id)
|
||||
|
||||
assert len(history) == 6, "Search history is not correct."
|
||||
|
||||
# Assert local data files are cleaned properly
|
||||
await cognee.prune.prune_data()
|
||||
data_root_directory = get_storage_config()["data_root_directory"]
|
||||
assert not os.path.isdir(data_root_directory), "Local data files are not deleted"
|
||||
|
||||
# Assert relational, vector and graph databases have been cleaned properly
|
||||
await cognee.prune.prune_system(metadata=True)
|
||||
|
||||
# For FalkorDB vector engine, check if collections are empty
|
||||
# Since FalkorDB is a hybrid adapter, we can check if the graph is empty
|
||||
# as the vector data is stored in the same graph
|
||||
if hasattr(vector_engine, "driver"):
|
||||
# This is FalkorDB - check if graphs exist
|
||||
collections = vector_engine.driver.list_graphs()
|
||||
# The graph should be deleted, so either no graphs or empty graph
|
||||
if vector_engine.graph_name in collections:
|
||||
# Graph exists but should be empty
|
||||
vector_graph_data = await vector_engine.get_graph_data()
|
||||
vector_nodes, vector_edges = vector_graph_data
|
||||
assert len(vector_nodes) == 0 and len(vector_edges) == 0, (
|
||||
"FalkorDB vector database is not empty"
|
||||
)
|
||||
else:
|
||||
# Fallback for other vector engines like LanceDB
|
||||
connection = await vector_engine.get_connection()
|
||||
collection_names = await connection.table_names()
|
||||
assert len(collection_names) == 0, "Vector database is not empty"
|
||||
|
||||
from cognee.infrastructure.databases.relational import get_relational_engine
|
||||
|
||||
assert not os.path.exists(get_relational_engine().db_path), (
|
||||
"SQLite relational database is not empty"
|
||||
)
|
||||
|
||||
# For FalkorDB, check if the graph database is empty
|
||||
from cognee.infrastructure.databases.graph import get_graph_engine
|
||||
|
||||
graph_engine = get_graph_engine()
|
||||
graph_data = await graph_engine.get_graph_data()
|
||||
nodes, edges = graph_data
|
||||
assert len(nodes) == 0 and len(edges) == 0, "FalkorDB graph database is not empty"
|
||||
|
||||
print("🎉 FalkorDB test completed successfully!")
|
||||
print(" ✓ Data ingestion worked")
|
||||
print(" ✓ Cognify processing worked")
|
||||
print(" ✓ Search operations worked")
|
||||
print(" ✓ Cleanup worked")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import asyncio
|
||||
|
||||
asyncio.run(main(), debug=True)
|
||||
|
|
@ -95,7 +95,6 @@ mistral = ["mistral-common>=1.5.2,<2"]
|
|||
anthropic = ["anthropic>=0.26.1,<0.27"]
|
||||
deepeval = ["deepeval>=2.0.1,<3"]
|
||||
posthog = ["posthog>=3.5.0,<4"]
|
||||
falkordb = ["falkordb>=1.0.9,<2.0.0"]
|
||||
groq = ["groq>=0.8.0,<1.0.0"]
|
||||
chromadb = [
|
||||
"chromadb>=0.3.0,<0.7",
|
||||
|
|
|
|||
|
|
@ -96,17 +96,6 @@ services:
|
|||
networks:
|
||||
- cognee-network
|
||||
|
||||
falkordb:
|
||||
image: falkordb/falkordb:edge
|
||||
container_name: falkordb
|
||||
profiles:
|
||||
- falkordb
|
||||
ports:
|
||||
- 6379:6379
|
||||
- 3001:3000
|
||||
networks:
|
||||
- cognee-network
|
||||
|
||||
chromadb:
|
||||
image: chromadb/chroma:0.6.3
|
||||
container_name: chromadb
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
import os
|
||||
import pathlib
|
||||
import asyncio
|
||||
import cognee
|
||||
from cognee.modules.search.types import SearchType
|
||||
|
||||
|
||||
async def main():
|
||||
"""
|
||||
Example script demonstrating how to use Cognee with FalkorDB
|
||||
|
||||
This example:
|
||||
1. Configures Cognee to use FalkorDB as graph database
|
||||
2. Sets up data directories
|
||||
3. Adds sample data to Cognee
|
||||
4. Processes (cognifies) the data
|
||||
5. Performs different types of searches
|
||||
"""
|
||||
# Configure FalkorDB as the graph database provider
|
||||
cognee.config.set_graph_db_config(
|
||||
{
|
||||
"graph_database_url": "localhost", # FalkorDB URL (using Redis protocol)
|
||||
"graph_database_port": 6379,
|
||||
"graph_database_provider": "falkordb",
|
||||
}
|
||||
)
|
||||
|
||||
# Set up data directories for storing documents and system files
|
||||
# You should adjust these paths to your needs
|
||||
current_dir = pathlib.Path(__file__).parent
|
||||
data_directory_path = str(current_dir / "data_storage")
|
||||
cognee.config.data_root_directory(data_directory_path)
|
||||
|
||||
cognee_directory_path = str(current_dir / "cognee_system")
|
||||
cognee.config.system_root_directory(cognee_directory_path)
|
||||
|
||||
# Clean any existing data (optional)
|
||||
await cognee.prune.prune_data()
|
||||
await cognee.prune.prune_system(metadata=True)
|
||||
|
||||
# Create a dataset
|
||||
dataset_name = "falkordb_example"
|
||||
|
||||
# Add sample text to the dataset
|
||||
sample_text = """FalkorDB is a graph database that evolved from RedisGraph.
|
||||
It is focused on providing high-performance graph operations.
|
||||
FalkorDB uses sparse adjacency matrices to represent the graph data structure.
|
||||
It supports the Cypher query language for querying graph data.
|
||||
FalkorDB can be integrated with vector search capabilities for AI applications.
|
||||
It provides a Redis module, allowing users to leverage Redis's features alongside graph capabilities."""
|
||||
|
||||
# Add the sample text to the dataset
|
||||
await cognee.add([sample_text], dataset_name)
|
||||
|
||||
# Process the added document to extract knowledge
|
||||
await cognee.cognify([dataset_name])
|
||||
|
||||
# Now let's perform some searches
|
||||
# 1. Search for insights related to "FalkorDB"
|
||||
insights_results = await cognee.search(query_type=SearchType.INSIGHTS, query_text="FalkorDB")
|
||||
print("\nInsights about FalkorDB:")
|
||||
for result in insights_results:
|
||||
print(f"- {result}")
|
||||
|
||||
# 2. Search for text chunks related to "graph database"
|
||||
chunks_results = await cognee.search(
|
||||
query_type=SearchType.CHUNKS, query_text="graph database", datasets=[dataset_name]
|
||||
)
|
||||
print("\nChunks about graph database:")
|
||||
for result in chunks_results:
|
||||
print(f"- {result}")
|
||||
|
||||
# 3. Get graph completion related to databases
|
||||
graph_completion_results = await cognee.search(
|
||||
query_type=SearchType.GRAPH_COMPLETION, query_text="database"
|
||||
)
|
||||
print("\nGraph completion for databases:")
|
||||
for result in graph_completion_results:
|
||||
print(f"- {result}")
|
||||
|
||||
# Clean up (optional)
|
||||
# await cognee.prune.prune_data()
|
||||
# await cognee.prune.prune_system(metadata=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
79
poetry.lock
generated
79
poetry.lock
generated
|
|
@ -4414,49 +4414,50 @@ adal = ["adal (>=1.0.2)"]
|
|||
|
||||
[[package]]
|
||||
name = "kuzu"
|
||||
version = "0.11.0"
|
||||
version = "0.11.2"
|
||||
description = "Highly scalable, extremely fast, easy-to-use embeddable graph database"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "kuzu-0.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f3e82486210307b6898e081cde0c2a05640dd91f14fd4f16754216a4cee578f5"},
|
||||
{file = "kuzu-0.11.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:323125c20a66982fd74805bd5e98c20b215d8c8dfe2517d80f558aad0e634f1d"},
|
||||
{file = "kuzu-0.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:188bf0d25d747565339fac78e3dd8dc094f2300dff9607b0a2dedb6d9d169d03"},
|
||||
{file = "kuzu-0.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10f52521896fb4f3ecb3a6b44c47a041328f59c775e91e45136d7c82b87870cd"},
|
||||
{file = "kuzu-0.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:2f471d7d80210900bf1e09adae9321a0143f863ca874fda478ddc7466693bc5c"},
|
||||
{file = "kuzu-0.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f20ea8c608bb40d6e15d32538a903ace177464c90aa88ee542e99814bf78881"},
|
||||
{file = "kuzu-0.11.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:df94c3beaf57d2c3ac84ce4087fc210c09e9ff5b5c9863a496b274bbc82f0a3f"},
|
||||
{file = "kuzu-0.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0457283aaf75bcd7912dcdf0292adaabdd615db654b09435387637a70cbae28d"},
|
||||
{file = "kuzu-0.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a474c74aa7953cca399862dce2098fc5bbc94f4d83b04d891688fe6fb2e14c4"},
|
||||
{file = "kuzu-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:139c0b52cc2037ee03243335f37734fc30fe20b8d94b7dea66a1ee8ad44e5b16"},
|
||||
{file = "kuzu-0.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f200955e3af6a64ecb3f8db24e88d2620e4f04cfe958f580d614d6fca4b7b73d"},
|
||||
{file = "kuzu-0.11.0-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:6de9af1886401cdec89e41bbe67fdd37b562bdc39ad81b4cc62c4c7e5703e23e"},
|
||||
{file = "kuzu-0.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3843f4107c287c9759d34e0082feea84d8f48366033ea191a58518baf3a9e2d8"},
|
||||
{file = "kuzu-0.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3c0bdb0cbc7be83eb3e5e6c999e8c6add4cb88d26468c67205b3062fe01af859"},
|
||||
{file = "kuzu-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a74660da390adb1996b5c8305e442304bfdb84b40424f2b045a7d4977ae22f34"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d3b928a6646aad0a4284a07918140761f70626e936976c7bc9a1504395029353"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313-macosx_11_0_x86_64.whl", hash = "sha256:5a995172d99e961fe2ff073722a447d335dca608d566fc924520f1bfea4f97cf"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:836af97ba5159a59e55cb336869f45987d74d9875bd97caae31af5244f8b99e8"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ee8559686eac9f874d125708f9a83f1dca09bb165e5b838c6c0ad521cce68ee"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:7ae94e8add6b5cc25f3cf2a38a07f3c4a4acb9b636078be8a53ac3e8f736d6ba"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3667b430de2efbc96e45878e460851d1aa8aa94be96fa5d4d82186f19a95889a"},
|
||||
{file = "kuzu-0.11.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4162d80861e606f4d82d6e559fc11c0d7efa7725a6dc811c61bcd266a2963705"},
|
||||
{file = "kuzu-0.11.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7da89fb506be064ebb7d3954f9ffb6e9c0f9ef9c10f37be59a347a0bc48efd28"},
|
||||
{file = "kuzu-0.11.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b17cc92a925073a3bbd65e05af59a9c0c931e1573755d7ad340705059d849af7"},
|
||||
{file = "kuzu-0.11.0-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:d50815321f0de1f7fe9601fa26e22d8b0a3b09e7ec06357736fee86a1ebe793a"},
|
||||
{file = "kuzu-0.11.0-cp37-cp37m-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:094bbd66503f949532cb52dd26d0b47b9299b61d1ff375875d2c072507717844"},
|
||||
{file = "kuzu-0.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7ae84eb05292db94e5b05e59886084d6a27aaa65d454e643150f10e3fcfa494e"},
|
||||
{file = "kuzu-0.11.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:96a273b818344cda9215fd0ef5b2f044bc6f663301feb9e5ddeae9c0efee3141"},
|
||||
{file = "kuzu-0.11.0-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1851e51dc4a9eddba6411fda5a5a05d8d33b7c9984018a7da024530638b8de4c"},
|
||||
{file = "kuzu-0.11.0-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6098c1987430cfaba340ed569233032e69ff7468894ed291a0f3c32bdd6b449e"},
|
||||
{file = "kuzu-0.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:656b8d1e38b4abed7d63520c06b133213b505dc424c61c70daac51ecd98bc20b"},
|
||||
{file = "kuzu-0.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1bfa6e8db299314e085cc61970fc624c22b4277abdf039cf268b93a7dfa4503d"},
|
||||
{file = "kuzu-0.11.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:fcddd88ddf406c5c92780a64d738da44b05bff05dc6c898bdb4e4f0b8cd7a686"},
|
||||
{file = "kuzu-0.11.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8114762ada25c4e055982579c809b812862c19eb0e85dc1345b2a5873d037db2"},
|
||||
{file = "kuzu-0.11.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf78fd355edb6d545983f2c4d19b678dfecfe52023f118e2379fff10b98efe29"},
|
||||
{file = "kuzu-0.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:660af3b23d0bcd0ade2f25cd04181d260499220066cfb8f2689527e1135b546a"},
|
||||
{file = "kuzu-0.11.0.tar.gz", hash = "sha256:34b9fe2d9f94421585f921cb0513bd584842a5705ae757c09fd075e23acb42d7"},
|
||||
{file = "kuzu-0.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b25174cdb721aae47896ed62842d3859679607b493a9a6bbbcd9fb7fb3707"},
|
||||
{file = "kuzu-0.11.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:9a8567c53bfe282f4727782471ff718842ffead8c48c1762c1df9197408fc986"},
|
||||
{file = "kuzu-0.11.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d793bb5a0a14ada730a697eccac2a4c68b434b82692d985942900ef2003e099e"},
|
||||
{file = "kuzu-0.11.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1be4e9b6c93ca8591b1fb165f9b9a27d70a56af061831afcdfe7aebb89ee6ff"},
|
||||
{file = "kuzu-0.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0ec7a304c746a2a98ecfd7e7c3f6fe92c4dfee2e2565c0b7cb4cffd0c2e374a"},
|
||||
{file = "kuzu-0.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf53b4f321a4c05882b14cef96d39a1e90fa993bab88a1554fb1565367553b8c"},
|
||||
{file = "kuzu-0.11.2-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:2d749883b74f5da5ff4a4b0635a98f6cc5165743995828924321d2ca797317cb"},
|
||||
{file = "kuzu-0.11.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:632507e5982928ed24fbb5e70ad143d7970bc4059046e77e0522707efbad303b"},
|
||||
{file = "kuzu-0.11.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5211884601f8f08ae97ba25006d0facde24077c5333411d944282b8a2068ab4"},
|
||||
{file = "kuzu-0.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:82a6c8bfe1278dc1010790e398bf772683797ef5c16052fa0f6f78bacbc59aa3"},
|
||||
{file = "kuzu-0.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aed88ffa695d07289a3d8557bd8f9e743298a4f4349208a60bbb06f4ebf15c26"},
|
||||
{file = "kuzu-0.11.2-cp312-cp312-macosx_11_0_x86_64.whl", hash = "sha256:595824b03248af928e3faee57f6825d3a46920f2d3b9bd0c0bb7fc3fa097fce9"},
|
||||
{file = "kuzu-0.11.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5674c6d9d26f5caa0c7ce6f34c02e4411894879aa5b2ce174fad576fa898523"},
|
||||
{file = "kuzu-0.11.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c61daf02da35b671f4c6f3c17105725c399a5e14b7349b00eafbcd24ac90034a"},
|
||||
{file = "kuzu-0.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:682096cd87dcbb8257f933ea4172d9dc5617a8d0a5bdd19cd66cf05b68881afd"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:17a11b67652e8b331c85cd1a1a30b32ee6783750084473abbab2aa1963ee2a3b"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313-macosx_11_0_x86_64.whl", hash = "sha256:bdded35426210faeca8da11e8b4a54e60ccc0c1a832660d76587b5be133b0f55"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6116b609aac153f3523130b31295643d34a6c9509914c0fa9d804b26b23eee73"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:09da5b8cb24dc6b281a6e4ac0f7f24226eb9909803b187e02d014da13ba57bcf"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313-win_amd64.whl", hash = "sha256:c663fb84682f8ebffbe7447a4e552a0e03bd29097d319084a2c53c2e032a780e"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5c03fb95ffb9185c1519333f8ee92b7a9695aa7aa9a179e868a7d7bd13d10a16"},
|
||||
{file = "kuzu-0.11.2-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d857f0efddf26d5e2dc189facb84bf04a997e395972486669b418a470cc76034"},
|
||||
{file = "kuzu-0.11.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fb9e4641867c35b98ceaa604aa79832c0eeed41f5fd1b6da22b1c217b2f1b8ea"},
|
||||
{file = "kuzu-0.11.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553408d76a0b4fdecc1338b69b71d7bde42f6936d3b99d9852b30d33bda15978"},
|
||||
{file = "kuzu-0.11.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:989a87fa13ffa39ab7773d968fe739ac4f8faf9ddb5dad72ced2eeef12180293"},
|
||||
{file = "kuzu-0.11.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e67420d04a9643fd6376a23b17b398a3e32bb0c2bd8abbf8d1e4697056596c7e"},
|
||||
{file = "kuzu-0.11.2-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:404714238c3b41311221307b336cdd5aede42c807517e1bddc5719f3424611d0"},
|
||||
{file = "kuzu-0.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0860c38622a2d2546e56fb3a491cecdd23809b1672fa2c306e8041b6b252566f"},
|
||||
{file = "kuzu-0.11.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:ba88e29af65d1a07e97156ea55bf9b3005265ae6c5e505b20a1a585df440a1a5"},
|
||||
{file = "kuzu-0.11.2-cp38-cp38-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d227f2cee86fdc2e3ddc68c32b2b1f3bc3b866a1faf017ec9581a1451ed226f1"},
|
||||
{file = "kuzu-0.11.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40a65162312e7f8306c9f70f60d546f661524d403cfd9b3d0403a7215f1211b4"},
|
||||
{file = "kuzu-0.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:f8ad7edabcf82c9570bd8a4def67e87254066932d41b4bc0a04109405224e315"},
|
||||
{file = "kuzu-0.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c5a48ff50b572e1ebfefe71f7cce4412a4adb2519d4666249893f2d83ae26e00"},
|
||||
{file = "kuzu-0.11.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:c3e7f117da2dbfac7e64fec0ccee768096378241f37b9e6bd204b4b8791a5272"},
|
||||
{file = "kuzu-0.11.2-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6ce377f4197013a80fc07053b4ee79341fac2b0ab8e58f4d6885f810189a5ce"},
|
||||
{file = "kuzu-0.11.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44a6f88bc5046ad3914a42dc097f1d629b64218c59f0b252dadaa1101efe78d1"},
|
||||
{file = "kuzu-0.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:9929ad9b220fe1bf553d5975f6155030ec655b9705ec9a7d3e3f9478a640a1e8"},
|
||||
{file = "kuzu-0.11.2.tar.gz", hash = "sha256:9f224ec218ab165a18acaea903695779780d70335baf402d9b7f59ba389db0bd"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -12776,4 +12777,4 @@ posthog = ["posthog"]
|
|||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = ">=3.10,<=3.13"
|
||||
content-hash = "c76267fe685339b5b5665342c81850a3e891cadaf760178bf3b04058f35b1014"
|
||||
content-hash = "874553043d02f0974213e040262fe0b1abf61b3c0be47c5e6d8e2db718f94ea2"
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ dependencies = [
|
|||
"pympler>=1.1,<2.0.0",
|
||||
"onnxruntime<=1.22.1",
|
||||
"pylance>=0.22.0,<=0.36.0",
|
||||
"kuzu (==0.11.0)",
|
||||
"kuzu (==0.11.2)",
|
||||
"python-magic-bin<0.5 ; platform_system == 'Windows'", # Only needed for Windows
|
||||
"fastembed<=0.6.0",
|
||||
"networkx>=3.4.2,<4",
|
||||
|
|
@ -88,7 +88,6 @@ mistral = ["mistral-common>=1.5.2,<2"]
|
|||
anthropic = ["anthropic>=0.27"]
|
||||
deepeval = ["deepeval>=3.0.1,<4"]
|
||||
posthog = ["posthog>=3.5.0,<4"]
|
||||
falkordb = ["falkordb>=1.0.9,<2.0.0"]
|
||||
groq = ["groq>=0.8.0,<1.0.0"]
|
||||
chromadb = [
|
||||
"chromadb>=0.6,<0.7",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue