检索与召回系统
搜索与检索系统
相关源文件
本章引用的主要源码文件:
cognee/api/v1/search/search.pycognee/infrastructure/llm/prompts/extract_query_time.txtcognee/modules/retrieval/base_retriever.pycognee/modules/retrieval/coding_rules_retriever.pycognee/modules/retrieval/completion_retriever.pycognee/modules/retrieval/graph_completion_context_extension_retriever.pycognee/modules/retrieval/graph_completion_cot_retriever.pycognee/modules/retrieval/graph_completion_retriever.pycognee/modules/retrieval/graph_summary_completion_retriever.pycognee/modules/retrieval/temporal_retriever.pycognee/modules/retrieval/utils/completion.pycognee/modules/search/methods/get_search_type_retriever_instance.pycognee/modules/search/methods/search.pycognee/modules/search/models/SearchResultPayload.pycognee/modules/search/types/SearchType.pycognee/tests/unit/modules/retrieval/chunks_retriever_test.pycognee/tests/unit/modules/retrieval/graph_completion_retriever_context_extension_test.pycognee/tests/unit/modules/retrieval/graph_completion_retriever_cot_test.pycognee/tests/unit/modules/retrieval/graph_completion_retriever_test.pycognee/tests/unit/modules/retrieval/rag_completion_retriever_test.pycognee/tests/unit/modules/retrieval/summaries_retriever_test.pycognee/tests/unit/modules/retrieval/temporal_retriever_test.pycognee/tests/unit/modules/retrieval/test_brute_force_triplet_search.pycognee/tests/unit/modules/retrieval/triplet_retriever_test.py
搜索与检索系统是 Cognee 数据处理管线的最终阶段,它使用户能够查询已处理的知识图谱并从中提取洞察。该系统提供了针对不同用例优化的多种检索策略:通过向量数据库进行语义相似度搜索、通过图数据库进行基于关系的遍历,以及结合这两种方法的大语言模型增强推理。
有关搜索之前的知识图谱构建信息,请参阅知识图谱生成(cognee.cognify)。有关特定检索模式的详细信息,请参阅搜索类型概览。
搜索系统概览
搜索系统通过统一接口编排多种检索策略。主要入口点是 search() 函数,它负责处理认证、数据集解析、搜索执行和结果记录 cognee/modules/search/methods/search.py:37-140。
搜索请求流程
来源:cognee/modules/search/methods/search.py:37-140,cognee/api/v1/search/search.py:28-160,cognee/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_COMPLETION | GraphCompletionRetriever | 使用图上下文和大语言模型推理进行自然语言问答 cognee/modules/retrieval/graph_completion_retriever.py:33。 |
RAG_COMPLETION | CompletionRetriever | 使用文档片段进行传统检索增强生成(RAG)cognee/api/v1/search/search.py:93。 |
CHUNKS | ChunksRetriever | 对原始文本片段进行语义相似度搜索 cognee/api/v1/search/search.py:98。 |
SUMMARIES | SummariesRetriever | 搜索预生成的文档摘要 cognee/api/v1/search/search.py:103。 |
TEMPORAL | TemporalRetriever | 跨时间线搜索事件和实体 cognee/modules/retrieval/temporal_retriever.py:19。 |
CYPHER | CypherSearchRetriever | 在图上直接执行 Cypher 查询 cognee/api/v1/search/search.py:113。 |
CODE | CodingRulesRetriever | 结合语法和语义理解的代码专用搜索 cognee/api/v1/search/search.py:108。 |
AGENTIC_COMPLETION | AgenticRetriever | 使用 AI 代理进行基于技能的检索 cognee/modules/search/methods/get_search_type_retriever_instance.py:192。 |
有关详细信息,请参阅搜索类型概览。
来源:cognee/api/v1/search/search.py:77-117,cognee/modules/search/methods/get_search_type_retriever_instance.py:73-200,cognee/modules/search/types/SearchType.py:4-20
基于图的搜索
图搜索利用知识图谱的结构来检索实体及其关系。这主要由 GraphCompletionRetriever 和 brute_force_triplet_search 算法处理 cognee/modules/retrieval/graph_completion_retriever.py:10-40。
图遍历与评分
系统使用距离加权的重要性分数来对图三元组进行排序。它结合了向量搜索的语义相似度和图中的拓扑距离:
- 种子发现:执行向量搜索,找到与查询语义相似的节点。
- 邻域投影:使用
neighborhood_depth提取这些种子节点周围的子图cognee/modules/retrieval/graph_completion_retriever.py:56。 - 评分:基于向量相似度和与种子的距离计算重要性,并通过
triplet_distance_penalty进行调整cognee/modules/retrieval/graph_completion_retriever.py:52。
有关详细信息,请参阅基于图的搜索。
来源:cognee/modules/retrieval/graph_completion_retriever.py:33-175,cognee/modules/retrieval/utils/brute_force_triplet_search.py:10-185
向量搜索与检索增强生成(RAG)
基于向量的检索构成了搜索系统的语义基础。Cognee 使用统一引擎与各种向量数据库(如 LanceDB、Neo4j 或 PGVector)进行交互。
向量搜索实现
有关详细信息,请参阅向量搜索与检索增强生成(RAG)。
来源:cognee/modules/retrieval/graph_completion_retriever.py:88-99,cognee/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-176,cognee/modules/retrieval/graph_completion_context_extension_retriever.py:92-130,cognee/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-140,cognee/modules/retrieval/graph_completion_cot_retriever.py:114-128,cognee/modules/retrieval/utils/completion.py:67-141