agentic_huge_data_base / wiki
页面 Cognee · 4 检索与召回系统·DeepWiki 中文全文译文

4 · 检索与召回系统(Search and Retrieval System)

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

项目Cognee 章节4 状态全文译文 模块检索、召回与索引、系统架构、模型调用与提供方适配、测试、发布与运维
源码线索
  • cognee/api/v1/search/search.py
  • cognee/infrastructure/llm/prompts/extract_query_time.txt
  • cognee/modules/retrieval/base_retriever.py
  • cognee/modules/retrieval/coding_rules_retriever.py
  • cognee/modules/retrieval/completion_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/temporal_retriever.py
模块标签
  • 检索、召回与索引
  • 系统架构
  • 模型调用与提供方适配
  • 测试、发布与运维
  • 记忆与上下文

章节正文

检索与召回系统

搜索与检索系统

相关源文件

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

  • cognee/api/v1/search/search.py
  • cognee/infrastructure/llm/prompts/extract_query_time.txt
  • cognee/modules/retrieval/base_retriever.py
  • cognee/modules/retrieval/coding_rules_retriever.py
  • cognee/modules/retrieval/completion_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/temporal_retriever.py
  • cognee/modules/retrieval/utils/completion.py
  • cognee/modules/search/methods/get_search_type_retriever_instance.py
  • cognee/modules/search/methods/search.py
  • cognee/modules/search/models/SearchResultPayload.py
  • cognee/modules/search/types/SearchType.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 数据处理管线的最终阶段,它使用户能够查询已处理的知识图谱并从中提取洞察。该系统提供了针对不同用例优化的多种检索策略:通过向量数据库进行语义相似度搜索、通过图数据库进行基于关系的遍历,以及结合这两种方法的大语言模型增强推理。

有关搜索之前的知识图谱构建信息,请参阅知识图谱生成(cognee.cognify)。有关特定检索模式的详细信息,请参阅搜索类型概览

搜索系统概览

搜索系统通过统一接口编排多种检索策略。主要入口点是 search() 函数,它负责处理认证、数据集解析、搜索执行和结果记录 cognee/modules/search/methods/search.py:37-140

搜索请求流程

Cognee · 搜索系统概览 · 图 1
Cognee · 搜索系统概览 · 图 1

来源:cognee/modules/search/methods/search.py:37-140cognee/api/v1/search/search.py:28-160cognee/modules/search/methods/get_search_type_retriever_instance.py:36-210

搜索类型与选择

Cognee 支持在 SearchType 枚举中定义的各种搜索类型 cognee/modules/search/types/SearchType.py:4-20。这些类型在检索器工厂中映射到特定的检索器实现 cognee/modules/search/methods/get_search_type_retriever_instance.py:73-200

SearchType检索器实现用途
GRAPH_COMPLETIONGraphCompletionRetriever使用图上下文和大语言模型推理进行自然语言问答 cognee/modules/retrieval/graph_completion_retriever.py:33
RAG_COMPLETIONCompletionRetriever使用文档片段进行传统检索增强生成(RAG)cognee/api/v1/search/search.py:93
CHUNKSChunksRetriever对原始文本片段进行语义相似度搜索 cognee/api/v1/search/search.py:98
SUMMARIESSummariesRetriever搜索预生成的文档摘要 cognee/api/v1/search/search.py:103
TEMPORALTemporalRetriever跨时间线搜索事件和实体 cognee/modules/retrieval/temporal_retriever.py:19
CYPHERCypherSearchRetriever在图上直接执行 Cypher 查询 cognee/api/v1/search/search.py:113
CODECodingRulesRetriever结合语法和语义理解的代码专用搜索 cognee/api/v1/search/search.py:108
AGENTIC_COMPLETIONAgenticRetriever使用 AI 代理进行基于技能的检索 cognee/modules/search/methods/get_search_type_retriever_instance.py:192

有关详细信息,请参阅搜索类型概览

来源:cognee/api/v1/search/search.py:77-117cognee/modules/search/methods/get_search_type_retriever_instance.py:73-200cognee/modules/search/types/SearchType.py:4-20

基于图的搜索

图搜索利用知识图谱的结构来检索实体及其关系。这主要由 GraphCompletionRetrieverbrute_force_triplet_search 算法处理 cognee/modules/retrieval/graph_completion_retriever.py:10-40

图遍历与评分

系统使用距离加权的重要性分数来对图三元组进行排序。它结合了向量搜索的语义相似度和图中的拓扑距离:

  1. 种子发现:执行向量搜索,找到与查询语义相似的节点。
  2. 邻域投影:使用 neighborhood_depth 提取这些种子节点周围的子图 cognee/modules/retrieval/graph_completion_retriever.py:56
  3. 评分:基于向量相似度和与种子的距离计算重要性,并通过 triplet_distance_penalty 进行调整 cognee/modules/retrieval/graph_completion_retriever.py:52

有关详细信息,请参阅基于图的搜索

来源:cognee/modules/retrieval/graph_completion_retriever.py:33-175cognee/modules/retrieval/utils/brute_force_triplet_search.py:10-185

向量搜索与检索增强生成(RAG)

基于向量的检索构成了搜索系统的语义基础。Cognee 使用统一引擎与各种向量数据库(如 LanceDB、Neo4j 或 PGVector)进行交互。

向量搜索实现

Cognee · 向量搜索与检索增强生成(RAG) · 图 2
Cognee · 向量搜索与检索增强生成(RAG) · 图 2

有关详细信息,请参阅向量搜索与检索增强生成(RAG)

来源:cognee/modules/retrieval/graph_completion_retriever.py:88-99cognee/modules/retrieval/temporal_retriever.py:147-154

高级检索策略

Cognee 支持迭代和复杂的检索模式,例如思维链(CoT)和上下文扩展。这些策略使用反馈循环来优化搜索结果。

  • 思维链GraphCompletionCotRetriever 实现多步推理,生成后续问题,直到找到满意的答案 cognee/modules/retrieval/graph_completion_cot_retriever.py:36-96
  • 上下文扩展GraphCompletionContextExtensionRetriever 通过将当前大语言模型补全结果作为新的搜索查询,迭代地扩展检索到的上下文 cognee/modules/retrieval/graph_completion_context_extension_retriever.py:14-54
  • 时间检索TemporalRetriever 从查询中提取时间间隔,以过滤图事件和实体 cognee/modules/retrieval/temporal_retriever.py:84-104

有关详细信息,请参阅高级检索策略

来源:cognee/modules/retrieval/graph_completion_cot_retriever.py:144-176cognee/modules/retrieval/graph_completion_context_extension_retriever.py:92-130cognee/modules/retrieval/temporal_retriever.py:119-154

交互跟踪与反馈

系统维护问答交互的历史记录,支持基于会话的记忆和用户反馈集成。

  • 会话管理:通过 get_session_manager() 管理对话,该函数可以检索包含上下文的格式化历史记录 cognee/modules/retrieval/graph_completion_cot_retriever.py:119-127
  • 反馈影响:可以使用 feedback_influence 参数根据用户反馈对搜索结果进行加权 cognee/modules/search/methods/search.py:52
  • 交互日志记录:系统记录查询和结果,以提供 AI 交互的持久记录 cognee/modules/search/methods/search.py:73-138

有关详细信息,请参阅用户反馈与交互跟踪

来源:cognee/modules/search/methods/search.py:37-140cognee/modules/retrieval/graph_completion_cot_retriever.py:114-128cognee/modules/retrieval/utils/completion.py:67-141