agentic_huge_data_base / wiki
页面 Cognee · 4.4 高级召回策略·DeepWiki 中文全文译文

4.4 · 高级召回策略(Advanced Retrieval Strategies)

记忆管道与知识图谱构建 · 聚焦本章的模块关系、源码依据与实现要点。

项目Cognee 章节4.4 状态全文译文 模块系统架构、检索、召回与索引、测试、发布与运维、存储与持久化
源码线索
  • CLAUDE.md
  • cognee/infrastructure/databases/graph/postgres/__init__.py
  • cognee/infrastructure/databases/graph/postgres/adapter.py
  • cognee/infrastructure/databases/graph/postgres/tables.py
  • cognee/infrastructure/llm/prompts/extract_query_time.txt
  • cognee/modules/retrieval/base_retriever.py
  • cognee/modules/retrieval/completion_retriever.py
  • cognee/modules/retrieval/cypher_search_retriever.py
  • cognee/modules/retrieval/graph_completion_context_extension_retriever.py
  • cognee/modules/retrieval/graph_completion_cot_retriever.py
模块标签
  • 系统架构
  • 检索、召回与索引
  • 测试、发布与运维
  • 存储与持久化
  • 工作流与编排

章节正文

高级召回策略

高级检索策略

相关源文件

本章引用的主要源码文件:

  • CLAUDE.md
  • cognee/infrastructure/databases/graph/postgres/__init__.py
  • cognee/infrastructure/databases/graph/postgres/adapter.py
  • cognee/infrastructure/databases/graph/postgres/tables.py
  • cognee/infrastructure/llm/prompts/extract_query_time.txt
  • cognee/modules/retrieval/base_retriever.py
  • cognee/modules/retrieval/completion_retriever.py
  • cognee/modules/retrieval/cypher_search_retriever.py
  • cognee/modules/retrieval/graph_completion_context_extension_retriever.py
  • cognee/modules/retrieval/graph_completion_cot_retriever.py
  • cognee/modules/retrieval/graph_completion_retriever.py
  • cognee/modules/retrieval/graph_summary_completion_retriever.py
  • cognee/modules/retrieval/natural_language_retriever.py
  • cognee/modules/retrieval/temporal_retriever.py
  • cognee/modules/retrieval/utils/completion.py
  • cognee/tasks/temporal_awareness/index_graphiti_objects.py
  • cognee/tests/integration/retrieval/test_chunks_retriever.py
  • cognee/tests/integration/retrieval/test_graph_completion_retriever.py
  • cognee/tests/integration/retrieval/test_graph_completion_retriever_context_extension.py
  • cognee/tests/integration/retrieval/test_graph_completion_retriever_cot.py
  • cognee/tests/integration/retrieval/test_structured_output.py
  • cognee/tests/integration/retrieval/test_summaries_retriever.py
  • cognee/tests/integration/retrieval/test_temporal_retriever.py
  • cognee/tests/integration/retrieval/test_triplet_retriever.py
  • cognee/tests/unit/modules/retrieval/chunks_retriever_test.py
  • cognee/tests/unit/modules/retrieval/graph_completion_retriever_context_extension_test.py
  • cognee/tests/unit/modules/retrieval/graph_completion_retriever_cot_test.py
  • cognee/tests/unit/modules/retrieval/graph_completion_retriever_test.py
  • cognee/tests/unit/modules/retrieval/rag_completion_retriever_test.py
  • cognee/tests/unit/modules/retrieval/summaries_retriever_test.py
  • cognee/tests/unit/modules/retrieval/temporal_retriever_test.py
  • cognee/tests/unit/modules/retrieval/test_brute_force_triplet_search.py
  • cognee/tests/unit/modules/retrieval/triplet_retriever_test.py

本文档介绍了 Cognee 中除基本图搜索和向量搜索之外的高级检索策略。这些策略通过多次大语言模型(LLM)交互、上下文扩展、查询分解和时间推理,实现了迭代优化模式,以提升检索质量。

关于基本检索概念和 SearchType 枚举,请参阅检索类型概览。关于基于图的搜索基础,请参阅基于图的搜索。关于向量搜索和检索增强生成(RAG),请参阅向量搜索和检索增强生成(RAG)

高级检索器概述

Cognee 提供了多种高级检索策略,这些策略扩展了基础 GraphCompletionRetriever 或实现了专门的逻辑:

检索器类主要策略使用场景
GraphCompletionCotRetriever带验证的思维链推理需要多步推理的复杂查询
GraphCompletionContextExtensionRetriever迭代上下文扩展初始上下文可能不完整的查询
TemporalRetriever时间感知过滤和事件检索时间相关查询("2024 年发生了什么?")

所有基于图的高级检索器都遵循三阶段检索模式:

  1. get_retrieved_objects() - 获取原始图元素(三元组、事件或子查询结果)。
  2. get_context_from_objects() - 将检索到的数据转换为文本上下文。
  3. get_completion_from_context() - 生成最终的大语言模型(LLM)响应。

来源: cognee/modules/retrieval/graph_completion_cot_retriever.py:36-50cognee/modules/retrieval/graph_completion_context_extension_retriever.py:14-18cognee/modules/retrieval/temporal_retriever.py:19-33

类层次结构和继承关系

下图展示了基础检索类与高级实现之间的关系。

Cognee · 类层次结构和继承关系 · 图 1
Cognee · 类层次结构和继承关系 · 图 1

来源: cognee/modules/retrieval/base_retriever.py:1-20cognee/modules/retrieval/graph_completion_retriever.py:33-60cognee/modules/retrieval/graph_completion_cot_retriever.py:36-95cognee/modules/retrieval/graph_completion_context_extension_retriever.py:14-54cognee/modules/retrieval/temporal_retriever.py:19-65

思维链(CoT)检索器

概念

GraphCompletionCotRetriever 通过验证和后续问题实现迭代优化。在生成初始答案后,系统会根据可用上下文验证响应,并生成后续问题以从图中检索更多信息。此过程会重复 max_iter 轮(默认值:4)。

架构

思维链(CoT)检索器管理答案生成与推理驱动检索之间的循环。

Cognee · 架构 · 图 2
Cognee · 架构 · 图 2

来源: cognee/modules/retrieval/graph_completion_cot_retriever.py:144-176cognee/modules/retrieval/graph_completion_cot_retriever.py:180-210

关键组件
QueryState 管理

思维链(CoT)检索器使用 QueryState 对象来跟踪批处理中每个查询的状态。该状态包含累积的 triplets、当前的 context_text 以及最新的 completion来源: cognee/modules/retrieval/graph_completion_cot_retriever.py:166-168cognee/modules/retrieval/utils/query_state.py:1-15

提示模板

检索器依赖特定的提示文件来实现验证和后续逻辑:

  • cot_validation_system_prompt.txt
  • cot_validation_user_prompt.txt
  • cot_followup_system_prompt.txt
  • cot_followup_user_prompt.txt

来源: cognee/modules/retrieval/graph_completion_cot_retriever.py:56-59cognee/modules/retrieval/graph_completion_cot_retriever.py:90-93

上下文扩展检索器

概念

GraphCompletionContextExtensionRetriever 通过将生成的补全结果作为新的搜索查询,实现迭代上下文扩展。它会根据上一轮的输出检索额外的三元组,直到找不到新的三元组或达到最大轮数。

架构
Cognee · 架构 · 图 3
Cognee · 架构 · 图 3

来源: cognee/modules/retrieval/graph_completion_context_extension_retriever.py:56-98cognee/modules/retrieval/graph_completion_context_extension_retriever.py:102-130

时间检索器

概念

TemporalRetriever 处理时间感知查询,通过提取时间间隔并根据时间戳过滤图元素,然后执行语义排序。

实现细节
  1. 时间提取:使用 LLMGateway.acreate_structured_outputQueryInterval 模型从查询中提取 starts_atends_at
  2. 事件收集:使用 collect_time_idscollect_events 根据识别的时间戳查询 unified_engine.graph
  3. 向量重排序:对 Event_name 集合执行向量搜索,并使用 filter_top_k_events 过滤和排序事件。
  4. 回退机制:如果查询中未识别出时间戳,则回退到对实体和事件的标准 get_triplets 搜索。

来源: cognee/modules/retrieval/temporal_retriever.py:84-104cognee/modules/retrieval/temporal_retriever.py:119-154

数据流和代码实体

下图将自然语言查询过程映射到 TemporalRetriever 中使用的具体代码实体。

Cognee · 数据流和代码实体 · 图 4
Cognee · 数据流和代码实体 · 图 4

来源: cognee/modules/retrieval/temporal_retriever.py:99-104cognee/modules/retrieval/temporal_retriever.py:122-126cognee/modules/retrieval/temporal_retriever.py:150-154cognee/infrastructure/databases/graph/postgres/adapter.py:24-33

共享检索工具

高级检索器依赖共享逻辑来生成补全结果并将图元素解析为文本。

补全工具

位于 cognee/modules/retrieval/utils/completion.py 中,这些函数封装了 LLMGateway 调用:

  • generate_completion():使用用户/系统提示生成单个响应。
  • generate_completion_batch():使用 asyncio.gather 并行生成多个补全结果。
  • summarize_text():对检索到的上下文进行摘要,以符合 Token 限制。

来源: cognee/modules/retrieval/utils/completion.py:9-38cognee/modules/retrieval/utils/completion.py:41-64cognee/modules/retrieval/utils/completion.py:162-181

边解析

resolve_edges_to_text() 函数将原始的 Edge 对象(三元组)转换为人类可读的字符串。 来源: cognee/modules/retrieval/graph_completion_retriever.py:138-152

会话集成

所有高级检索器都会检查会话缓存。如果启用了会话缓存,它们会使用 get_session_manager() 检索对话历史记录,并将其注入到 system_prompt 中。 来源: cognee/modules/retrieval/graph_completion_retriever.py:81-85cognee/modules/retrieval/graph_completion_cot_retriever.py:114-127cognee/modules/retrieval/completion_retriever.py:127-147