graphiti-core 0.18.6__tar.gz → 0.18.8__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.

Files changed (182) hide show
  1. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/CONTRIBUTING.md +3 -0
  2. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/PKG-INFO +1 -1
  3. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/cross_encoder/openai_reranker_client.py +1 -1
  4. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/edges.py +15 -0
  5. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/graphiti.py +5 -8
  6. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/models/nodes/node_db_queries.py +1 -1
  7. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/nodes.py +27 -0
  8. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/dedupe_nodes.py +1 -1
  9. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search.py +63 -41
  10. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/community_operations.py +2 -1
  11. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/pyproject.toml +1 -1
  12. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/signatures/version1/cla.json +16 -0
  13. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/uv.lock +2 -2
  14. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.env.example +0 -0
  15. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  16. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/dependabot.yml +0 -0
  17. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/pull_request_template.md +0 -0
  18. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/secret_scanning.yml +0 -0
  19. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/cla.yml +0 -0
  20. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/claude-code-review.yml +0 -0
  21. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/claude.yml +0 -0
  22. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/codeql.yml +0 -0
  23. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/lint.yml +0 -0
  24. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/mcp-server-docker.yml +0 -0
  25. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/release-graphiti-core.yml +0 -0
  26. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/typecheck.yml +0 -0
  27. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.github/workflows/unit_tests.yml +0 -0
  28. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/.gitignore +0 -0
  29. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/CLAUDE.md +0 -0
  30. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/CODE_OF_CONDUCT.md +0 -0
  31. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/Dockerfile +0 -0
  32. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/LICENSE +0 -0
  33. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/Makefile +0 -0
  34. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/README.md +0 -0
  35. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/SECURITY.md +0 -0
  36. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/Zep-CLA.md +0 -0
  37. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/conftest.py +0 -0
  38. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/depot.json +0 -0
  39. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/docker-compose.test.yml +0 -0
  40. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/docker-compose.yml +0 -0
  41. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/ellipsis.yaml +0 -0
  42. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/data/manybirds_products.json +0 -0
  43. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/ecommerce/runner.ipynb +0 -0
  44. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/ecommerce/runner.py +0 -0
  45. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/langgraph-agent/agent.ipynb +0 -0
  46. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/langgraph-agent/tinybirds-jess.png +0 -0
  47. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/podcast/podcast_runner.py +0 -0
  48. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/podcast/podcast_transcript.txt +0 -0
  49. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/podcast/transcript_parser.py +0 -0
  50. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/quickstart/README.md +0 -0
  51. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/quickstart/quickstart_falkordb.py +0 -0
  52. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/quickstart/quickstart_neo4j.py +0 -0
  53. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/quickstart/requirements.txt +0 -0
  54. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/wizard_of_oz/parser.py +0 -0
  55. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/wizard_of_oz/runner.py +0 -0
  56. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/examples/wizard_of_oz/woo.txt +0 -0
  57. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/__init__.py +0 -0
  58. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/cross_encoder/__init__.py +0 -0
  59. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
  60. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/cross_encoder/client.py +0 -0
  61. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/cross_encoder/gemini_reranker_client.py +0 -0
  62. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/driver/__init__.py +0 -0
  63. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/driver/driver.py +0 -0
  64. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/driver/falkordb_driver.py +0 -0
  65. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/driver/neo4j_driver.py +0 -0
  66. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/__init__.py +0 -0
  67. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/azure_openai.py +0 -0
  68. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/client.py +0 -0
  69. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/gemini.py +0 -0
  70. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/openai.py +0 -0
  71. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/embedder/voyage.py +0 -0
  72. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/errors.py +0 -0
  73. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/graph_queries.py +0 -0
  74. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/graphiti_types.py +0 -0
  75. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/helpers.py +0 -0
  76. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/__init__.py +0 -0
  77. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/anthropic_client.py +0 -0
  78. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/azure_openai_client.py +0 -0
  79. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/client.py +0 -0
  80. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/config.py +0 -0
  81. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/errors.py +0 -0
  82. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/gemini_client.py +0 -0
  83. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/groq_client.py +0 -0
  84. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/openai_base_client.py +0 -0
  85. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/openai_client.py +0 -0
  86. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/openai_generic_client.py +0 -0
  87. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/llm_client/utils.py +0 -0
  88. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/models/__init__.py +0 -0
  89. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/models/edges/__init__.py +0 -0
  90. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/models/edges/edge_db_queries.py +0 -0
  91. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/models/nodes/__init__.py +0 -0
  92. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/__init__.py +0 -0
  93. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/dedupe_edges.py +0 -0
  94. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/eval.py +0 -0
  95. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/extract_edge_dates.py +0 -0
  96. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/extract_edges.py +0 -0
  97. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/extract_nodes.py +0 -0
  98. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/invalidate_edges.py +0 -0
  99. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/lib.py +0 -0
  100. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/models.py +0 -0
  101. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/prompt_helpers.py +0 -0
  102. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/prompts/summarize_nodes.py +0 -0
  103. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/py.typed +0 -0
  104. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/__init__.py +0 -0
  105. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search_config.py +0 -0
  106. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search_config_recipes.py +0 -0
  107. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search_filters.py +0 -0
  108. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search_helpers.py +0 -0
  109. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/search/search_utils.py +0 -0
  110. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/telemetry/__init__.py +0 -0
  111. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/telemetry/telemetry.py +0 -0
  112. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/__init__.py +0 -0
  113. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/bulk_utils.py +0 -0
  114. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/datetime_utils.py +0 -0
  115. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/__init__.py +0 -0
  116. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/edge_operations.py +0 -0
  117. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/graph_data_operations.py +0 -0
  118. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/node_operations.py +0 -0
  119. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
  120. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/maintenance/utils.py +0 -0
  121. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/graphiti_core/utils/ontology_utils/entity_types_utils.py +0 -0
  122. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/images/arxiv-screenshot.png +0 -0
  123. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/images/graphiti-graph-intro.gif +0 -0
  124. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/images/graphiti-intro-slides-stock-2.gif +0 -0
  125. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/images/simple_graph.svg +0 -0
  126. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/.env.example +0 -0
  127. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/.python-version +0 -0
  128. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/Dockerfile +0 -0
  129. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/README.md +0 -0
  130. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/cursor_rules.md +0 -0
  131. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/docker-compose.yml +0 -0
  132. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/graphiti_mcp_server.py +0 -0
  133. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/mcp_config_sse_example.json +0 -0
  134. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/mcp_config_stdio_example.json +0 -0
  135. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/pyproject.toml +0 -0
  136. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/mcp_server/uv.lock +0 -0
  137. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/poetry.lock +0 -0
  138. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/py.typed +0 -0
  139. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/pytest.ini +0 -0
  140. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/.env.example +0 -0
  141. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/Makefile +0 -0
  142. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/README.md +0 -0
  143. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/__init__.py +0 -0
  144. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/config.py +0 -0
  145. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/dto/__init__.py +0 -0
  146. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/dto/common.py +0 -0
  147. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/dto/ingest.py +0 -0
  148. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/dto/retrieve.py +0 -0
  149. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/main.py +0 -0
  150. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/routers/__init__.py +0 -0
  151. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/routers/ingest.py +0 -0
  152. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/routers/retrieve.py +0 -0
  153. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/graph_service/zep_graphiti.py +0 -0
  154. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/pyproject.toml +0 -0
  155. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/server/uv.lock +0 -0
  156. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/cross_encoder/test_bge_reranker_client.py +0 -0
  157. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/cross_encoder/test_gemini_reranker_client.py +0 -0
  158. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/driver/__init__.py +0 -0
  159. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/driver/test_falkordb_driver.py +0 -0
  160. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/embedder/embedder_fixtures.py +0 -0
  161. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/embedder/test_gemini.py +0 -0
  162. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/embedder/test_openai.py +0 -0
  163. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/embedder/test_voyage.py +0 -0
  164. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/data/longmemeval_data/README.md +0 -0
  165. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/data/longmemeval_data/longmemeval_oracle.json +0 -0
  166. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/eval_cli.py +0 -0
  167. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/eval_e2e_graph_building.py +0 -0
  168. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/pytest.ini +0 -0
  169. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/evals/utils.py +0 -0
  170. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/helpers_test.py +0 -0
  171. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/llm_client/test_anthropic_client.py +0 -0
  172. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/llm_client/test_anthropic_client_int.py +0 -0
  173. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/llm_client/test_client.py +0 -0
  174. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/llm_client/test_errors.py +0 -0
  175. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/llm_client/test_gemini_client.py +0 -0
  176. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/test_edge_int.py +0 -0
  177. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/test_entity_exclusion_int.py +0 -0
  178. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/test_graphiti_int.py +0 -0
  179. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/test_node_int.py +0 -0
  180. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/utils/maintenance/test_edge_operations.py +0 -0
  181. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/utils/maintenance/test_temporal_operations_int.py +0 -0
  182. {graphiti_core-0.18.6 → graphiti_core-0.18.8}/tests/utils/search/search_utils_test.py +0 -0
@@ -36,6 +36,9 @@ Join our [Discord server](https://discord.com/invite/W8Kw6bsgXQ) community and p
36
36
 
37
37
  ## What happens next?
38
38
 
39
+ ### Notes for Large Changes
40
+ > Please keep the changes as concise as possible. For major architectural changes (>500 LOC), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
41
+
39
42
  Once you've found an issue tagged with "good first issue" or "help wanted," or prepared an example to share, here's how to turn that into a contribution:
40
43
 
41
44
  1. Share your approach in the issue discussion or [Discord](https://discord.com/invite/W8Kw6bsgXQ) before diving deep into code. This helps ensure your solution adheres to the architecture of Graphiti from the start and saves you from potential rework.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphiti-core
3
- Version: 0.18.6
3
+ Version: 0.18.8
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
@@ -84,7 +84,7 @@ class OpenAIRerankerClient(CrossEncoderClient):
84
84
  responses = await semaphore_gather(
85
85
  *[
86
86
  self.client.chat.completions.create(
87
- model=DEFAULT_MODEL,
87
+ model=self.config.model or DEFAULT_MODEL,
88
88
  messages=openai_messages,
89
89
  temperature=0,
90
90
  max_tokens=1,
@@ -64,6 +64,21 @@ class Edge(BaseModel, ABC):
64
64
 
65
65
  return result
66
66
 
67
+ @classmethod
68
+ async def delete_by_uuids(cls, driver: GraphDriver, uuids: list[str]):
69
+ result = await driver.execute_query(
70
+ """
71
+ MATCH (n)-[e:MENTIONS|RELATES_TO|HAS_MEMBER]->(m)
72
+ WHERE e.uuid IN $uuids
73
+ DELETE e
74
+ """,
75
+ uuids=uuids,
76
+ )
77
+
78
+ logger.debug(f'Deleted Edges: {uuids}')
79
+
80
+ return result
81
+
67
82
  def __hash__(self):
68
83
  return hash(self.uuid)
69
84
 
@@ -28,6 +28,7 @@ from graphiti_core.driver.driver import GraphDriver
28
28
  from graphiti_core.driver.neo4j_driver import Neo4jDriver
29
29
  from graphiti_core.edges import (
30
30
  CommunityEdge,
31
+ Edge,
31
32
  EntityEdge,
32
33
  EpisodicEdge,
33
34
  create_entity_edge_embeddings,
@@ -46,6 +47,7 @@ from graphiti_core.nodes import (
46
47
  EntityNode,
47
48
  EpisodeType,
48
49
  EpisodicNode,
50
+ Node,
49
51
  create_entity_node_embeddings,
50
52
  )
51
53
  from graphiti_core.search.search import SearchConfig, search
@@ -1066,12 +1068,7 @@ class Graphiti:
1066
1068
  if record['episode_count'] == 1:
1067
1069
  nodes_to_delete.append(node)
1068
1070
 
1069
- await semaphore_gather(
1070
- *[node.delete(self.driver) for node in nodes_to_delete],
1071
- max_coroutines=self.max_coroutines,
1072
- )
1073
- await semaphore_gather(
1074
- *[edge.delete(self.driver) for edge in edges_to_delete],
1075
- max_coroutines=self.max_coroutines,
1076
- )
1071
+ await Node.delete_by_uuids(self.driver, [node.uuid for node in nodes_to_delete])
1072
+
1073
+ await Edge.delete_by_uuids(self.driver, [edge.uuid for edge in edges_to_delete])
1077
1074
  await episode.delete(self.driver)
@@ -111,7 +111,7 @@ def get_community_node_save_query(provider: GraphProvider) -> str:
111
111
  if provider == GraphProvider.FALKORDB:
112
112
  return """
113
113
  MERGE (n:Community {uuid: $uuid})
114
- SET n = {uuid: $uuid, name: $name, group_id: $group_id, summary: $summary, created_at: $created_at, name_embedding: $name_embedding}
114
+ SET n = {uuid: $uuid, name: $name, group_id: $group_id, summary: $summary, created_at: $created_at, name_embedding: vecf32($name_embedding)}
115
115
  RETURN n.uuid AS uuid
116
116
  """
117
117
 
@@ -142,6 +142,33 @@ class Node(BaseModel, ABC):
142
142
  batch_size=batch_size,
143
143
  )
144
144
 
145
+ @classmethod
146
+ async def delete_by_uuids(cls, driver: GraphDriver, uuids: list[str], batch_size: int = 100):
147
+ if driver.provider == GraphProvider.FALKORDB:
148
+ for label in ['Entity', 'Episodic', 'Community']:
149
+ await driver.execute_query(
150
+ f"""
151
+ MATCH (n:{label})
152
+ WHERE n.uuid IN $uuids
153
+ DETACH DELETE n
154
+ """,
155
+ uuids=uuids,
156
+ )
157
+ else:
158
+ async with driver.session() as session:
159
+ await session.run(
160
+ """
161
+ MATCH (n:Entity|Episodic|Community)
162
+ WHERE n.uuid IN $uuids
163
+ CALL {
164
+ WITH n
165
+ DETACH DELETE n
166
+ } IN TRANSACTIONS OF $batch_size ROWS
167
+ """,
168
+ uuids=uuids,
169
+ batch_size=batch_size,
170
+ )
171
+
145
172
  @classmethod
146
173
  async def get_by_uuid(cls, driver: GraphDriver, uuid: str): ...
147
174
 
@@ -108,7 +108,7 @@ def nodes(context: dict[str, Any]) -> list[Message]:
108
108
  Message(
109
109
  role='system',
110
110
  content='You are a helpful assistant that determines whether or not ENTITIES extracted from a conversation are duplicates'
111
- 'of existing entities.',
111
+ ' of existing entities.',
112
112
  ),
113
113
  Message(
114
114
  role='user',
@@ -177,31 +177,42 @@ async def edge_search(
177
177
  ) -> tuple[list[EntityEdge], list[float]]:
178
178
  if config is None:
179
179
  return [], []
180
- search_results: list[list[EntityEdge]] = list(
181
- await semaphore_gather(
182
- *[
183
- edge_fulltext_search(driver, query, search_filter, group_ids, 2 * limit),
184
- edge_similarity_search(
185
- driver,
186
- query_vector,
187
- None,
188
- None,
189
- search_filter,
190
- group_ids,
191
- 2 * limit,
192
- config.sim_min_score,
193
- ),
194
- edge_bfs_search(
195
- driver,
196
- bfs_origin_node_uuids,
197
- config.bfs_max_depth,
198
- search_filter,
199
- group_ids,
200
- 2 * limit,
201
- ),
202
- ]
180
+
181
+ # Build search tasks based on configured search methods
182
+ search_tasks = []
183
+ if EdgeSearchMethod.bm25 in config.search_methods:
184
+ search_tasks.append(
185
+ edge_fulltext_search(driver, query, search_filter, group_ids, 2 * limit)
203
186
  )
204
- )
187
+ if EdgeSearchMethod.cosine_similarity in config.search_methods:
188
+ search_tasks.append(
189
+ edge_similarity_search(
190
+ driver,
191
+ query_vector,
192
+ None,
193
+ None,
194
+ search_filter,
195
+ group_ids,
196
+ 2 * limit,
197
+ config.sim_min_score,
198
+ )
199
+ )
200
+ if EdgeSearchMethod.bfs in config.search_methods:
201
+ search_tasks.append(
202
+ edge_bfs_search(
203
+ driver,
204
+ bfs_origin_node_uuids,
205
+ config.bfs_max_depth,
206
+ search_filter,
207
+ group_ids,
208
+ 2 * limit,
209
+ )
210
+ )
211
+
212
+ # Execute only the configured search methods
213
+ search_results: list[list[EntityEdge]] = []
214
+ if search_tasks:
215
+ search_results = list(await semaphore_gather(*search_tasks))
205
216
 
206
217
  if EdgeSearchMethod.bfs in config.search_methods and bfs_origin_node_uuids is None:
207
218
  source_node_uuids = [edge.source_node_uuid for result in search_results for edge in result]
@@ -289,24 +300,35 @@ async def node_search(
289
300
  ) -> tuple[list[EntityNode], list[float]]:
290
301
  if config is None:
291
302
  return [], []
292
- search_results: list[list[EntityNode]] = list(
293
- await semaphore_gather(
294
- *[
295
- node_fulltext_search(driver, query, search_filter, group_ids, 2 * limit),
296
- node_similarity_search(
297
- driver, query_vector, search_filter, group_ids, 2 * limit, config.sim_min_score
298
- ),
299
- node_bfs_search(
300
- driver,
301
- bfs_origin_node_uuids,
302
- search_filter,
303
- config.bfs_max_depth,
304
- group_ids,
305
- 2 * limit,
306
- ),
307
- ]
303
+
304
+ # Build search tasks based on configured search methods
305
+ search_tasks = []
306
+ if NodeSearchMethod.bm25 in config.search_methods:
307
+ search_tasks.append(
308
+ node_fulltext_search(driver, query, search_filter, group_ids, 2 * limit)
308
309
  )
309
- )
310
+ if NodeSearchMethod.cosine_similarity in config.search_methods:
311
+ search_tasks.append(
312
+ node_similarity_search(
313
+ driver, query_vector, search_filter, group_ids, 2 * limit, config.sim_min_score
314
+ )
315
+ )
316
+ if NodeSearchMethod.bfs in config.search_methods:
317
+ search_tasks.append(
318
+ node_bfs_search(
319
+ driver,
320
+ bfs_origin_node_uuids,
321
+ search_filter,
322
+ config.bfs_max_depth,
323
+ group_ids,
324
+ 2 * limit,
325
+ )
326
+ )
327
+
328
+ # Execute only the configured search methods
329
+ search_results: list[list[EntityNode]] = []
330
+ if search_tasks:
331
+ search_results = list(await semaphore_gather(*search_tasks))
310
332
 
311
333
  if NodeSearchMethod.bfs in config.search_methods and bfs_origin_node_uuids is None:
312
334
  origin_node_uuids = [node.uuid for result in search_results for node in result]
@@ -33,7 +33,8 @@ async def get_community_clusters(
33
33
  if group_ids is None:
34
34
  group_id_values, _, _ = await driver.execute_query(
35
35
  """
36
- MATCH (n:Entity WHERE n.group_id IS NOT NULL)
36
+ MATCH (n:Entity)
37
+ WHERE n.group_id IS NOT NULL
37
38
  RETURN
38
39
  collect(DISTINCT n.group_id) AS group_ids
39
40
  """,
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "graphiti-core"
3
3
  description = "A temporal graph building library"
4
- version = "0.18.6"
4
+ version = "0.18.8"
5
5
  authors = [
6
6
  { name = "Paul Paliychuk", email = "paul@getzep.com" },
7
7
  { name = "Preston Rasmussen", email = "preston@getzep.com" },
@@ -303,6 +303,22 @@
303
303
  "created_at": "2025-08-08T07:52:27Z",
304
304
  "repoId": 840056306,
305
305
  "pullRequestNo": 816
306
+ },
307
+ {
308
+ "name": "CaroLe-prw",
309
+ "id": 42695882,
310
+ "comment_id": 3187949734,
311
+ "created_at": "2025-08-14T10:29:25Z",
312
+ "repoId": 840056306,
313
+ "pullRequestNo": 833
314
+ },
315
+ {
316
+ "name": "Wizmann",
317
+ "id": 1270921,
318
+ "comment_id": 3196208374,
319
+ "created_at": "2025-08-18T11:09:35Z",
320
+ "repoId": 840056306,
321
+ "pullRequestNo": 842
306
322
  }
307
323
  ]
308
324
  }
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.10, <4"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.14'",
@@ -746,7 +746,7 @@ wheels = [
746
746
 
747
747
  [[package]]
748
748
  name = "graphiti-core"
749
- version = "0.18.6"
749
+ version = "0.18.8"
750
750
  source = { editable = "." }
751
751
  dependencies = [
752
752
  { name = "diskcache" },
File without changes
File without changes
File without changes
File without changes
File without changes