graphiti-core 0.17.6__tar.gz → 0.17.7__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 (183) hide show
  1. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/PKG-INFO +1 -1
  2. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/driver/driver.py +3 -0
  3. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/driver/falkordb_driver.py +2 -0
  4. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/graphiti.py +8 -2
  5. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/helpers.py +11 -0
  6. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search_utils.py +20 -18
  7. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/pyproject.toml +1 -1
  8. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/signatures/version1/cla.json +24 -0
  9. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/uv.lock +1 -1
  10. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.env.example +0 -0
  11. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  12. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/dependabot.yml +0 -0
  13. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/pull_request_template.md +0 -0
  14. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/secret_scanning.yml +0 -0
  15. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/cla.yml +0 -0
  16. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/claude-code-review.yml +0 -0
  17. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/claude.yml +0 -0
  18. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/codeql.yml +0 -0
  19. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/lint.yml +0 -0
  20. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/mcp-server-docker.yml +0 -0
  21. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/release-graphiti-core.yml +0 -0
  22. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/typecheck.yml +0 -0
  23. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.github/workflows/unit_tests.yml +0 -0
  24. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/.gitignore +0 -0
  25. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/CLAUDE.md +0 -0
  26. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/CODE_OF_CONDUCT.md +0 -0
  27. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/CONTRIBUTING.md +0 -0
  28. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/Dockerfile +0 -0
  29. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/LICENSE +0 -0
  30. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/Makefile +0 -0
  31. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/README.md +0 -0
  32. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/SECURITY.md +0 -0
  33. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/Zep-CLA.md +0 -0
  34. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/conftest.py +0 -0
  35. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/depot.json +0 -0
  36. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/docker-compose.test.yml +0 -0
  37. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/docker-compose.yml +0 -0
  38. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/ellipsis.yaml +0 -0
  39. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/data/manybirds_products.json +0 -0
  40. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/ecommerce/runner.ipynb +0 -0
  41. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/ecommerce/runner.py +0 -0
  42. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/langgraph-agent/agent.ipynb +0 -0
  43. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/langgraph-agent/tinybirds-jess.png +0 -0
  44. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/podcast/podcast_runner.py +0 -0
  45. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/podcast/podcast_transcript.txt +0 -0
  46. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/podcast/transcript_parser.py +0 -0
  47. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/quickstart/README.md +0 -0
  48. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/quickstart/quickstart_falkordb.py +0 -0
  49. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/quickstart/quickstart_neo4j.py +0 -0
  50. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/quickstart/requirements.txt +0 -0
  51. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/wizard_of_oz/parser.py +0 -0
  52. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/wizard_of_oz/runner.py +0 -0
  53. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/examples/wizard_of_oz/woo.txt +0 -0
  54. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/__init__.py +0 -0
  55. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/cross_encoder/__init__.py +0 -0
  56. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/cross_encoder/bge_reranker_client.py +0 -0
  57. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/cross_encoder/client.py +0 -0
  58. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/cross_encoder/gemini_reranker_client.py +0 -0
  59. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/cross_encoder/openai_reranker_client.py +0 -0
  60. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/driver/__init__.py +0 -0
  61. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/driver/neo4j_driver.py +0 -0
  62. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/edges.py +0 -0
  63. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/__init__.py +0 -0
  64. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/azure_openai.py +0 -0
  65. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/client.py +0 -0
  66. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/gemini.py +0 -0
  67. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/openai.py +0 -0
  68. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/embedder/voyage.py +0 -0
  69. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/errors.py +0 -0
  70. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/graph_queries.py +0 -0
  71. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/graphiti_types.py +0 -0
  72. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/__init__.py +0 -0
  73. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/anthropic_client.py +0 -0
  74. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/azure_openai_client.py +0 -0
  75. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/client.py +0 -0
  76. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/config.py +0 -0
  77. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/errors.py +0 -0
  78. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/gemini_client.py +0 -0
  79. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/groq_client.py +0 -0
  80. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/openai_base_client.py +0 -0
  81. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/openai_client.py +0 -0
  82. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/openai_generic_client.py +0 -0
  83. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/llm_client/utils.py +0 -0
  84. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/models/__init__.py +0 -0
  85. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/models/edges/__init__.py +0 -0
  86. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/models/edges/edge_db_queries.py +0 -0
  87. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/models/nodes/__init__.py +0 -0
  88. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/models/nodes/node_db_queries.py +0 -0
  89. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/nodes.py +0 -0
  90. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/__init__.py +0 -0
  91. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/dedupe_edges.py +0 -0
  92. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/dedupe_nodes.py +0 -0
  93. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/eval.py +0 -0
  94. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/extract_edge_dates.py +0 -0
  95. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/extract_edges.py +0 -0
  96. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/extract_nodes.py +0 -0
  97. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/invalidate_edges.py +0 -0
  98. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/lib.py +0 -0
  99. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/models.py +0 -0
  100. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/prompt_helpers.py +0 -0
  101. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/prompts/summarize_nodes.py +0 -0
  102. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/py.typed +0 -0
  103. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/__init__.py +0 -0
  104. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search.py +0 -0
  105. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search_config.py +0 -0
  106. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search_config_recipes.py +0 -0
  107. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search_filters.py +0 -0
  108. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/search/search_helpers.py +0 -0
  109. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/telemetry/__init__.py +0 -0
  110. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/telemetry/telemetry.py +0 -0
  111. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/__init__.py +0 -0
  112. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/bulk_utils.py +0 -0
  113. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/datetime_utils.py +0 -0
  114. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/__init__.py +0 -0
  115. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/community_operations.py +0 -0
  116. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/edge_operations.py +0 -0
  117. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/graph_data_operations.py +0 -0
  118. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/node_operations.py +0 -0
  119. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/temporal_operations.py +0 -0
  120. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/maintenance/utils.py +0 -0
  121. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/graphiti_core/utils/ontology_utils/entity_types_utils.py +0 -0
  122. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/images/arxiv-screenshot.png +0 -0
  123. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/images/graphiti-graph-intro.gif +0 -0
  124. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/images/graphiti-intro-slides-stock-2.gif +0 -0
  125. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/images/simple_graph.svg +0 -0
  126. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/.env.example +0 -0
  127. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/.python-version +0 -0
  128. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/Dockerfile +0 -0
  129. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/README.md +0 -0
  130. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/cursor_rules.md +0 -0
  131. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/docker-compose.yml +0 -0
  132. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/graphiti_mcp_server.py +0 -0
  133. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/mcp_config_sse_example.json +0 -0
  134. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/mcp_config_stdio_example.json +0 -0
  135. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/pyproject.toml +0 -0
  136. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/mcp_server/uv.lock +0 -0
  137. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/poetry.lock +0 -0
  138. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/py.typed +0 -0
  139. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/pytest.ini +0 -0
  140. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/.env.example +0 -0
  141. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/Makefile +0 -0
  142. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/README.md +0 -0
  143. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/__init__.py +0 -0
  144. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/config.py +0 -0
  145. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/dto/__init__.py +0 -0
  146. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/dto/common.py +0 -0
  147. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/dto/ingest.py +0 -0
  148. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/dto/retrieve.py +0 -0
  149. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/main.py +0 -0
  150. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/routers/__init__.py +0 -0
  151. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/routers/ingest.py +0 -0
  152. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/routers/retrieve.py +0 -0
  153. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/graph_service/zep_graphiti.py +0 -0
  154. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/pyproject.toml +0 -0
  155. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/server/uv.lock +0 -0
  156. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/cross_encoder/test_bge_reranker_client.py +0 -0
  157. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/cross_encoder/test_gemini_reranker_client.py +0 -0
  158. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/driver/__init__.py +0 -0
  159. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/driver/test_falkordb_driver.py +0 -0
  160. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/embedder/embedder_fixtures.py +0 -0
  161. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/embedder/test_gemini.py +0 -0
  162. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/embedder/test_openai.py +0 -0
  163. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/embedder/test_voyage.py +0 -0
  164. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/data/longmemeval_data/README.md +0 -0
  165. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/data/longmemeval_data/longmemeval_oracle.json +0 -0
  166. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/eval_cli.py +0 -0
  167. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/eval_e2e_graph_building.py +0 -0
  168. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/pytest.ini +0 -0
  169. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/evals/utils.py +0 -0
  170. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/helpers_test.py +0 -0
  171. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/llm_client/test_anthropic_client.py +0 -0
  172. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/llm_client/test_anthropic_client_int.py +0 -0
  173. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/llm_client/test_client.py +0 -0
  174. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/llm_client/test_errors.py +0 -0
  175. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/llm_client/test_gemini_client.py +0 -0
  176. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/test_entity_exclusion_int.py +0 -0
  177. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/test_graphiti_falkordb_int.py +0 -0
  178. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/test_graphiti_int.py +0 -0
  179. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/test_node_falkordb_int.py +0 -0
  180. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/test_node_int.py +0 -0
  181. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/utils/maintenance/test_edge_operations.py +0 -0
  182. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/utils/maintenance/test_temporal_operations_int.py +0 -0
  183. {graphiti_core-0.17.6 → graphiti_core-0.17.7}/tests/utils/search/search_utils_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphiti-core
3
- Version: 0.17.6
3
+ Version: 0.17.7
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
@@ -46,6 +46,9 @@ class GraphDriverSession(ABC):
46
46
 
47
47
  class GraphDriver(ABC):
48
48
  provider: str
49
+ fulltext_syntax: str = (
50
+ '' # Neo4j (default) syntax does not require a prefix for fulltext queries
51
+ )
49
52
 
50
53
  @abstractmethod
51
54
  def execute_query(self, cypher_query_: str, **kwargs: Any) -> Coroutine:
@@ -97,6 +97,8 @@ class FalkorDriver(GraphDriver):
97
97
  self.client = FalkorDB(host=host, port=port, username=username, password=password)
98
98
  self._database = database
99
99
 
100
+ self.fulltext_syntax = '@' # FalkorDB uses a redisearch-like syntax for fulltext queries see https://redis.io/docs/latest/develop/ai/search-and-query/query/full-text/
101
+
100
102
  def _get_graph(self, graph_name: str | None) -> FalkorGraph:
101
103
  # FalkorDB requires a non-None database name for multi-tenant graphs; the default is "default_db"
102
104
  if graph_name is None:
@@ -30,6 +30,7 @@ from graphiti_core.edges import EntityEdge, EpisodicEdge
30
30
  from graphiti_core.embedder import EmbedderClient, OpenAIEmbedder
31
31
  from graphiti_core.graphiti_types import GraphitiClients
32
32
  from graphiti_core.helpers import (
33
+ get_default_group_id,
33
34
  semaphore_gather,
34
35
  validate_excluded_entity_types,
35
36
  validate_group_id,
@@ -352,7 +353,7 @@ class Graphiti:
352
353
  source_description: str,
353
354
  reference_time: datetime,
354
355
  source: EpisodeType = EpisodeType.message,
355
- group_id: str = '',
356
+ group_id: str | None = None,
356
357
  uuid: str | None = None,
357
358
  update_communities: bool = False,
358
359
  entity_types: dict[str, BaseModel] | None = None,
@@ -420,7 +421,10 @@ class Graphiti:
420
421
  start = time()
421
422
  now = utc_now()
422
423
 
424
+ # if group_id is None, use the default group id by the provider
425
+ group_id = group_id or get_default_group_id(self.driver.provider)
423
426
  validate_entity_types(entity_types)
427
+
424
428
  validate_excluded_entity_types(excluded_entity_types, entity_types)
425
429
  validate_group_id(group_id)
426
430
 
@@ -537,7 +541,7 @@ class Graphiti:
537
541
  async def add_episode_bulk(
538
542
  self,
539
543
  bulk_episodes: list[RawEpisode],
540
- group_id: str = '',
544
+ group_id: str | None = None,
541
545
  entity_types: dict[str, BaseModel] | None = None,
542
546
  excluded_entity_types: list[str] | None = None,
543
547
  edge_types: dict[str, BaseModel] | None = None,
@@ -583,6 +587,8 @@ class Graphiti:
583
587
  start = time()
584
588
  now = utc_now()
585
589
 
590
+ # if group_id is None, use the default group id by the provider
591
+ group_id = group_id or get_default_group_id(self.driver.provider)
586
592
  validate_group_id(group_id)
587
593
 
588
594
  # Create default edge type map
@@ -52,6 +52,17 @@ def parse_db_date(neo_date: neo4j_time.DateTime | str | None) -> datetime | None
52
52
  )
53
53
 
54
54
 
55
+ def get_default_group_id(db_type: str) -> str:
56
+ """
57
+ This function differentiates the default group id based on the database type.
58
+ For most databases, the default group id is an empty string, while there are database types that require a specific default group id.
59
+ """
60
+ if db_type == 'falkordb':
61
+ return '_'
62
+ else:
63
+ return ''
64
+
65
+
55
66
  def lucene_sanitize(query: str) -> str:
56
67
  # Escape special characters from a query before passing into Lucene
57
68
  # + - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
@@ -57,12 +57,14 @@ RELEVANT_SCHEMA_LIMIT = 10
57
57
  DEFAULT_MIN_SCORE = 0.6
58
58
  DEFAULT_MMR_LAMBDA = 0.5
59
59
  MAX_SEARCH_DEPTH = 3
60
- MAX_QUERY_LENGTH = 32
60
+ MAX_QUERY_LENGTH = 128
61
61
 
62
62
 
63
- def fulltext_query(query: str, group_ids: list[str] | None = None):
63
+ def fulltext_query(query: str, group_ids: list[str] | None = None, fulltext_syntax: str = ''):
64
64
  group_ids_filter_list = (
65
- [f'group_id:"{lucene_sanitize(g)}"' for g in group_ids] if group_ids is not None else []
65
+ [fulltext_syntax + f"group_id:'{lucene_sanitize(g)}'" for g in group_ids]
66
+ if group_ids is not None
67
+ else []
66
68
  )
67
69
  group_ids_filter = ''
68
70
  for f in group_ids_filter_list:
@@ -157,7 +159,7 @@ async def edge_fulltext_search(
157
159
  limit=RELEVANT_SCHEMA_LIMIT,
158
160
  ) -> list[EntityEdge]:
159
161
  # fulltext search over facts
160
- fuzzy_query = fulltext_query(query, group_ids)
162
+ fuzzy_query = fulltext_query(query, group_ids, driver.fulltext_syntax)
161
163
  if fuzzy_query == '':
162
164
  return []
163
165
 
@@ -293,12 +295,12 @@ async def edge_bfs_search(
293
295
 
294
296
  query = (
295
297
  """
296
- UNWIND $bfs_origin_node_uuids AS origin_uuid
297
- MATCH path = (origin:Entity|Episodic {uuid: origin_uuid})-[:RELATES_TO|MENTIONS]->{1,3}(n:Entity)
298
- UNWIND relationships(path) AS rel
299
- MATCH (n:Entity)-[r:RELATES_TO]-(m:Entity)
300
- WHERE r.uuid = rel.uuid
301
- """
298
+ UNWIND $bfs_origin_node_uuids AS origin_uuid
299
+ MATCH path = (origin:Entity|Episodic {uuid: origin_uuid})-[:RELATES_TO|MENTIONS]->{1,3}(n:Entity)
300
+ UNWIND relationships(path) AS rel
301
+ MATCH (n:Entity)-[r:RELATES_TO]-(m:Entity)
302
+ WHERE r.uuid = rel.uuid
303
+ """
302
304
  + filter_query
303
305
  + """
304
306
  RETURN DISTINCT
@@ -340,7 +342,7 @@ async def node_fulltext_search(
340
342
  limit=RELEVANT_SCHEMA_LIMIT,
341
343
  ) -> list[EntityNode]:
342
344
  # BM25 search to get top nodes
343
- fuzzy_query = fulltext_query(query, group_ids)
345
+ fuzzy_query = fulltext_query(query, group_ids, driver.fulltext_syntax)
344
346
  if fuzzy_query == '':
345
347
  return []
346
348
  filter_query, filter_params = node_search_filter_query_constructor(search_filter)
@@ -441,10 +443,10 @@ async def node_bfs_search(
441
443
 
442
444
  query = (
443
445
  """
444
- UNWIND $bfs_origin_node_uuids AS origin_uuid
445
- MATCH (origin:Entity|Episodic {uuid: origin_uuid})-[:RELATES_TO|MENTIONS]->{1,3}(n:Entity)
446
- WHERE n.group_id = origin.group_id
447
- """
446
+ UNWIND $bfs_origin_node_uuids AS origin_uuid
447
+ MATCH (origin:Entity|Episodic {uuid: origin_uuid})-[:RELATES_TO|MENTIONS]->{1,3}(n:Entity)
448
+ WHERE n.group_id = origin.group_id
449
+ """
448
450
  + filter_query
449
451
  + ENTITY_NODE_RETURN
450
452
  + """
@@ -472,7 +474,7 @@ async def episode_fulltext_search(
472
474
  limit=RELEVANT_SCHEMA_LIMIT,
473
475
  ) -> list[EpisodicNode]:
474
476
  # BM25 search to get top episodes
475
- fuzzy_query = fulltext_query(query, group_ids)
477
+ fuzzy_query = fulltext_query(query, group_ids, driver.fulltext_syntax)
476
478
  if fuzzy_query == '':
477
479
  return []
478
480
 
@@ -516,7 +518,7 @@ async def community_fulltext_search(
516
518
  limit=RELEVANT_SCHEMA_LIMIT,
517
519
  ) -> list[CommunityNode]:
518
520
  # BM25 search to get top communities
519
- fuzzy_query = fulltext_query(query, group_ids)
521
+ fuzzy_query = fulltext_query(query, group_ids, driver.fulltext_syntax)
520
522
  if fuzzy_query == '':
521
523
  return []
522
524
 
@@ -740,7 +742,7 @@ async def get_relevant_nodes(
740
742
  'uuid': node.uuid,
741
743
  'name': node.name,
742
744
  'name_embedding': node.name_embedding,
743
- 'fulltext_query': fulltext_query(node.name, [node.group_id]),
745
+ 'fulltext_query': fulltext_query(node.name, [node.group_id], driver.fulltext_syntax),
744
746
  }
745
747
  for node in nodes
746
748
  ]
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "graphiti-core"
3
3
  description = "A temporal graph building library"
4
- version = "0.17.6"
4
+ version = "0.17.7"
5
5
  authors = [
6
6
  { "name" = "Paul Paliychuk", "email" = "paul@getzep.com" },
7
7
  { "name" = "Preston Rasmussen", "email" = "preston@getzep.com" },
@@ -207,6 +207,30 @@
207
207
  "created_at": "2025-07-13T08:54:26Z",
208
208
  "repoId": 840056306,
209
209
  "pullRequestNo": 711
210
+ },
211
+ {
212
+ "name": "soraxas",
213
+ "id": 22362177,
214
+ "comment_id": 3084093750,
215
+ "created_at": "2025-07-17T13:33:25Z",
216
+ "repoId": 840056306,
217
+ "pullRequestNo": 741
218
+ },
219
+ {
220
+ "name": "sdht0",
221
+ "id": 867424,
222
+ "comment_id": 3092540466,
223
+ "created_at": "2025-07-19T19:52:21Z",
224
+ "repoId": 840056306,
225
+ "pullRequestNo": 748
226
+ },
227
+ {
228
+ "name": "Naseem77",
229
+ "id": 34807727,
230
+ "comment_id": 3093746709,
231
+ "created_at": "2025-07-20T07:07:33Z",
232
+ "repoId": 840056306,
233
+ "pullRequestNo": 742
210
234
  }
211
235
  ]
212
236
  }
@@ -746,7 +746,7 @@ wheels = [
746
746
 
747
747
  [[package]]
748
748
  name = "graphiti-core"
749
- version = "0.17.6"
749
+ version = "0.17.7"
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