Fixes added
This commit is contained in:
parent
a142e27e39
commit
1c40a5081a
3 changed files with 38 additions and 90 deletions
|
|
@ -1,67 +0,0 @@
|
||||||
# Cognee Configuration file
|
|
||||||
# Copy this file to .env and fill in the values
|
|
||||||
|
|
||||||
# Default User Configuration
|
|
||||||
DEFAULT_USER_EMAIL=""
|
|
||||||
DEFAULT_USER_PASSWORD=""
|
|
||||||
|
|
||||||
# Vector Database configuration
|
|
||||||
VECTOR_DB_TYPE=ChromaDB
|
|
||||||
VECTOR_DB_PATH=./chromadb
|
|
||||||
CHROMA_PERSIST_DIRECTORY=./chroma_db
|
|
||||||
|
|
||||||
# Graph Database configuration
|
|
||||||
GRAPH_DB_TYPE=NetworkX
|
|
||||||
GRAPH_DB_PATH=./.data/graph.json
|
|
||||||
|
|
||||||
# Content Storage configuration
|
|
||||||
CONTENT_STORAGE_TYPE=FileSystem
|
|
||||||
CONTENT_STORAGE_PATH=./storage
|
|
||||||
|
|
||||||
# Application settings
|
|
||||||
APP_NAME=Cognee
|
|
||||||
APP_ENVIRONMENT=production
|
|
||||||
LOG_LEVEL=INFO
|
|
||||||
|
|
||||||
# LLM configuration
|
|
||||||
LLM_PROVIDER=openai
|
|
||||||
LLM_MODEL=gpt-4
|
|
||||||
LLM_API_KEY=sk-...
|
|
||||||
LLM_ENDPOINT=
|
|
||||||
LLM_API_VERSION=
|
|
||||||
LLM_TEMPERATURE=0.0
|
|
||||||
LLM_STREAMING=false
|
|
||||||
LLM_MAX_TOKENS=16384
|
|
||||||
|
|
||||||
# Rate limiting configuration
|
|
||||||
LLM_RATE_LIMIT_ENABLED=false
|
|
||||||
LLM_RATE_LIMIT=60/minute
|
|
||||||
LLM_RATE_LIMIT_STRATEGY=moving-window
|
|
||||||
LLM_RATE_LIMIT_STORAGE=memory
|
|
||||||
# For Redis storage
|
|
||||||
# LLM_RATE_LIMIT_REDIS_URL=redis://localhost:6379/0
|
|
||||||
# For Memcached storage
|
|
||||||
# LLM_RATE_LIMIT_MEMCACHED_HOST=localhost
|
|
||||||
# LLM_RATE_LIMIT_MEMCACHED_PORT=11211
|
|
||||||
|
|
||||||
# Embedding configuration
|
|
||||||
EMBEDDING_PROVIDER=openai
|
|
||||||
EMBEDDING_MODEL=text-embedding-3-small
|
|
||||||
EMBEDDING_DIMENSIONS=1536
|
|
||||||
EMBEDDING_API_KEY=sk-...
|
|
||||||
|
|
||||||
# MongoDB configuration (optional)
|
|
||||||
# MONGODB_URI=mongodb://localhost:27017
|
|
||||||
# MONGODB_DB_NAME=cognee
|
|
||||||
|
|
||||||
# Metrics configuration (optional)
|
|
||||||
METRICS_ENABLED=false
|
|
||||||
METRICS_PORT=9090
|
|
||||||
|
|
||||||
# Monitoring configuration
|
|
||||||
MONITORING_TOOL=None
|
|
||||||
# For Langfuse (optional)
|
|
||||||
# LANGFUSE_HOST=https://cloud.langfuse.com
|
|
||||||
# LANGFUSE_PUBLIC_KEY=pk-...
|
|
||||||
# LANGFUSE_SECRET_KEY=sk-...
|
|
||||||
# LANGFUSE_PROJECT_ID=...
|
|
||||||
|
|
@ -41,13 +41,13 @@ async def add_text_with_nodeset(text: str, node_set: List[str], text_id: str = N
|
||||||
text_id = str(uuid.uuid4())
|
text_id = str(uuid.uuid4())
|
||||||
|
|
||||||
# Print NodeSet details
|
# Print NodeSet details
|
||||||
logger.info(f"Adding text with NodeSet")
|
logger.info("Adding text with NodeSet")
|
||||||
logger.info(f"NodeSet for this text: {node_set}")
|
logger.info(f"NodeSet for this text: {node_set}")
|
||||||
|
|
||||||
# Use high-level cognee.add() with the correct parameters
|
# Use high-level cognee.add() with the correct parameters
|
||||||
await cognee.add(text, node_set=node_set)
|
await cognee.add(text, node_set=node_set)
|
||||||
logger.info(f"Saved text with NodeSet to database")
|
logger.info("Saved text with NodeSet to database")
|
||||||
|
|
||||||
return text_id # Note: we can't control the actual ID generated by cognee.add()
|
return text_id # Note: we can't control the actual ID generated by cognee.add()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -56,10 +56,11 @@ async def check_data_records():
|
||||||
db_engine = get_relational_engine()
|
db_engine = get_relational_engine()
|
||||||
async with db_engine.get_async_session() as session:
|
async with db_engine.get_async_session() as session:
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
query = select(Data)
|
query = select(Data)
|
||||||
result = await session.execute(query)
|
result = await session.execute(query)
|
||||||
records = result.scalars().all()
|
records = result.scalars().all()
|
||||||
|
|
||||||
logger.info(f"Found {len(records)} records in the database")
|
logger.info(f"Found {len(records)} records in the database")
|
||||||
for record in records:
|
for record in records:
|
||||||
logger.info(f"Record ID: {record.id}, name: {record.name}, node_set: {record.node_set}")
|
logger.info(f"Record ID: {record.id}, name: {record.name}, node_set: {record.node_set}")
|
||||||
|
|
@ -78,8 +79,12 @@ async def run_simple_node_set_test():
|
||||||
# Generate test node IDs for two NodeSets
|
# Generate test node IDs for two NodeSets
|
||||||
# nodeset1 = await generate_test_node_ids(3)
|
# nodeset1 = await generate_test_node_ids(3)
|
||||||
nodeset2 = await generate_test_node_ids(3)
|
nodeset2 = await generate_test_node_ids(3)
|
||||||
nodeset1 = ["test","horse", "mamamama"]
|
nodeset1 = [
|
||||||
|
"my_accounting_data",
|
||||||
|
"my_set_of_manuals_about_horses",
|
||||||
|
"my_elon_musk_secret_file",
|
||||||
|
]
|
||||||
|
|
||||||
logger.info(f"Created test node IDs for NodeSet 1: {nodeset1}")
|
logger.info(f"Created test node IDs for NodeSet 1: {nodeset1}")
|
||||||
logger.info(f"Created test node IDs for NodeSet 2: {nodeset2}")
|
logger.info(f"Created test node IDs for NodeSet 2: {nodeset2}")
|
||||||
|
|
||||||
|
|
@ -89,6 +94,8 @@ async def run_simple_node_set_test():
|
||||||
|
|
||||||
text1_id = await add_text_with_nodeset(text1, nodeset1)
|
text1_id = await add_text_with_nodeset(text1, nodeset1)
|
||||||
text2_id = await add_text_with_nodeset(text2, nodeset2)
|
text2_id = await add_text_with_nodeset(text2, nodeset2)
|
||||||
|
logger.info(str(text1_id))
|
||||||
|
logger.info(str(text2_id))
|
||||||
|
|
||||||
# Verify that the NodeSets were stored correctly
|
# Verify that the NodeSets were stored correctly
|
||||||
await check_data_records()
|
await check_data_records()
|
||||||
|
|
@ -96,40 +103,48 @@ async def run_simple_node_set_test():
|
||||||
# Run the cognify process to create a knowledge graph
|
# Run the cognify process to create a knowledge graph
|
||||||
pipeline_run_id = await cognee.cognify()
|
pipeline_run_id = await cognee.cognify()
|
||||||
logger.info(f"Cognify process completed with pipeline run ID: {pipeline_run_id}")
|
logger.info(f"Cognify process completed with pipeline run ID: {pipeline_run_id}")
|
||||||
|
|
||||||
# Skip graph search as the NetworkXAdapter doesn't support Cypher
|
# Skip graph search as the NetworkXAdapter doesn't support Cypher
|
||||||
logger.info("Skipping graph search as NetworkXAdapter doesn't support Cypher")
|
logger.info("Skipping graph search as NetworkXAdapter doesn't support Cypher")
|
||||||
|
|
||||||
# Search for insights related to the added texts
|
# Search for insights related to the added texts
|
||||||
search_query = "NLP and AI"
|
search_query = "NLP and AI"
|
||||||
logger.info(f"Searching for insights with query: '{search_query}'")
|
logger.info(f"Searching for insights with query: '{search_query}'")
|
||||||
search_results = await cognee.search(query_type=SearchType.INSIGHTS, query_text=search_query)
|
search_results = await cognee.search(
|
||||||
|
query_type=SearchType.INSIGHTS, query_text=search_query
|
||||||
|
)
|
||||||
|
|
||||||
# Extract NodeSet information from search results
|
# Extract NodeSet information from search results
|
||||||
logger.info(f"Found {len(search_results)} search results for '{search_query}':")
|
logger.info(f"Found {len(search_results)} search results for '{search_query}':")
|
||||||
for i, result in enumerate(search_results):
|
for i, result in enumerate(search_results):
|
||||||
logger.info(f"Result {i+1} text: {getattr(result, 'text', 'No text')}")
|
logger.info(f"Result {i + 1} text: {getattr(result, 'text', 'No text')}")
|
||||||
|
|
||||||
# Check for NodeSet and SetNodeId
|
# Check for NodeSet and SetNodeId
|
||||||
node_set = getattr(result, "NodeSet", None)
|
node_set = getattr(result, "NodeSet", None)
|
||||||
set_node_id = getattr(result, "SetNodeId", None)
|
set_node_id = getattr(result, "SetNodeId", None)
|
||||||
logger.info(f"Result {i+1} - NodeSet: {node_set}, SetNodeId: {set_node_id}")
|
logger.info(f"Result {i + 1} - NodeSet: {node_set}, SetNodeId: {set_node_id}")
|
||||||
|
|
||||||
# Check id and type
|
# Check id and type
|
||||||
logger.info(f"Result {i+1} - ID: {getattr(result, 'id', 'No ID')}, Type: {getattr(result, 'type', 'No type')}")
|
logger.info(
|
||||||
|
f"Result {i + 1} - ID: {getattr(result, 'id', 'No ID')}, Type: {getattr(result, 'type', 'No type')}"
|
||||||
|
)
|
||||||
|
|
||||||
# Check if this is a document chunk and has is_part_of property
|
# Check if this is a document chunk and has is_part_of property
|
||||||
if hasattr(result, "is_part_of") and result.is_part_of:
|
if hasattr(result, "is_part_of") and result.is_part_of:
|
||||||
logger.info(f"Result {i+1} is a document chunk with parent ID: {result.is_part_of.id}")
|
logger.info(
|
||||||
|
f"Result {i + 1} is a document chunk with parent ID: {result.is_part_of.id}"
|
||||||
|
)
|
||||||
|
|
||||||
# Check if the parent has a NodeSet
|
# Check if the parent has a NodeSet
|
||||||
parent_has_nodeset = hasattr(result.is_part_of, "NodeSet") and result.is_part_of.NodeSet
|
parent_has_nodeset = (
|
||||||
|
hasattr(result.is_part_of, "NodeSet") and result.is_part_of.NodeSet
|
||||||
|
)
|
||||||
logger.info(f" Parent has NodeSet: {parent_has_nodeset}")
|
logger.info(f" Parent has NodeSet: {parent_has_nodeset}")
|
||||||
if parent_has_nodeset:
|
if parent_has_nodeset:
|
||||||
logger.info(f" Parent NodeSet: {result.is_part_of.NodeSet}")
|
logger.info(f" Parent NodeSet: {result.is_part_of.NodeSet}")
|
||||||
|
|
||||||
# Print all attributes of the result to see what's available
|
# Print all attributes of the result to see what's available
|
||||||
logger.info(f"Result {i+1} - All attributes: {dir(result)}")
|
logger.info(f"Result {i + 1} - All attributes: {dir(result)}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error in simple NodeSet test: {e}")
|
logger.error(f"Error in simple NodeSet test: {e}")
|
||||||
|
|
@ -143,4 +158,4 @@ if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
loop.run_until_complete(run_simple_node_set_test())
|
loop.run_until_complete(run_simple_node_set_test())
|
||||||
finally:
|
finally:
|
||||||
loop.run_until_complete(loop.shutdown_asyncgens())
|
loop.run_until_complete(loop.shutdown_asyncgens())
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ import json
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from cognee.infrastructure.files.storage import LocalStorage
|
from cognee.infrastructure.files.storage import LocalStorage
|
||||||
|
from cognee.shared.logging_utils import get_logger
|
||||||
|
|
||||||
|
logger = get_logger()
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
async def cognee_network_visualization(graph_data, destination_file_path: str = None):
|
async def cognee_network_visualization(graph_data, destination_file_path: str = None):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue