检索类型总览(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/topoteretes/cognee/4.1-search-types-overview
翻译时间:2026-05-27T08:45:09.262Z
翻译模型:deepseek-chat
原文字符数:9206
项目:Cognee (cognee)
---
搜索类型概述
相关源文件
以下文件被用作生成此维基页面的上下文:
cognee/api/v1/search/search.pycognee/modules/observability/__init__.pycognee/modules/observability/trace_context.pycognee/modules/observability/tracing.pycognee/modules/retrieval/coding_rules_retriever.pycognee/modules/search/methods/get_retriever_output.pycognee/modules/search/methods/get_search_type_retriever_instance.pycognee/modules/search/methods/search.pycognee/modules/search/models/SearchResultPayload.pycognee/modules/search/types/SearchType.py
本文档描述了 Cognee 搜索系统中可用的搜索类型及其技术实现。搜索类型决定了检索策略、底层使用的数据库以及响应生成逻辑。
目的与范围
Cognee 提供了一个多策略检索系统,能够将自然语言查询桥接到结构化和非结构化数据。该系统以 SearchType 枚举 cognee/modules/search/types/SearchType.py:4-20 为核心,指导 search 函数 cognee/modules/search/methods/search.py:37-57 选择合适的 BaseRetriever 实现 cognee/modules/search/methods/get_search_type_retriever_instance.py:36-40。
搜索执行流程
下图展示了从自然语言查询到选择特定代码实体(检索器)及其对应数据库引擎的数据流。
搜索策略选择
graph TD
UserQuery["自然语言查询"]
SearchAPI["cognee.api.v1.search.search()"]
Factory["get_search_type_retriever_instance()"]
subgraph "检索器实现(代码实体空间)"
GC["GraphCompletionRetriever"]
RC["CompletionRetriever(检索增强生成)"]
TC["TripletRetriever"]
CR["ChunksRetriever"]
SR["SummariesRetriever"]
TEMP["TemporalRetriever"]
CY["CypherSearchRetriever"]
CDR["CodingRulesRetriever"]
AR["AgenticRetriever"]
end
subgraph "数据库引擎(基础设施)"
GraphDB["GraphDBInterface(Neo4j/Kuzu)"]
VectorDB["VectorDBInterface"]
RelDB["SQLAlchemyAdapter"]
end
UserQuery --> SearchAPI
SearchAPI --> Factory
Factory --> GC
Factory --> RC
Factory --> TC
Factory --> CR
Factory --> SR
Factory --> TEMP
Factory --> CY
Factory --> CDR
Factory --> AR
GC --> GraphDB
GC --> VectorDB
RC --> VectorDB
TC --> VectorDB
CR --> VectorDB
SR --> RelDB
TEMP --> GraphDB
CY --> GraphDB
CDR --> GraphDB
AR --> GraphDB
来源: cognee/modules/search/methods/get_search_type_retriever_instance.py:73-170,cognee/modules/search/methods/search.py:92-111,cognee/api/v1/search/search.py:28-52
可用搜索类型
GRAPH_COMPLETION(默认)
这是用于复杂推理的主要搜索模式。它采用混合方法,结合了向量相似度与图遍历。
- 检索实例:通过
get_search_type_retriever_instance使用SearchType.GRAPH_COMPLETION创建cognee/modules/search/methods/get_search_type_retriever_instance.py:99-122。 - 上下文构建:聚合图三元组和节点属性,为大语言模型(LLM)提供结构化上下文
cognee/api/v1/search/search.py:88-91。
关键参数:
triplet_distance_penalty:调整关系距离的权重cognee/api/v1/search/search.py:43。neighborhood_depth:控制从种子节点开始遍历的跳数cognee/api/v1/search/search.py:47。
RAG_COMPLETION
一种传统的基于向量的检索增强生成(RAG)。它使用 CompletionRetriever cognee/modules/retrieval/completion_retriever.py 从向量数据库中获取文档片段,并在不利用知识图谱结构的情况下生成响应 cognee/api/v1/search/search.py:93-96。
CHUNKS 与 CHUNKS_LEXICAL
- CHUNKS:使用
ChunksRetrievercognee/modules/retrieval/chunks_retriever.py基于语义相似度返回原始文本段。 - CHUNKS_LEXICAL:使用
JaccardChunksRetrievercognee/modules/retrieval/jaccard_retrival.py基于 Token 匹配(例如 Jaccard 相似度)进行精确词项匹配cognee/api/v1/search/search.py:123-125。
SUMMARIES
使用 SummariesRetriever cognee/modules/retrieval/summaries_retriever.py 获取预先生成的内容分层摘要 cognee/api/v1/search/search.py:103-106。
时序
调用 TemporalRetriever cognee/modules/retrieval/temporal_retriever.py 查询时间知识图谱。该类型用于基于时间的查询和分析事件序列 cognee/modules/search/types/SearchType.py:17。
代码 / CODING_RULES
专门用于仓库分析。它使用 CodingRulesRetriever cognee/modules/retrieval/coding_rules_retriever.py:11 查找实现模式和架构规则。该检索器专门查找 coding_agent_rules 节点集中的节点 cognee/modules/retrieval/coding_rules_retriever.py:18。
CYPHER
提供对图数据库的直接访问。它使用 CypherSearchRetriever cognee/modules/retrieval/cypher_search_retriever.py 对 Neo4j 或 Kuzu 执行原始 Cypher 查询 cognee/api/v1/search/search.py:113-116。
AGENTIC_COMPLETION
使用 AgenticRetriever cognee/modules/retrieval/agentic_retriever.py 利用可用技能和智能体逻辑执行多步推理或基于工具的检索 cognee/modules/search/methods/get_search_type_retriever_instance.py:160-169。
实现细节:搜索编排
搜索过程由 get_retriever_output 函数编排,该函数管理从检索器实例化到完成生成的搜索请求生命周期。
搜索检索序列
sequenceDiagram
participant API as 搜索 API
participant RO as get_retriever_output
participant RI as BaseRetriever(实例)
participant DB as GraphDB/VectorDB
API->>RO: get_retriever_output(query_type, query_text)
RO->>DB: graph_engine.is_empty()
RO->>RI: get_retrieved_objects(query_text)
RI->>DB: 获取节点/片段/三元组
DB-->>RI: 原始数据
RI-->>RO: retrieved_objects
RO->>RI: get_context_from_objects(retrieved_objects)
RI-->>RO: context
RO->>RI: get_completion_from_context(context)
RI-->>RO: completion
RO-->>API: SearchResultPayload
来源: cognee/modules/search/methods/get_retriever_output.py:19-91,cognee/modules/search/methods/search.py:92-111
搜索类型对比表
| 搜索类型 | 主要引擎 | 代码实体 | 最佳用途 |
|---|---|---|---|
GRAPH_COMPLETION | 图 + 向量 | GraphCompletionRetriever | 复杂推理、关系分析 |
RAG_COMPLETION | 向量 | CompletionRetriever | 文档中的事实查找 |
CHUNKS | 向量 | ChunksRetriever | 查找特定段落 |
SUMMARIES | 关系型 | SummariesRetriever | 高层级概览 |
TEMPORAL | 图 | TemporalRetriever | 基于时间的查询 |
CODING_RULES | 图 | CodingRulesRetriever | 仓库规则与模式 |
CYPHER | 图 | CypherSearchRetriever | 自定义图遍历 |
AGENTIC_COMPLETION | 图 + 大语言模型(LLM) | AgenticRetriever | 多步智能体推理 |
来源: cognee/api/v1/search/search.py:86-126,cognee/modules/search/methods/get_search_type_retriever_instance.py:73-170
高级配置
邻域搜索
像 GraphCompletionRetriever 这样的检索器支持 neighborhood_depth 和 neighborhood_seed_top_k 参数。如果提供了这些参数,系统会从向量搜索中找到的 top-k 节点开始执行遍历,以丰富上下文 cognee/modules/search/methods/get_search_type_retriever_instance.py:113-114。
反馈影响
feedback_influence 参数(取值范围 0.0 到 1.0)允许搜索优先考虑在之前会话中收到正面用户反馈的图元素 cognee/modules/search/methods/get_search_type_retriever_instance.py:110。
可观测性
每个搜索操作都被包装在 OpenTelemetry 跨度中。关键属性如 cognee.search.type、cognee.search.query 和 cognee.result.count 会被记录,以提供检索性能的可视性 cognee/modules/search/methods/get_retriever_output.py:35-44。
来源: cognee/api/v1/search/search.py:43-48,cognee/modules/search/methods/search.py:107-110,cognee/modules/observability/tracing.py:37-44