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

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

记忆管道与知识图谱构建 · 本章是 Cognee DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目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
模块标签
  • 系统架构
  • 检索、召回与索引
  • 测试、发布与运维
  • 存储与持久化
  • 工作流与编排

中文译文

高级召回策略(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/topoteretes/cognee/4.4-advanced-retrieval-strategies
翻译时间:2026-05-27T08:45:22.396Z
翻译模型:deepseek-chat
原文字符数:15354
项目:Cognee (cognee)

---

高级检索策略

相关源文件

以下文件被用作生成此 Wiki 页面的上下文:

  • 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

---

类层次结构和继承关系

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

classDiagram
    class BaseRetriever {
        <<抽象>>
        +get_retrieved_objects()
        +get_context_from_objects()
        +get_completion_from_context()
        +get_completion()
    }

    class GraphCompletionRetriever {
        +top_k: int
        +wide_search_top_k: int
        +triplet_distance_penalty: float
        +session_id: str
        +response_model: Type
        +get_triplets(query)
        +resolve_edges_to_text(edges)
        +get_retrieved_objects()
    }

    class GraphCompletionCotRetriever {
        +validation_system_prompt_path: str
        +followup_system_prompt_path: str
        +max_iter: int
        +_run_cot_completion()
        +get_retrieved_objects()
    }

    class GraphCompletionContextExtensionRetriever {
        +context_extension_rounds: int
        +get_retrieved_objects()
        +_run_extension_round()
    }

    class TemporalRetriever {
        +time_extraction_prompt_path: str
        +extract_time_from_query()
        +filter_top_k_events()
        +get_retrieved_objects()
    }

    BaseRetriever <|-- GraphCompletionRetriever
    GraphCompletionRetriever <|-- GraphCompletionCotRetriever
    GraphCompletionRetriever <|-- GraphCompletionContextExtensionRetriever
    GraphCompletionRetriever <|-- TemporalRetriever

来源: 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)检索器管理答案生成与推理驱动检索之间的循环。

flowchart TD
    Query["用户查询"] --> InitialRetrieval["get_triplets(query)"]
    InitialRetrieval --> InitialContext["resolve_edges_to_text()"]
    InitialContext --> InitialCompletion["_run_cot_completion()"]

    InitialCompletion --> CoTLoop{"循环 max_iter 轮"}

    CoTLoop --> Validation["验证阶段<br/>LLMGateway.acreate_structured_output()"]
    Validation --> ValidationResult["关于答案质量的推理"]

    ValidationResult --> Followup["后续阶段<br/>LLMGateway.acreate_structured_output()"]
    Followup --> FollowupQuestions["新的搜索查询"]

    FollowupQuestions --> NewRetrieval["get_triplets(followup_queries)"]
    NewRetrieval --> MergeTriplets["_merge_followup_triplets()"]
    MergeTriplets --> UpdatedContext["resolve_edges_to_text()"]
    UpdatedContext --> UpdatedCompletion["_generate_completions()"]

    UpdatedCompletion --> CoTLoop

    CoTLoop --> FinalContext["包含累积三元组的<br/>最终上下文"]
    FinalContext --> FinalCompletion["get_completion_from_context()"]

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

架构
flowchart TD
    Query["用户查询"] --> InitialRetrieval["get_triplets_batch(query)"]
    InitialRetrieval --> InitialContext["resolve_edges_to_text()"]
    InitialContext --> InitialState["QueryState(triplets, context)"]

    InitialState --> ExtensionLoop{"循环 context_extension_rounds 轮"}

    ExtensionLoop --> CheckDone{"所有查询已收敛?"}
    CheckDone -->|是| EarlyStop["提前停止"]
    CheckDone -->|否| GenerateCompletion["generate_completion_batch()"]

    GenerateCompletion --> CompletionAsQuery["补全文本作为新查询"]
    CompletionAsQuery --> SearchCompletion["get_triplets_batch(CompletionAsQuery)"]
    SearchCompletion --> MergeNewTriplets["QueryState.merge_triplets()"]
    MergeNewTriplets --> ResolveUpdated["resolve_edges_to_text()"]
    ResolveUpdated --> CheckConvergence["QueryState.check_convergence()"]

    CheckConvergence --> ExtensionLoop

    ExtensionLoop --> FinalTriplets["返回累积的边"]

来源: 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 中使用的具体代码实体。

flowchart LR
    subgraph NL_Space ["自然语言空间"]
        UserQuery["'上周一发生了什么?'"]
    end

    subgraph Code_Space ["代码实体空间"]
        TR["TemporalRetriever"]
        LLM["LLMGateway"]
        QI["QueryInterval 模型"]
        GE["GraphDBInterface (PostgresAdapter/Neo4jAdapter)"]
        VE["VectorDBInterface (LanceDBAdapter/PGVectorAdapter)"]
    end

    UserQuery --> TR
    TR -- "extract_time_from_query()" --> LLM
    LLM -- "结构化输出" --> QI
    QI -- "时间戳" --> GE
    GE -- "collect_events()" --> TR
    TR -- "search('Event_name')" --> VE
    VE -- "评分结果" --> TR
    TR -- "filter_top_k_events()" --> FinalContext["上下文字符串"]

来源: 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