cognee 0.2.3.dev1__py3-none-any.whl → 0.3.0__py3-none-any.whl

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.
Files changed (252) hide show
  1. cognee/__init__.py +2 -0
  2. cognee/__main__.py +4 -0
  3. cognee/api/client.py +28 -3
  4. cognee/api/health.py +10 -13
  5. cognee/api/v1/add/add.py +20 -6
  6. cognee/api/v1/add/routers/get_add_router.py +12 -37
  7. cognee/api/v1/cloud/routers/__init__.py +1 -0
  8. cognee/api/v1/cloud/routers/get_checks_router.py +23 -0
  9. cognee/api/v1/cognify/code_graph_pipeline.py +14 -3
  10. cognee/api/v1/cognify/cognify.py +67 -105
  11. cognee/api/v1/cognify/routers/get_cognify_router.py +11 -3
  12. cognee/api/v1/datasets/routers/get_datasets_router.py +16 -5
  13. cognee/api/v1/memify/routers/__init__.py +1 -0
  14. cognee/api/v1/memify/routers/get_memify_router.py +100 -0
  15. cognee/api/v1/notebooks/routers/__init__.py +1 -0
  16. cognee/api/v1/notebooks/routers/get_notebooks_router.py +96 -0
  17. cognee/api/v1/responses/default_tools.py +4 -0
  18. cognee/api/v1/responses/dispatch_function.py +6 -1
  19. cognee/api/v1/responses/models.py +1 -1
  20. cognee/api/v1/search/routers/get_search_router.py +20 -1
  21. cognee/api/v1/search/search.py +17 -4
  22. cognee/api/v1/sync/__init__.py +17 -0
  23. cognee/api/v1/sync/routers/__init__.py +3 -0
  24. cognee/api/v1/sync/routers/get_sync_router.py +241 -0
  25. cognee/api/v1/sync/sync.py +877 -0
  26. cognee/api/v1/ui/__init__.py +1 -0
  27. cognee/api/v1/ui/ui.py +529 -0
  28. cognee/api/v1/users/routers/get_auth_router.py +13 -1
  29. cognee/base_config.py +10 -1
  30. cognee/cli/__init__.py +10 -0
  31. cognee/cli/_cognee.py +273 -0
  32. cognee/cli/commands/__init__.py +1 -0
  33. cognee/cli/commands/add_command.py +80 -0
  34. cognee/cli/commands/cognify_command.py +128 -0
  35. cognee/cli/commands/config_command.py +225 -0
  36. cognee/cli/commands/delete_command.py +80 -0
  37. cognee/cli/commands/search_command.py +149 -0
  38. cognee/cli/config.py +33 -0
  39. cognee/cli/debug.py +21 -0
  40. cognee/cli/echo.py +45 -0
  41. cognee/cli/exceptions.py +23 -0
  42. cognee/cli/minimal_cli.py +97 -0
  43. cognee/cli/reference.py +26 -0
  44. cognee/cli/suppress_logging.py +12 -0
  45. cognee/eval_framework/corpus_builder/corpus_builder_executor.py +2 -2
  46. cognee/eval_framework/eval_config.py +1 -1
  47. cognee/infrastructure/databases/graph/config.py +10 -4
  48. cognee/infrastructure/databases/graph/get_graph_engine.py +4 -9
  49. cognee/infrastructure/databases/graph/kuzu/adapter.py +199 -2
  50. cognee/infrastructure/databases/graph/neo4j_driver/adapter.py +138 -0
  51. cognee/infrastructure/databases/relational/__init__.py +2 -0
  52. cognee/infrastructure/databases/relational/get_async_session.py +15 -0
  53. cognee/infrastructure/databases/relational/sqlalchemy/SqlAlchemyAdapter.py +6 -1
  54. cognee/infrastructure/databases/relational/with_async_session.py +25 -0
  55. cognee/infrastructure/databases/vector/chromadb/ChromaDBAdapter.py +1 -1
  56. cognee/infrastructure/databases/vector/config.py +13 -6
  57. cognee/infrastructure/databases/vector/embeddings/FastembedEmbeddingEngine.py +6 -4
  58. cognee/infrastructure/databases/vector/embeddings/LiteLLMEmbeddingEngine.py +16 -7
  59. cognee/infrastructure/databases/vector/embeddings/OllamaEmbeddingEngine.py +5 -5
  60. cognee/infrastructure/databases/vector/embeddings/config.py +2 -2
  61. cognee/infrastructure/databases/vector/embeddings/embedding_rate_limiter.py +2 -6
  62. cognee/infrastructure/databases/vector/embeddings/get_embedding_engine.py +10 -7
  63. cognee/infrastructure/files/storage/LocalFileStorage.py +9 -0
  64. cognee/infrastructure/files/storage/S3FileStorage.py +5 -0
  65. cognee/infrastructure/files/storage/StorageManager.py +7 -1
  66. cognee/infrastructure/files/storage/storage.py +16 -0
  67. cognee/infrastructure/files/utils/get_data_file_path.py +14 -9
  68. cognee/infrastructure/files/utils/get_file_metadata.py +2 -1
  69. cognee/infrastructure/llm/LLMGateway.py +32 -5
  70. cognee/infrastructure/llm/config.py +6 -4
  71. cognee/infrastructure/llm/prompts/extract_query_time.txt +15 -0
  72. cognee/infrastructure/llm/prompts/generate_event_entity_prompt.txt +25 -0
  73. cognee/infrastructure/llm/prompts/generate_event_graph_prompt.txt +30 -0
  74. cognee/infrastructure/llm/structured_output_framework/baml/baml_src/extraction/knowledge_graph/extract_content_graph.py +16 -5
  75. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/extraction/__init__.py +2 -0
  76. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/extraction/extract_event_entities.py +44 -0
  77. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/extraction/knowledge_graph/__init__.py +1 -0
  78. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/extraction/knowledge_graph/extract_content_graph.py +19 -15
  79. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/extraction/knowledge_graph/extract_event_graph.py +46 -0
  80. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/anthropic/adapter.py +3 -3
  81. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/gemini/adapter.py +3 -3
  82. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/generic_llm_api/adapter.py +2 -2
  83. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/get_llm_client.py +14 -8
  84. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/ollama/adapter.py +6 -4
  85. cognee/infrastructure/llm/structured_output_framework/litellm_instructor/llm/openai/adapter.py +28 -4
  86. cognee/infrastructure/llm/tokenizer/Gemini/adapter.py +2 -2
  87. cognee/infrastructure/llm/tokenizer/HuggingFace/adapter.py +3 -3
  88. cognee/infrastructure/llm/tokenizer/Mistral/adapter.py +3 -3
  89. cognee/infrastructure/llm/tokenizer/TikToken/adapter.py +6 -6
  90. cognee/infrastructure/llm/utils.py +7 -7
  91. cognee/infrastructure/utils/run_sync.py +8 -1
  92. cognee/modules/chunking/models/DocumentChunk.py +4 -3
  93. cognee/modules/cloud/exceptions/CloudApiKeyMissingError.py +15 -0
  94. cognee/modules/cloud/exceptions/CloudConnectionError.py +15 -0
  95. cognee/modules/cloud/exceptions/__init__.py +2 -0
  96. cognee/modules/cloud/operations/__init__.py +1 -0
  97. cognee/modules/cloud/operations/check_api_key.py +25 -0
  98. cognee/modules/data/deletion/prune_system.py +1 -1
  99. cognee/modules/data/methods/__init__.py +2 -0
  100. cognee/modules/data/methods/check_dataset_name.py +1 -1
  101. cognee/modules/data/methods/create_authorized_dataset.py +19 -0
  102. cognee/modules/data/methods/get_authorized_dataset.py +11 -5
  103. cognee/modules/data/methods/get_authorized_dataset_by_name.py +16 -0
  104. cognee/modules/data/methods/get_dataset_data.py +1 -1
  105. cognee/modules/data/methods/load_or_create_datasets.py +2 -20
  106. cognee/modules/engine/models/Event.py +16 -0
  107. cognee/modules/engine/models/Interval.py +8 -0
  108. cognee/modules/engine/models/Timestamp.py +13 -0
  109. cognee/modules/engine/models/__init__.py +3 -0
  110. cognee/modules/engine/utils/__init__.py +2 -0
  111. cognee/modules/engine/utils/generate_event_datapoint.py +46 -0
  112. cognee/modules/engine/utils/generate_timestamp_datapoint.py +51 -0
  113. cognee/modules/graph/cognee_graph/CogneeGraph.py +2 -2
  114. cognee/modules/graph/methods/get_formatted_graph_data.py +3 -2
  115. cognee/modules/graph/utils/__init__.py +1 -0
  116. cognee/modules/graph/utils/resolve_edges_to_text.py +71 -0
  117. cognee/modules/memify/__init__.py +1 -0
  118. cognee/modules/memify/memify.py +118 -0
  119. cognee/modules/notebooks/methods/__init__.py +5 -0
  120. cognee/modules/notebooks/methods/create_notebook.py +26 -0
  121. cognee/modules/notebooks/methods/delete_notebook.py +13 -0
  122. cognee/modules/notebooks/methods/get_notebook.py +21 -0
  123. cognee/modules/notebooks/methods/get_notebooks.py +18 -0
  124. cognee/modules/notebooks/methods/update_notebook.py +17 -0
  125. cognee/modules/notebooks/models/Notebook.py +53 -0
  126. cognee/modules/notebooks/models/__init__.py +1 -0
  127. cognee/modules/notebooks/operations/__init__.py +1 -0
  128. cognee/modules/notebooks/operations/run_in_local_sandbox.py +55 -0
  129. cognee/modules/pipelines/__init__.py +1 -1
  130. cognee/modules/pipelines/exceptions/tasks.py +18 -0
  131. cognee/modules/pipelines/layers/__init__.py +1 -0
  132. cognee/modules/pipelines/layers/check_pipeline_run_qualification.py +59 -0
  133. cognee/modules/pipelines/layers/pipeline_execution_mode.py +127 -0
  134. cognee/modules/pipelines/layers/reset_dataset_pipeline_run_status.py +28 -0
  135. cognee/modules/pipelines/layers/resolve_authorized_user_dataset.py +34 -0
  136. cognee/modules/pipelines/layers/resolve_authorized_user_datasets.py +55 -0
  137. cognee/modules/pipelines/layers/setup_and_check_environment.py +41 -0
  138. cognee/modules/pipelines/layers/validate_pipeline_tasks.py +20 -0
  139. cognee/modules/pipelines/methods/__init__.py +2 -0
  140. cognee/modules/pipelines/methods/get_pipeline_runs_by_dataset.py +34 -0
  141. cognee/modules/pipelines/methods/reset_pipeline_run_status.py +16 -0
  142. cognee/modules/pipelines/operations/__init__.py +0 -1
  143. cognee/modules/pipelines/operations/log_pipeline_run_initiated.py +1 -1
  144. cognee/modules/pipelines/operations/pipeline.py +24 -138
  145. cognee/modules/pipelines/operations/run_tasks.py +17 -41
  146. cognee/modules/retrieval/base_feedback.py +11 -0
  147. cognee/modules/retrieval/base_graph_retriever.py +18 -0
  148. cognee/modules/retrieval/base_retriever.py +1 -1
  149. cognee/modules/retrieval/code_retriever.py +8 -0
  150. cognee/modules/retrieval/coding_rules_retriever.py +31 -0
  151. cognee/modules/retrieval/completion_retriever.py +9 -3
  152. cognee/modules/retrieval/context_providers/TripletSearchContextProvider.py +1 -0
  153. cognee/modules/retrieval/cypher_search_retriever.py +1 -9
  154. cognee/modules/retrieval/graph_completion_context_extension_retriever.py +29 -13
  155. cognee/modules/retrieval/graph_completion_cot_retriever.py +30 -13
  156. cognee/modules/retrieval/graph_completion_retriever.py +107 -56
  157. cognee/modules/retrieval/graph_summary_completion_retriever.py +5 -1
  158. cognee/modules/retrieval/insights_retriever.py +14 -3
  159. cognee/modules/retrieval/natural_language_retriever.py +0 -4
  160. cognee/modules/retrieval/summaries_retriever.py +1 -1
  161. cognee/modules/retrieval/temporal_retriever.py +152 -0
  162. cognee/modules/retrieval/user_qa_feedback.py +83 -0
  163. cognee/modules/retrieval/utils/brute_force_triplet_search.py +7 -32
  164. cognee/modules/retrieval/utils/completion.py +10 -3
  165. cognee/modules/retrieval/utils/extract_uuid_from_node.py +18 -0
  166. cognee/modules/retrieval/utils/models.py +40 -0
  167. cognee/modules/search/methods/get_search_type_tools.py +168 -0
  168. cognee/modules/search/methods/no_access_control_search.py +47 -0
  169. cognee/modules/search/methods/search.py +239 -118
  170. cognee/modules/search/types/SearchResult.py +21 -0
  171. cognee/modules/search/types/SearchType.py +3 -0
  172. cognee/modules/search/types/__init__.py +1 -0
  173. cognee/modules/search/utils/__init__.py +2 -0
  174. cognee/modules/search/utils/prepare_search_result.py +41 -0
  175. cognee/modules/search/utils/transform_context_to_graph.py +38 -0
  176. cognee/modules/settings/get_settings.py +2 -2
  177. cognee/modules/sync/__init__.py +1 -0
  178. cognee/modules/sync/methods/__init__.py +23 -0
  179. cognee/modules/sync/methods/create_sync_operation.py +53 -0
  180. cognee/modules/sync/methods/get_sync_operation.py +107 -0
  181. cognee/modules/sync/methods/update_sync_operation.py +248 -0
  182. cognee/modules/sync/models/SyncOperation.py +142 -0
  183. cognee/modules/sync/models/__init__.py +3 -0
  184. cognee/modules/users/__init__.py +0 -1
  185. cognee/modules/users/methods/__init__.py +4 -1
  186. cognee/modules/users/methods/create_user.py +26 -1
  187. cognee/modules/users/methods/get_authenticated_user.py +36 -42
  188. cognee/modules/users/methods/get_default_user.py +3 -1
  189. cognee/modules/users/permissions/methods/get_specific_user_permission_datasets.py +2 -1
  190. cognee/root_dir.py +19 -0
  191. cognee/shared/CodeGraphEntities.py +1 -0
  192. cognee/shared/logging_utils.py +143 -32
  193. cognee/shared/utils.py +0 -1
  194. cognee/tasks/codingagents/coding_rule_associations.py +127 -0
  195. cognee/tasks/graph/extract_graph_from_data.py +6 -2
  196. cognee/tasks/ingestion/save_data_item_to_storage.py +23 -0
  197. cognee/tasks/memify/__init__.py +2 -0
  198. cognee/tasks/memify/extract_subgraph.py +7 -0
  199. cognee/tasks/memify/extract_subgraph_chunks.py +11 -0
  200. cognee/tasks/repo_processor/get_local_dependencies.py +2 -0
  201. cognee/tasks/repo_processor/get_repo_file_dependencies.py +144 -47
  202. cognee/tasks/storage/add_data_points.py +33 -3
  203. cognee/tasks/temporal_graph/__init__.py +1 -0
  204. cognee/tasks/temporal_graph/add_entities_to_event.py +85 -0
  205. cognee/tasks/temporal_graph/enrich_events.py +34 -0
  206. cognee/tasks/temporal_graph/extract_events_and_entities.py +32 -0
  207. cognee/tasks/temporal_graph/extract_knowledge_graph_from_events.py +41 -0
  208. cognee/tasks/temporal_graph/models.py +49 -0
  209. cognee/tests/integration/cli/__init__.py +3 -0
  210. cognee/tests/integration/cli/test_cli_integration.py +331 -0
  211. cognee/tests/integration/documents/PdfDocument_test.py +2 -2
  212. cognee/tests/integration/documents/TextDocument_test.py +2 -4
  213. cognee/tests/integration/documents/UnstructuredDocument_test.py +5 -8
  214. cognee/tests/{test_deletion.py → test_delete_hard.py} +0 -37
  215. cognee/tests/test_delete_soft.py +85 -0
  216. cognee/tests/test_kuzu.py +2 -2
  217. cognee/tests/test_neo4j.py +2 -2
  218. cognee/tests/test_permissions.py +3 -3
  219. cognee/tests/test_relational_db_migration.py +7 -5
  220. cognee/tests/test_search_db.py +136 -23
  221. cognee/tests/test_temporal_graph.py +167 -0
  222. cognee/tests/unit/api/__init__.py +1 -0
  223. cognee/tests/unit/api/test_conditional_authentication_endpoints.py +246 -0
  224. cognee/tests/unit/cli/__init__.py +3 -0
  225. cognee/tests/unit/cli/test_cli_commands.py +483 -0
  226. cognee/tests/unit/cli/test_cli_edge_cases.py +625 -0
  227. cognee/tests/unit/cli/test_cli_main.py +173 -0
  228. cognee/tests/unit/cli/test_cli_runner.py +62 -0
  229. cognee/tests/unit/cli/test_cli_utils.py +127 -0
  230. cognee/tests/unit/modules/retrieval/chunks_retriever_test.py +18 -2
  231. cognee/tests/unit/modules/retrieval/graph_completion_retriever_context_extension_test.py +12 -15
  232. cognee/tests/unit/modules/retrieval/graph_completion_retriever_cot_test.py +10 -15
  233. cognee/tests/unit/modules/retrieval/graph_completion_retriever_test.py +4 -3
  234. cognee/tests/unit/modules/retrieval/insights_retriever_test.py +4 -2
  235. cognee/tests/unit/modules/retrieval/rag_completion_retriever_test.py +18 -2
  236. cognee/tests/unit/modules/retrieval/temporal_retriever_test.py +225 -0
  237. cognee/tests/unit/modules/users/__init__.py +1 -0
  238. cognee/tests/unit/modules/users/test_conditional_authentication.py +277 -0
  239. cognee/tests/unit/processing/utils/utils_test.py +20 -1
  240. {cognee-0.2.3.dev1.dist-info → cognee-0.3.0.dist-info}/METADATA +13 -9
  241. {cognee-0.2.3.dev1.dist-info → cognee-0.3.0.dist-info}/RECORD +247 -135
  242. cognee-0.3.0.dist-info/entry_points.txt +2 -0
  243. cognee/infrastructure/databases/graph/networkx/adapter.py +0 -1017
  244. cognee/infrastructure/pipeline/models/Operation.py +0 -60
  245. cognee/notebooks/github_analysis_step_by_step.ipynb +0 -37
  246. cognee/tests/tasks/descriptive_metrics/networkx_metrics_test.py +0 -7
  247. cognee/tests/unit/modules/search/search_methods_test.py +0 -223
  248. /cognee/{infrastructure/databases/graph/networkx → api/v1/memify}/__init__.py +0 -0
  249. /cognee/{infrastructure/pipeline/models → tasks/codingagents}/__init__.py +0 -0
  250. {cognee-0.2.3.dev1.dist-info → cognee-0.3.0.dist-info}/WHEEL +0 -0
  251. {cognee-0.2.3.dev1.dist-info → cognee-0.3.0.dist-info}/licenses/LICENSE +0 -0
  252. {cognee-0.2.3.dev1.dist-info → cognee-0.3.0.dist-info}/licenses/NOTICE.md +0 -0
@@ -1,3 +1,4 @@
1
+ from typing import Optional
1
2
  from cognee.infrastructure.llm.LLMGateway import LLMGateway
2
3
 
3
4
 
@@ -6,11 +7,14 @@ async def generate_completion(
6
7
  context: str,
7
8
  user_prompt_path: str,
8
9
  system_prompt_path: str,
10
+ system_prompt: Optional[str] = None,
9
11
  ) -> str:
10
12
  """Generates a completion using LLM with given context and prompts."""
11
13
  args = {"question": query, "context": context}
12
14
  user_prompt = LLMGateway.render_prompt(user_prompt_path, args)
13
- system_prompt = LLMGateway.read_query_prompt(system_prompt_path)
15
+ system_prompt = (
16
+ system_prompt if system_prompt else LLMGateway.read_query_prompt(system_prompt_path)
17
+ )
14
18
 
15
19
  return await LLMGateway.acreate_structured_output(
16
20
  text_input=user_prompt,
@@ -21,10 +25,13 @@ async def generate_completion(
21
25
 
22
26
  async def summarize_text(
23
27
  text: str,
24
- prompt_path: str = "summarize_search_results.txt",
28
+ system_prompt_path: str = "summarize_search_results.txt",
29
+ system_prompt: str = None,
25
30
  ) -> str:
26
31
  """Summarizes text using LLM with the specified prompt."""
27
- system_prompt = LLMGateway.read_query_prompt(prompt_path)
32
+ system_prompt = (
33
+ system_prompt if system_prompt else LLMGateway.read_query_prompt(system_prompt_path)
34
+ )
28
35
 
29
36
  return await LLMGateway.acreate_structured_output(
30
37
  text_input=text,
@@ -0,0 +1,18 @@
1
+ from typing import Any, Optional
2
+ from uuid import UUID
3
+
4
+
5
+ def extract_uuid_from_node(node: Any) -> Optional[UUID]:
6
+ """
7
+ Try to pull a UUID string out of node.id or node.properties['id'],
8
+ then return a UUID instance (or None if neither exists).
9
+ """
10
+ id_str = None
11
+ if not id_str:
12
+ id_str = getattr(node, "id", None)
13
+
14
+ if hasattr(node, "attributes") and not id_str:
15
+ id_str = node.attributes.get("id", None)
16
+
17
+ id = UUID(id_str) if isinstance(id_str, str) else None
18
+ return id
@@ -0,0 +1,40 @@
1
+ from typing import Optional
2
+ from cognee.infrastructure.engine.models.DataPoint import DataPoint
3
+ from cognee.modules.engine.models.node_set import NodeSet
4
+ from enum import Enum
5
+ from pydantic import BaseModel, Field, confloat
6
+
7
+
8
+ class CogneeUserInteraction(DataPoint):
9
+ """User - Cognee interaction"""
10
+
11
+ question: str
12
+ answer: str
13
+ context: str
14
+ belongs_to_set: Optional[NodeSet] = None
15
+
16
+
17
+ class CogneeUserFeedback(DataPoint):
18
+ """User - Cognee Feedback"""
19
+
20
+ feedback: str
21
+ sentiment: str
22
+ score: float
23
+ belongs_to_set: Optional[NodeSet] = None
24
+
25
+
26
+ class UserFeedbackSentiment(str, Enum):
27
+ """User - User feedback sentiment"""
28
+
29
+ positive = "positive"
30
+ negative = "negative"
31
+ neutral = "neutral"
32
+
33
+
34
+ class UserFeedbackEvaluation(BaseModel):
35
+ """User - User feedback evaluation"""
36
+
37
+ score: confloat(ge=-5, le=5) = Field(
38
+ ..., description="Sentiment score from -5 (negative) to +5 (positive)"
39
+ )
40
+ evaluation: UserFeedbackSentiment
@@ -0,0 +1,168 @@
1
+ from typing import Callable, List, Optional, Type
2
+
3
+ from cognee.modules.engine.models.node_set import NodeSet
4
+ from cognee.modules.search.types import SearchType
5
+ from cognee.modules.search.operations import select_search_type
6
+ from cognee.modules.search.exceptions import UnsupportedSearchTypeError
7
+
8
+ # Retrievers
9
+ from cognee.modules.retrieval.user_qa_feedback import UserQAFeedback
10
+ from cognee.modules.retrieval.chunks_retriever import ChunksRetriever
11
+ from cognee.modules.retrieval.insights_retriever import InsightsRetriever
12
+ from cognee.modules.retrieval.summaries_retriever import SummariesRetriever
13
+ from cognee.modules.retrieval.completion_retriever import CompletionRetriever
14
+ from cognee.modules.retrieval.graph_completion_retriever import GraphCompletionRetriever
15
+ from cognee.modules.retrieval.temporal_retriever import TemporalRetriever
16
+ from cognee.modules.retrieval.coding_rules_retriever import CodingRulesRetriever
17
+ from cognee.modules.retrieval.graph_summary_completion_retriever import (
18
+ GraphSummaryCompletionRetriever,
19
+ )
20
+ from cognee.modules.retrieval.graph_completion_cot_retriever import GraphCompletionCotRetriever
21
+ from cognee.modules.retrieval.graph_completion_context_extension_retriever import (
22
+ GraphCompletionContextExtensionRetriever,
23
+ )
24
+ from cognee.modules.retrieval.code_retriever import CodeRetriever
25
+ from cognee.modules.retrieval.cypher_search_retriever import CypherSearchRetriever
26
+ from cognee.modules.retrieval.natural_language_retriever import NaturalLanguageRetriever
27
+
28
+
29
+ async def get_search_type_tools(
30
+ query_type: SearchType,
31
+ query_text: str,
32
+ system_prompt_path: str = "answer_simple_question.txt",
33
+ system_prompt: Optional[str] = None,
34
+ top_k: int = 10,
35
+ node_type: Optional[Type] = NodeSet,
36
+ node_name: Optional[List[str]] = None,
37
+ save_interaction: bool = False,
38
+ last_k: Optional[int] = None,
39
+ ) -> list:
40
+ search_tasks: dict[SearchType, List[Callable]] = {
41
+ SearchType.SUMMARIES: [
42
+ SummariesRetriever(top_k=top_k).get_completion,
43
+ SummariesRetriever(top_k=top_k).get_context,
44
+ ],
45
+ SearchType.INSIGHTS: [
46
+ InsightsRetriever(top_k=top_k).get_completion,
47
+ InsightsRetriever(top_k=top_k).get_context,
48
+ ],
49
+ SearchType.CHUNKS: [
50
+ ChunksRetriever(top_k=top_k).get_completion,
51
+ ChunksRetriever(top_k=top_k).get_context,
52
+ ],
53
+ SearchType.RAG_COMPLETION: [
54
+ CompletionRetriever(
55
+ system_prompt_path=system_prompt_path,
56
+ top_k=top_k,
57
+ system_prompt=system_prompt,
58
+ ).get_completion,
59
+ CompletionRetriever(
60
+ system_prompt_path=system_prompt_path,
61
+ top_k=top_k,
62
+ system_prompt=system_prompt,
63
+ ).get_context,
64
+ ],
65
+ SearchType.GRAPH_COMPLETION: [
66
+ GraphCompletionRetriever(
67
+ system_prompt_path=system_prompt_path,
68
+ top_k=top_k,
69
+ node_type=node_type,
70
+ node_name=node_name,
71
+ save_interaction=save_interaction,
72
+ system_prompt=system_prompt,
73
+ ).get_completion,
74
+ GraphCompletionRetriever(
75
+ system_prompt_path=system_prompt_path,
76
+ top_k=top_k,
77
+ node_type=node_type,
78
+ node_name=node_name,
79
+ save_interaction=save_interaction,
80
+ system_prompt=system_prompt,
81
+ ).get_context,
82
+ ],
83
+ SearchType.GRAPH_COMPLETION_COT: [
84
+ GraphCompletionCotRetriever(
85
+ system_prompt_path=system_prompt_path,
86
+ top_k=top_k,
87
+ node_type=node_type,
88
+ node_name=node_name,
89
+ save_interaction=save_interaction,
90
+ system_prompt=system_prompt,
91
+ ).get_completion,
92
+ GraphCompletionCotRetriever(
93
+ system_prompt_path=system_prompt_path,
94
+ top_k=top_k,
95
+ node_type=node_type,
96
+ node_name=node_name,
97
+ save_interaction=save_interaction,
98
+ system_prompt=system_prompt,
99
+ ).get_context,
100
+ ],
101
+ SearchType.GRAPH_COMPLETION_CONTEXT_EXTENSION: [
102
+ GraphCompletionContextExtensionRetriever(
103
+ system_prompt_path=system_prompt_path,
104
+ top_k=top_k,
105
+ node_type=node_type,
106
+ node_name=node_name,
107
+ save_interaction=save_interaction,
108
+ system_prompt=system_prompt,
109
+ ).get_completion,
110
+ GraphCompletionContextExtensionRetriever(
111
+ system_prompt_path=system_prompt_path,
112
+ top_k=top_k,
113
+ node_type=node_type,
114
+ node_name=node_name,
115
+ save_interaction=save_interaction,
116
+ system_prompt=system_prompt,
117
+ ).get_context,
118
+ ],
119
+ SearchType.GRAPH_SUMMARY_COMPLETION: [
120
+ GraphSummaryCompletionRetriever(
121
+ system_prompt_path=system_prompt_path,
122
+ top_k=top_k,
123
+ node_type=node_type,
124
+ node_name=node_name,
125
+ save_interaction=save_interaction,
126
+ system_prompt=system_prompt,
127
+ ).get_completion,
128
+ GraphSummaryCompletionRetriever(
129
+ system_prompt_path=system_prompt_path,
130
+ top_k=top_k,
131
+ node_type=node_type,
132
+ node_name=node_name,
133
+ save_interaction=save_interaction,
134
+ system_prompt=system_prompt,
135
+ ).get_context,
136
+ ],
137
+ SearchType.CODE: [
138
+ CodeRetriever(top_k=top_k).get_completion,
139
+ CodeRetriever(top_k=top_k).get_context,
140
+ ],
141
+ SearchType.CYPHER: [
142
+ CypherSearchRetriever().get_completion,
143
+ CypherSearchRetriever().get_context,
144
+ ],
145
+ SearchType.NATURAL_LANGUAGE: [
146
+ NaturalLanguageRetriever().get_completion,
147
+ NaturalLanguageRetriever().get_context,
148
+ ],
149
+ SearchType.FEEDBACK: [UserQAFeedback(last_k=last_k).add_feedback],
150
+ SearchType.TEMPORAL: [
151
+ TemporalRetriever(top_k=top_k).get_completion,
152
+ TemporalRetriever(top_k=top_k).get_context,
153
+ ],
154
+ SearchType.CODING_RULES: [
155
+ CodingRulesRetriever(rules_nodeset_name=node_name).get_existing_rules,
156
+ ],
157
+ }
158
+
159
+ # If the query type is FEELING_LUCKY, select the search type intelligently
160
+ if query_type is SearchType.FEELING_LUCKY:
161
+ query_type = await select_search_type(query_text)
162
+
163
+ search_type_tools = search_tasks.get(query_type)
164
+
165
+ if not search_type_tools:
166
+ raise UnsupportedSearchTypeError(str(query_type))
167
+
168
+ return search_type_tools
@@ -0,0 +1,47 @@
1
+ from typing import Any, List, Optional, Tuple, Type, Union
2
+
3
+ from cognee.modules.data.models.Dataset import Dataset
4
+ from cognee.modules.engine.models.node_set import NodeSet
5
+ from cognee.modules.graph.cognee_graph.CogneeGraphElements import Edge
6
+ from cognee.modules.search.types import SearchType
7
+
8
+ from .get_search_type_tools import get_search_type_tools
9
+
10
+
11
+ async def no_access_control_search(
12
+ query_type: SearchType,
13
+ query_text: str,
14
+ system_prompt_path: str = "answer_simple_question.txt",
15
+ system_prompt: Optional[str] = None,
16
+ top_k: int = 10,
17
+ node_type: Optional[Type] = NodeSet,
18
+ node_name: Optional[List[str]] = None,
19
+ save_interaction: bool = False,
20
+ last_k: Optional[int] = None,
21
+ only_context: bool = False,
22
+ ) -> Tuple[Any, Union[str, List[Edge]], List[Dataset]]:
23
+ search_tools = await get_search_type_tools(
24
+ query_type=query_type,
25
+ query_text=query_text,
26
+ system_prompt_path=system_prompt_path,
27
+ system_prompt=system_prompt,
28
+ top_k=top_k,
29
+ node_type=node_type,
30
+ node_name=node_name,
31
+ save_interaction=save_interaction,
32
+ last_k=last_k,
33
+ )
34
+ if len(search_tools) == 2:
35
+ [get_completion, get_context] = search_tools
36
+
37
+ if only_context:
38
+ return await get_context(query_text)
39
+
40
+ context = await get_context(query_text)
41
+ result = await get_completion(query_text, context)
42
+ else:
43
+ unknown_tool = search_tools[0]
44
+ result = await unknown_tool(query_text)
45
+ context = ""
46
+
47
+ return result, context, []