graphiti-core 0.19.0rc3__tar.gz → 0.20.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of graphiti-core might be problematic. Click here for more details.
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/cla.yml +1 -1
- graphiti_core-0.20.0/.github/workflows/claude-code-review.yml +50 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/claude.yml +1 -1
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/unit_tests.yml +1 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/PKG-INFO +116 -48
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/README.md +112 -47
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/conftest.py +4 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/driver/driver.py +3 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/driver/falkordb_driver.py +3 -14
- graphiti_core-0.20.0/graphiti_core/driver/kuzu_driver.py +175 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/driver/neptune_driver.py +2 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/edges.py +148 -83
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/graph_queries.py +31 -2
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/graphiti.py +4 -1
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/helpers.py +7 -12
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/migrations/neo4j_node_group_labels.py +33 -4
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/models/edges/edge_db_queries.py +121 -42
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/models/nodes/node_db_queries.py +102 -23
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/nodes.py +169 -66
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search.py +13 -3
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search_config.py +4 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search_filters.py +35 -22
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search_utils.py +693 -382
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/bulk_utils.py +50 -18
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/datetime_utils.py +13 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/community_operations.py +39 -32
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/edge_operations.py +19 -8
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/graph_data_operations.py +77 -47
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/pyproject.toml +3 -5
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/pytest.ini +2 -1
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/signatures/version1/cla.json +16 -0
- graphiti_core-0.20.0/tests/helpers_test.py +313 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/test_edge_int.py +121 -108
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/test_entity_exclusion_int.py +0 -5
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/test_graphiti_int.py +6 -9
- graphiti_core-0.20.0/tests/test_graphiti_mock.py +2068 -0
- graphiti_core-0.20.0/tests/test_node_int.py +229 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/uv.lock +42 -2
- graphiti_core-0.19.0rc3/.github/workflows/claude-code-review.yml +0 -78
- graphiti_core-0.19.0rc3/tests/helpers_test.py +0 -118
- graphiti_core-0.19.0rc3/tests/test_node_int.py +0 -243
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.env.example +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/dependabot.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/pull_request_template.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/secret_scanning.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/ai-moderator.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/codeql.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/lint.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/mcp-server-docker.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/release-graphiti-core.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.github/workflows/typecheck.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/.gitignore +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/CLAUDE.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/CODE_OF_CONDUCT.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/CONTRIBUTING.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/Dockerfile +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/LICENSE +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/Makefile +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/SECURITY.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/Zep-CLA.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/depot.json +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/docker-compose.test.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/docker-compose.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/ellipsis.yaml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/data/manybirds_products.json +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/ecommerce/runner.ipynb +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/ecommerce/runner.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/langgraph-agent/agent.ipynb +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/langgraph-agent/tinybirds-jess.png +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/podcast/podcast_runner.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/podcast/podcast_transcript.txt +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/podcast/transcript_parser.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/quickstart/README.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/quickstart/quickstart_falkordb.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/quickstart/quickstart_neo4j.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/quickstart/quickstart_neptune.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/quickstart/requirements.txt +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/wizard_of_oz/parser.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/wizard_of_oz/runner.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/examples/wizard_of_oz/woo.txt +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/cross_encoder/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/cross_encoder/client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/cross_encoder/gemini_reranker_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/cross_encoder/openai_reranker_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/driver/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/driver/neo4j_driver.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/azure_openai.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/gemini.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/openai.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/embedder/voyage.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/errors.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/graphiti_types.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/anthropic_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/azure_openai_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/config.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/errors.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/gemini_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/groq_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/openai_base_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/openai_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/openai_generic_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/llm_client/utils.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/migrations/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/models/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/models/edges/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/models/nodes/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/dedupe_edges.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/dedupe_nodes.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/eval.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/extract_edge_dates.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/extract_edges.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/extract_nodes.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/invalidate_edges.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/lib.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/models.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/prompt_helpers.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/prompts/summarize_nodes.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/py.typed +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search_config_recipes.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/search/search_helpers.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/telemetry/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/telemetry/telemetry.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/node_operations.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/maintenance/utils.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/graphiti_core/utils/ontology_utils/entity_types_utils.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/images/arxiv-screenshot.png +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/images/graphiti-graph-intro.gif +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/images/graphiti-intro-slides-stock-2.gif +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/images/simple_graph.svg +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/.env.example +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/.python-version +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/Dockerfile +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/README.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/cursor_rules.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/docker-compose.yml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/graphiti_mcp_server.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/mcp_config_sse_example.json +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/mcp_config_stdio_example.json +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/pyproject.toml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/mcp_server/uv.lock +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/poetry.lock +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/py.typed +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/.env.example +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/Makefile +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/README.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/config.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/dto/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/dto/common.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/dto/ingest.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/dto/retrieve.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/main.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/routers/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/routers/ingest.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/routers/retrieve.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/graph_service/zep_graphiti.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/pyproject.toml +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/server/uv.lock +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/cross_encoder/test_bge_reranker_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/cross_encoder/test_gemini_reranker_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/driver/__init__.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/driver/test_falkordb_driver.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/embedder/embedder_fixtures.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/embedder/test_gemini.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/embedder/test_openai.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/embedder/test_voyage.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/data/longmemeval_data/README.md +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/data/longmemeval_data/longmemeval_oracle.json +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/eval_cli.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/eval_e2e_graph_building.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/pytest.ini +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/evals/utils.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/llm_client/test_anthropic_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/llm_client/test_anthropic_client_int.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/llm_client/test_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/llm_client/test_errors.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/llm_client/test_gemini_client.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/utils/maintenance/test_edge_operations.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/utils/maintenance/test_temporal_operations_int.py +0 -0
- {graphiti_core-0.19.0rc3 → graphiti_core-0.20.0}/tests/utils/search/search_utils_test.py +0 -0
|
@@ -28,7 +28,7 @@ jobs:
|
|
|
28
28
|
path-to-document: "https://github.com/getzep/graphiti/blob/main/Zep-CLA.md" # e.g. a CLA or a DCO document
|
|
29
29
|
# branch should not be protected unless a personal PAT is used
|
|
30
30
|
branch: "main"
|
|
31
|
-
allowlist: paul-paliychuk,prasmussen15,danielchalef,dependabot[bot],ellipsis-dev,Claude[bot]
|
|
31
|
+
allowlist: paul-paliychuk,prasmussen15,danielchalef,dependabot[bot],ellipsis-dev,Claude[bot],claude[bot]
|
|
32
32
|
|
|
33
33
|
# the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
|
|
34
34
|
#remote-organization-name: enter the remote organization name where the signatures should be stored (Default is storing the signatures in the same repository)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Claude PR Auto Review
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [opened, synchronize]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
auto-review:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
pull-requests: write
|
|
13
|
+
id-token: write
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout repository
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 1
|
|
19
|
+
|
|
20
|
+
- name: Automatic PR Review
|
|
21
|
+
uses: anthropics/claude-code-action@v1
|
|
22
|
+
with:
|
|
23
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
24
|
+
use_sticky_comment: true
|
|
25
|
+
allowed_bots: "dependabot"
|
|
26
|
+
prompt: |
|
|
27
|
+
REPO: ${{ github.repository }}
|
|
28
|
+
PR NUMBER: ${{ github.event.pull_request.number }}
|
|
29
|
+
|
|
30
|
+
Please review this pull request.
|
|
31
|
+
|
|
32
|
+
Note: The PR branch is already checked out in the current working directory.
|
|
33
|
+
|
|
34
|
+
Focus on:
|
|
35
|
+
- Code quality and best practices
|
|
36
|
+
- Potential bugs or issues
|
|
37
|
+
- Performance considerations
|
|
38
|
+
- Security implications
|
|
39
|
+
- Test coverage
|
|
40
|
+
- Documentation updates if needed
|
|
41
|
+
- Verify that README.md and docs are updated for any new features or config changes
|
|
42
|
+
|
|
43
|
+
Provide constructive feedback with specific suggestions for improvement.
|
|
44
|
+
Use `gh pr comment:*` for top-level comments.
|
|
45
|
+
Use `mcp__github_inline_comment__create_inline_comment` to highlight specific areas of concern.
|
|
46
|
+
Only your GitHub comments that you post will be seen, so don't submit your review as a normal message, just as comments.
|
|
47
|
+
If the PR has already been reviewed, or there are no noteworthy changes, don't post anything.
|
|
48
|
+
|
|
49
|
+
claude_args: |
|
|
50
|
+
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr comment:*), Bash(gh pr diff:*), Bash(gh pr view:*)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphiti-core
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
4
4
|
Summary: A temporal graph building library
|
|
5
5
|
Project-URL: Homepage, https://help.getzep.com/graphiti/graphiti/overview
|
|
6
6
|
Project-URL: Repository, https://github.com/getzep/graphiti
|
|
@@ -26,6 +26,7 @@ Requires-Dist: google-genai>=1.8.0; extra == 'dev'
|
|
|
26
26
|
Requires-Dist: groq>=0.2.0; extra == 'dev'
|
|
27
27
|
Requires-Dist: ipykernel>=6.29.5; extra == 'dev'
|
|
28
28
|
Requires-Dist: jupyterlab>=4.2.4; extra == 'dev'
|
|
29
|
+
Requires-Dist: kuzu>=0.11.2; extra == 'dev'
|
|
29
30
|
Requires-Dist: langchain-anthropic>=0.2.4; extra == 'dev'
|
|
30
31
|
Requires-Dist: langchain-openai>=0.2.6; extra == 'dev'
|
|
31
32
|
Requires-Dist: langgraph>=0.2.15; extra == 'dev'
|
|
@@ -44,6 +45,8 @@ Provides-Extra: google-genai
|
|
|
44
45
|
Requires-Dist: google-genai>=1.8.0; extra == 'google-genai'
|
|
45
46
|
Provides-Extra: groq
|
|
46
47
|
Requires-Dist: groq>=0.2.0; extra == 'groq'
|
|
48
|
+
Provides-Extra: kuzu
|
|
49
|
+
Requires-Dist: kuzu>=0.11.2; extra == 'kuzu'
|
|
47
50
|
Provides-Extra: neptune
|
|
48
51
|
Requires-Dist: boto3>=1.39.16; extra == 'neptune'
|
|
49
52
|
Requires-Dist: langchain-aws>=0.2.29; extra == 'neptune'
|
|
@@ -87,9 +90,15 @@ Graphiti
|
|
|
87
90
|
<br />
|
|
88
91
|
|
|
89
92
|
> [!TIP]
|
|
90
|
-
> Check out the new [MCP server for Graphiti](mcp_server/README.md)! Give Claude, Cursor, and other MCP clients powerful
|
|
93
|
+
> Check out the new [MCP server for Graphiti](mcp_server/README.md)! Give Claude, Cursor, and other MCP clients powerful
|
|
94
|
+
> Knowledge Graph-based memory.
|
|
91
95
|
|
|
92
|
-
Graphiti is a framework for building and querying temporally-aware knowledge graphs, specifically tailored for AI agents
|
|
96
|
+
Graphiti is a framework for building and querying temporally-aware knowledge graphs, specifically tailored for AI agents
|
|
97
|
+
operating in dynamic environments. Unlike traditional retrieval-augmented generation (RAG) methods, Graphiti
|
|
98
|
+
continuously integrates user interactions, structured and unstructured enterprise data, and external information into a
|
|
99
|
+
coherent, queryable graph. The framework supports incremental data updates, efficient retrieval, and precise historical
|
|
100
|
+
queries without requiring complete graph recomputation, making it suitable for developing interactive, context-aware AI
|
|
101
|
+
applications.
|
|
93
102
|
|
|
94
103
|
Use Graphiti to:
|
|
95
104
|
|
|
@@ -100,19 +109,21 @@ Use Graphiti to:
|
|
|
100
109
|
<br />
|
|
101
110
|
|
|
102
111
|
<p align="center">
|
|
103
|
-
<img src="images/graphiti-graph-intro.gif" alt="Graphiti temporal walkthrough" width="700px">
|
|
112
|
+
<img src="images/graphiti-graph-intro.gif" alt="Graphiti temporal walkthrough" width="700px">
|
|
104
113
|
</p>
|
|
105
114
|
|
|
106
115
|
<br />
|
|
107
116
|
|
|
108
|
-
A knowledge graph is a network of interconnected facts, such as _"Kendra loves Adidas shoes."_ Each fact is a "triplet"
|
|
117
|
+
A knowledge graph is a network of interconnected facts, such as _"Kendra loves Adidas shoes."_ Each fact is a "triplet"
|
|
118
|
+
represented by two entities, or
|
|
109
119
|
nodes ("Kendra", "Adidas shoes"), and their relationship, or edge ("loves"). Knowledge Graphs have been explored
|
|
110
120
|
extensively for information retrieval. What makes Graphiti unique is its ability to autonomously build a knowledge graph
|
|
111
121
|
while handling changing relationships and maintaining historical context.
|
|
112
122
|
|
|
113
123
|
## Graphiti and Zep's Context Engineering Platform.
|
|
114
124
|
|
|
115
|
-
Graphiti powers the core of [Zep](https://www.getzep.com), a turn-key context engineering platform for AI Agents. Zep
|
|
125
|
+
Graphiti powers the core of [Zep](https://www.getzep.com), a turn-key context engineering platform for AI Agents. Zep
|
|
126
|
+
offers agent memory, Graph RAG for dynamic data, and context retrieval and assembly.
|
|
116
127
|
|
|
117
128
|
Using Graphiti, we've demonstrated Zep is
|
|
118
129
|
the [State of the Art in Agent Memory](https://blog.getzep.com/state-of-the-art-agent-memory/).
|
|
@@ -127,22 +138,26 @@ We're excited to open-source Graphiti, believing its potential reaches far beyon
|
|
|
127
138
|
|
|
128
139
|
## Why Graphiti?
|
|
129
140
|
|
|
130
|
-
Traditional RAG approaches often rely on batch processing and static data summarization, making them inefficient for
|
|
141
|
+
Traditional RAG approaches often rely on batch processing and static data summarization, making them inefficient for
|
|
142
|
+
frequently changing data. Graphiti addresses these challenges by providing:
|
|
131
143
|
|
|
132
144
|
- **Real-Time Incremental Updates:** Immediate integration of new data episodes without batch recomputation.
|
|
133
|
-
- **Bi-Temporal Data Model:** Explicit tracking of event occurrence and ingestion times, allowing accurate point-in-time
|
|
134
|
-
|
|
135
|
-
- **
|
|
145
|
+
- **Bi-Temporal Data Model:** Explicit tracking of event occurrence and ingestion times, allowing accurate point-in-time
|
|
146
|
+
queries.
|
|
147
|
+
- **Efficient Hybrid Retrieval:** Combines semantic embeddings, keyword (BM25), and graph traversal to achieve
|
|
148
|
+
low-latency queries without reliance on LLM summarization.
|
|
149
|
+
- **Custom Entity Definitions:** Flexible ontology creation and support for developer-defined entities through
|
|
150
|
+
straightforward Pydantic models.
|
|
136
151
|
- **Scalability:** Efficiently manages large datasets with parallel processing, suitable for enterprise environments.
|
|
137
152
|
|
|
138
153
|
<p align="center">
|
|
139
|
-
<img src="/images/graphiti-intro-slides-stock-2.gif" alt="Graphiti structured + unstructured demo" width="700px">
|
|
154
|
+
<img src="/images/graphiti-intro-slides-stock-2.gif" alt="Graphiti structured + unstructured demo" width="700px">
|
|
140
155
|
</p>
|
|
141
156
|
|
|
142
157
|
## Graphiti vs. GraphRAG
|
|
143
158
|
|
|
144
159
|
| Aspect | GraphRAG | Graphiti |
|
|
145
|
-
|
|
160
|
+
|----------------------------|---------------------------------------|--------------------------------------------------|
|
|
146
161
|
| **Primary Use** | Static document summarization | Dynamic data management |
|
|
147
162
|
| **Data Handling** | Batch-oriented processing | Continuous, incremental updates |
|
|
148
163
|
| **Knowledge Structure** | Entity clusters & community summaries | Episodic data, semantic entities, communities |
|
|
@@ -154,14 +169,16 @@ Traditional RAG approaches often rely on batch processing and static data summar
|
|
|
154
169
|
| **Custom Entity Types** | No | Yes, customizable |
|
|
155
170
|
| **Scalability** | Moderate | High, optimized for large datasets |
|
|
156
171
|
|
|
157
|
-
Graphiti is specifically designed to address the challenges of dynamic and frequently updated datasets, making it
|
|
172
|
+
Graphiti is specifically designed to address the challenges of dynamic and frequently updated datasets, making it
|
|
173
|
+
particularly suitable for applications requiring real-time interaction and precise historical queries.
|
|
158
174
|
|
|
159
175
|
## Installation
|
|
160
176
|
|
|
161
177
|
Requirements:
|
|
162
178
|
|
|
163
179
|
- Python 3.10 or higher
|
|
164
|
-
- Neo4j 5.26 / FalkorDB 1.1.2 / Amazon Neptune Database Cluster or Neptune Analytics Graph + Amazon
|
|
180
|
+
- Neo4j 5.26 / FalkorDB 1.1.2 / Kuzu 0.11.2 / Amazon Neptune Database Cluster or Neptune Analytics Graph + Amazon
|
|
181
|
+
OpenSearch Serverless collection (serves as the full text search backend)
|
|
165
182
|
- OpenAI API key (Graphiti defaults to OpenAI for LLM inference and embedding)
|
|
166
183
|
|
|
167
184
|
> [!IMPORTANT]
|
|
@@ -204,6 +221,17 @@ pip install graphiti-core[falkordb]
|
|
|
204
221
|
uv add graphiti-core[falkordb]
|
|
205
222
|
```
|
|
206
223
|
|
|
224
|
+
### Installing with Kuzu Support
|
|
225
|
+
|
|
226
|
+
If you plan to use Kuzu as your graph database backend, install with the Kuzu extra:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
pip install graphiti-core[kuzu]
|
|
230
|
+
|
|
231
|
+
# or with uv
|
|
232
|
+
uv add graphiti-core[kuzu]
|
|
233
|
+
```
|
|
234
|
+
|
|
207
235
|
### Installing with Amazon Neptune Support
|
|
208
236
|
|
|
209
237
|
If you plan to use Amazon Neptune as your graph database backend, install with the Amazon Neptune extra:
|
|
@@ -239,33 +267,41 @@ pip install graphiti-core[neptune]
|
|
|
239
267
|
|
|
240
268
|
## Default to Low Concurrency; LLM Provider 429 Rate Limit Errors
|
|
241
269
|
|
|
242
|
-
Graphiti's ingestion pipelines are designed for high concurrency. By default, concurrency is set low to avoid LLM
|
|
270
|
+
Graphiti's ingestion pipelines are designed for high concurrency. By default, concurrency is set low to avoid LLM
|
|
271
|
+
Provider 429 Rate Limit Errors. If you find Graphiti slow, please increase concurrency as described below.
|
|
243
272
|
|
|
244
|
-
Concurrency controlled by the `SEMAPHORE_LIMIT` environment variable. By default, `SEMAPHORE_LIMIT` is set to `10`
|
|
273
|
+
Concurrency controlled by the `SEMAPHORE_LIMIT` environment variable. By default, `SEMAPHORE_LIMIT` is set to `10`
|
|
274
|
+
concurrent operations to help prevent `429` rate limit errors from your LLM provider. If you encounter such errors, try
|
|
275
|
+
lowering this value.
|
|
245
276
|
|
|
246
|
-
If your LLM provider allows higher throughput, you can increase `SEMAPHORE_LIMIT` to boost episode ingestion
|
|
277
|
+
If your LLM provider allows higher throughput, you can increase `SEMAPHORE_LIMIT` to boost episode ingestion
|
|
278
|
+
performance.
|
|
247
279
|
|
|
248
280
|
## Quick Start
|
|
249
281
|
|
|
250
282
|
> [!IMPORTANT]
|
|
251
|
-
> Graphiti defaults to using OpenAI for LLM inference and embedding. Ensure that an `OPENAI_API_KEY` is set in your
|
|
283
|
+
> Graphiti defaults to using OpenAI for LLM inference and embedding. Ensure that an `OPENAI_API_KEY` is set in your
|
|
284
|
+
> environment.
|
|
252
285
|
> Support for Anthropic and Groq LLM inferences is available, too. Other LLM providers may be supported via OpenAI
|
|
253
286
|
> compatible APIs.
|
|
254
287
|
|
|
255
|
-
For a complete working example, see the [Quickstart Example](./examples/quickstart/README.md) in the examples directory.
|
|
288
|
+
For a complete working example, see the [Quickstart Example](./examples/quickstart/README.md) in the examples directory.
|
|
289
|
+
The quickstart demonstrates:
|
|
256
290
|
|
|
257
|
-
1. Connecting to a Neo4j, Amazon Neptune, or
|
|
291
|
+
1. Connecting to a Neo4j, Amazon Neptune, FalkorDB, or Kuzu database
|
|
258
292
|
2. Initializing Graphiti indices and constraints
|
|
259
293
|
3. Adding episodes to the graph (both text and structured JSON)
|
|
260
294
|
4. Searching for relationships (edges) using hybrid search
|
|
261
295
|
5. Reranking search results using graph distance
|
|
262
296
|
6. Searching for nodes using predefined search recipes
|
|
263
297
|
|
|
264
|
-
The example is fully documented with clear explanations of each functionality and includes a comprehensive README with
|
|
298
|
+
The example is fully documented with clear explanations of each functionality and includes a comprehensive README with
|
|
299
|
+
setup instructions and next steps.
|
|
265
300
|
|
|
266
301
|
## MCP Server
|
|
267
302
|
|
|
268
|
-
The `mcp_server` directory contains a Model Context Protocol (MCP) server implementation for Graphiti. This server
|
|
303
|
+
The `mcp_server` directory contains a Model Context Protocol (MCP) server implementation for Graphiti. This server
|
|
304
|
+
allows AI assistants to interact with Graphiti's knowledge graph capabilities through the MCP protocol.
|
|
269
305
|
|
|
270
306
|
Key features of the MCP server include:
|
|
271
307
|
|
|
@@ -275,7 +311,8 @@ Key features of the MCP server include:
|
|
|
275
311
|
- Group management for organizing related data
|
|
276
312
|
- Graph maintenance operations
|
|
277
313
|
|
|
278
|
-
The MCP server can be deployed using Docker with Neo4j, making it easy to integrate Graphiti into your AI assistant
|
|
314
|
+
The MCP server can be deployed using Docker with Neo4j, making it easy to integrate Graphiti into your AI assistant
|
|
315
|
+
workflows.
|
|
279
316
|
|
|
280
317
|
For detailed setup instructions and usage examples, see the [MCP server README](./mcp_server/README.md).
|
|
281
318
|
|
|
@@ -298,7 +335,8 @@ Database names are configured directly in the driver constructors:
|
|
|
298
335
|
- **Neo4j**: Database name defaults to `neo4j` (hardcoded in Neo4jDriver)
|
|
299
336
|
- **FalkorDB**: Database name defaults to `default_db` (hardcoded in FalkorDriver)
|
|
300
337
|
|
|
301
|
-
As of v0.17.0, if you need to customize your database configuration, you can instantiate a database driver and pass it
|
|
338
|
+
As of v0.17.0, if you need to customize your database configuration, you can instantiate a database driver and pass it
|
|
339
|
+
to the Graphiti constructor using the `graph_driver` parameter.
|
|
302
340
|
|
|
303
341
|
#### Neo4j with Custom Database Name
|
|
304
342
|
|
|
@@ -337,6 +375,19 @@ driver = FalkorDriver(
|
|
|
337
375
|
graphiti = Graphiti(graph_driver=driver)
|
|
338
376
|
```
|
|
339
377
|
|
|
378
|
+
#### Kuzu
|
|
379
|
+
|
|
380
|
+
```python
|
|
381
|
+
from graphiti_core import Graphiti
|
|
382
|
+
from graphiti_core.driver.kuzu_driver import KuzuDriver
|
|
383
|
+
|
|
384
|
+
# Create a Kuzu driver
|
|
385
|
+
driver = KuzuDriver(db="/tmp/graphiti.kuzu")
|
|
386
|
+
|
|
387
|
+
# Pass the driver to Graphiti
|
|
388
|
+
graphiti = Graphiti(graph_driver=driver)
|
|
389
|
+
```
|
|
390
|
+
|
|
340
391
|
#### Amazon Neptune
|
|
341
392
|
|
|
342
393
|
```python
|
|
@@ -345,10 +396,14 @@ from graphiti_core.driver.neptune_driver import NeptuneDriver
|
|
|
345
396
|
|
|
346
397
|
# Create a FalkorDB driver with custom database name
|
|
347
398
|
driver = NeptuneDriver(
|
|
348
|
-
host
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
399
|
+
host= < NEPTUNE
|
|
400
|
+
ENDPOINT >,
|
|
401
|
+
aoss_host = < Amazon
|
|
402
|
+
OpenSearch
|
|
403
|
+
Serverless
|
|
404
|
+
Host >,
|
|
405
|
+
port = < PORT > # Optional, defaults to 8182,
|
|
406
|
+
aoss_port = < PORT > # Optional, defaults to 443
|
|
352
407
|
)
|
|
353
408
|
|
|
354
409
|
driver = NeptuneDriver(host=neptune_uri, aoss_host=aoss_host, port=neptune_port)
|
|
@@ -357,17 +412,20 @@ driver = NeptuneDriver(host=neptune_uri, aoss_host=aoss_host, port=neptune_port)
|
|
|
357
412
|
graphiti = Graphiti(graph_driver=driver)
|
|
358
413
|
```
|
|
359
414
|
|
|
360
|
-
|
|
361
|
-
### Performance Configuration
|
|
362
|
-
|
|
363
|
-
`USE_PARALLEL_RUNTIME` is an optional boolean variable that can be set to true if you wish
|
|
364
|
-
to enable Neo4j's parallel runtime feature for several of our search queries.
|
|
365
|
-
Note that this feature is not supported for Neo4j Community edition or for smaller AuraDB instances,
|
|
366
|
-
as such this feature is off by default.
|
|
367
|
-
|
|
368
415
|
## Using Graphiti with Azure OpenAI
|
|
369
416
|
|
|
370
|
-
Graphiti supports Azure OpenAI for both LLM inference and embeddings. Azure deployments often require different
|
|
417
|
+
Graphiti supports Azure OpenAI for both LLM inference and embeddings. Azure deployments often require different
|
|
418
|
+
endpoints for LLM and embedding services, and separate deployments for default and small models.
|
|
419
|
+
|
|
420
|
+
> [!IMPORTANT]
|
|
421
|
+
> **Azure OpenAI v1 API Opt-in Required for Structured Outputs**
|
|
422
|
+
>
|
|
423
|
+
> Graphiti uses structured outputs via the `client.beta.chat.completions.parse()` method, which requires Azure OpenAI
|
|
424
|
+
> deployments to opt into the v1 API. Without this opt-in, you'll encounter 404 Resource not found errors during episode
|
|
425
|
+
> ingestion.
|
|
426
|
+
>
|
|
427
|
+
> To enable v1 API support in your Azure OpenAI deployment, follow Microsoft's
|
|
428
|
+
> guide: [Azure OpenAI API version lifecycle](https://learn.microsoft.com/en-us/azure/ai-foundry/openai/api-version-lifecycle?tabs=key#api-evolution).
|
|
371
429
|
|
|
372
430
|
```python
|
|
373
431
|
from openai import AsyncAzureOpenAI
|
|
@@ -427,11 +485,13 @@ graphiti = Graphiti(
|
|
|
427
485
|
# Now you can use Graphiti with Azure OpenAI
|
|
428
486
|
```
|
|
429
487
|
|
|
430
|
-
Make sure to replace the placeholder values with your actual Azure OpenAI credentials and deployment names that match
|
|
488
|
+
Make sure to replace the placeholder values with your actual Azure OpenAI credentials and deployment names that match
|
|
489
|
+
your Azure OpenAI service configuration.
|
|
431
490
|
|
|
432
491
|
## Using Graphiti with Google Gemini
|
|
433
492
|
|
|
434
|
-
Graphiti supports Google's Gemini models for LLM inference, embeddings, and cross-encoding/reranking. To use Gemini,
|
|
493
|
+
Graphiti supports Google's Gemini models for LLM inference, embeddings, and cross-encoding/reranking. To use Gemini,
|
|
494
|
+
you'll need to configure the LLM client, embedder, and the cross-encoder with your Google API key.
|
|
435
495
|
|
|
436
496
|
Install Graphiti:
|
|
437
497
|
|
|
@@ -480,13 +540,17 @@ graphiti = Graphiti(
|
|
|
480
540
|
# Now you can use Graphiti with Google Gemini for all components
|
|
481
541
|
```
|
|
482
542
|
|
|
483
|
-
The Gemini reranker uses the `gemini-2.5-flash-lite-preview-06-17` model by default, which is optimized for
|
|
543
|
+
The Gemini reranker uses the `gemini-2.5-flash-lite-preview-06-17` model by default, which is optimized for
|
|
544
|
+
cost-effective and low-latency classification tasks. It uses the same boolean classification approach as the OpenAI
|
|
545
|
+
reranker, leveraging Gemini's log probabilities feature to rank passage relevance.
|
|
484
546
|
|
|
485
547
|
## Using Graphiti with Ollama (Local LLM)
|
|
486
548
|
|
|
487
|
-
Graphiti supports Ollama for running local LLMs and embedding models via Ollama's OpenAI-compatible API. This is ideal
|
|
549
|
+
Graphiti supports Ollama for running local LLMs and embedding models via Ollama's OpenAI-compatible API. This is ideal
|
|
550
|
+
for privacy-focused applications or when you want to avoid API costs.
|
|
488
551
|
|
|
489
552
|
Install the models:
|
|
553
|
+
|
|
490
554
|
```bash
|
|
491
555
|
ollama pull deepseek-r1:7b # LLM
|
|
492
556
|
ollama pull nomic-embed-text # embeddings
|
|
@@ -539,7 +603,8 @@ Ensure Ollama is running (`ollama serve`) and that you have pulled the models yo
|
|
|
539
603
|
|
|
540
604
|
## Telemetry
|
|
541
605
|
|
|
542
|
-
Graphiti collects anonymous usage statistics to help us understand how the framework is being used and improve it for
|
|
606
|
+
Graphiti collects anonymous usage statistics to help us understand how the framework is being used and improve it for
|
|
607
|
+
everyone. We believe transparency is important, so here's exactly what we collect and why.
|
|
543
608
|
|
|
544
609
|
### What We Collect
|
|
545
610
|
|
|
@@ -549,9 +614,9 @@ When you initialize a Graphiti instance, we collect:
|
|
|
549
614
|
- **System information**: Operating system, Python version, and system architecture
|
|
550
615
|
- **Graphiti version**: The version you're using
|
|
551
616
|
- **Configuration choices**:
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
617
|
+
- LLM provider type (OpenAI, Azure, Anthropic, etc.)
|
|
618
|
+
- Database backend (Neo4j, FalkorDB, Kuzu, Amazon Neptune Database or Neptune Analytics)
|
|
619
|
+
- Embedder provider (OpenAI, Azure, Voyage, etc.)
|
|
555
620
|
|
|
556
621
|
### What We Don't Collect
|
|
557
622
|
|
|
@@ -603,10 +668,12 @@ echo 'export GRAPHITI_TELEMETRY_ENABLED=false' >> ~/.zshrc
|
|
|
603
668
|
|
|
604
669
|
```python
|
|
605
670
|
import os
|
|
671
|
+
|
|
606
672
|
os.environ['GRAPHITI_TELEMETRY_ENABLED'] = 'false'
|
|
607
673
|
|
|
608
674
|
# Then initialize Graphiti as usual
|
|
609
675
|
from graphiti_core import Graphiti
|
|
676
|
+
|
|
610
677
|
graphiti = Graphiti(...)
|
|
611
678
|
```
|
|
612
679
|
|
|
@@ -615,7 +682,8 @@ Telemetry is automatically disabled during test runs (when `pytest` is detected)
|
|
|
615
682
|
### Technical Details
|
|
616
683
|
|
|
617
684
|
- Telemetry uses PostHog for anonymous analytics collection
|
|
618
|
-
- All telemetry operations are designed to fail silently - they will never interrupt your application or affect Graphiti
|
|
685
|
+
- All telemetry operations are designed to fail silently - they will never interrupt your application or affect Graphiti
|
|
686
|
+
functionality
|
|
619
687
|
- The anonymous ID is stored locally and is not tied to any personal information
|
|
620
688
|
|
|
621
689
|
## Status and Roadmap
|
|
@@ -623,8 +691,8 @@ Telemetry is automatically disabled during test runs (when `pytest` is detected)
|
|
|
623
691
|
Graphiti is under active development. We aim to maintain API stability while working on:
|
|
624
692
|
|
|
625
693
|
- [x] Supporting custom graph schemas:
|
|
626
|
-
|
|
627
|
-
|
|
694
|
+
- Allow developers to provide their own defined node and edge classes when ingesting episodes
|
|
695
|
+
- Enable more flexible knowledge representation tailored to specific use cases
|
|
628
696
|
- [x] Enhancing retrieval capabilities with more robust and configurable options
|
|
629
697
|
- [x] Graphiti MCP Server
|
|
630
698
|
- [ ] Expanding test coverage to ensure reliability and catch edge cases
|