agentic_huge_data_base / wiki
页面 Cognee · 11.2 检索与查询工具·DeepWiki 中文全文译文

11.2 · 检索与查询工具(Search and Query Tools)

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

项目Cognee 章节11.2 状态全文译文 模块接口与服务契约、检索、召回与索引、文档对象与元数据、系统架构
源码线索
  • .github/workflows/dockerhub-mcp.yml
  • Dockerfile
  • cognee-mcp/Dockerfile
  • cognee-mcp/README.md
  • cognee-mcp/entrypoint.sh
  • cognee-mcp/pyproject.toml
  • cognee-mcp/src/__init__.py
  • cognee-mcp/src/client.py
  • cognee-mcp/src/cognee_client.py
  • cognee-mcp/src/server.py
模块标签
  • 接口与服务契约
  • 检索、召回与索引
  • 文档对象与元数据
  • 系统架构
  • 安装与启动

章节正文

检索与查询工具

搜索与查询工具

相关源文件

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

  • .github/workflows/dockerhub-mcp.yml
  • Dockerfile
  • cognee-mcp/Dockerfile
  • cognee-mcp/README.md
  • cognee-mcp/entrypoint.sh
  • cognee-mcp/pyproject.toml
  • cognee-mcp/src/__init__.py
  • cognee-mcp/src/client.py
  • cognee-mcp/src/cognee_client.py
  • cognee-mcp/src/server.py
  • cognee-mcp/uv.lock
  • cognee/alembic/versions/7c5d4e2f8a91_add_parent_user_id_to_users.py
  • cognee/api/v1/search/search.py
  • cognee/modules/retrieval/coding_rules_retriever.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/modules/users/authentication/default/default_transport.py
  • cognee/modules/users/authentication/get_api_auth_backend.py
  • cognee/modules/users/authentication/get_client_auth_backend.py
  • cognee/tests/unit/test_add_parent_user_id_migration.py
  • docker-compose.yml
  • entrypoint.sh

本文档介绍了 Cognee MCP 服务器提供的搜索与查询工具。这些工具允许 AI 代理和 MCP 客户端从已处理的知识图谱和记忆层中检索信息。关于数据入库和处理工具,请参阅数据管理工具。关于 MCP 服务器的部署和配置,请参阅MCP 服务器配置

概述

MCP 服务器通过 cognee-mcp/src/server.py cognee-mcp/src/server.py:73 中定义的 FastMCP 实例,暴露了多个查询和监控工具。

工具用途关键参数
search使用多种检索策略查询知识图谱search_querysearch_type
cognify_status监控后台入库/处理任务dataset_name
get_rules检索从交互中生成的编码规则

这两个工具均以 MCP TextContent 对象的形式返回结果,适用于 Claude Desktop、Cursor、Cline 及其他兼容 MCP 的客户端中的 AI 代理消费。

来源:cognee-mcp/src/server.py:73cognee-mcp/src/server.py:521-545cognee-mcp/src/server.py:643-658

搜索工具

用途与能力

search 工具提供了一个统一接口,用于使用不同的检索策略查询 Cognee 的知识图谱。它利用 CogneeClient cognee-mcp/src/cognee_client.py:31 直接调用核心的 cognee.search() 函数,或者向正在运行的 Cognee API 发起 HTTP 请求 cognee-mcp/src/cognee_client.py:202-233

工具签名:

@mcp.tool()
async def search(search_query: str, search_type: str) -> list
参数
参数类型描述是否必填
search_querystr自然语言查询或搜索字符串
search_typestr要使用的检索策略(不区分大小写)

search_type 参数通过 normalize_search_type cognee-mcp/src/server.py:526 进行规范化,以匹配 SearchType 枚举 cognee/modules/search/types/SearchType.py。支持的类型包括:

  • GRAPH_COMPLETION(默认):使用完整图谱上下文和大语言模型(LLM)推理进行自然语言问答 cognee/api/v1/search/search.py:88-91
  • RAG_COMPLETION:传统的检索增强生成(RAG),使用文档片段而不依赖图谱结构 cognee/api/v1/search/search.py:93-96
  • CODE:代码专用搜索,具备语法和语义理解能力 cognee/api/v1/search/search.py:108-111
  • CHUNKS:与查询语义匹配的原始文本片段 cognee/api/v1/search/search.py:98-101
  • CHUNKS_LEXICAL:基于 Token 的词汇片段搜索(例如 Jaccard 相似度)cognee/api/v1/search/search.py:123-125
  • SUMMARIES:预生成的内容摘要 cognee/api/v1/search/search.py:103-106
  • CYPHER:使用 Cypher 语法直接查询图数据库 cognee/api/v1/search/search.py:113-116
  • FEELING_LUCKY:智能选择最合适的搜索类型 cognee/api/v1/search/search.py:118-121

来源:cognee-mcp/src/server.py:521-530cognee/api/v1/search/search.py:72-126cognee-mcp/src/cognee_client.py:202-210

搜索工具架构

下图展示了从 MCP 客户端的自然语言输入到 cognee 内部代码实体的桥梁。

自然语言到代码实体映射:搜索工作流

Cognee · 搜索工具架构 · 图 1
Cognee · 搜索工具架构 · 图 1

来源:cognee-mcp/src/server.py:521-545cognee-mcp/src/cognee_client.py:202-233cognee/modules/search/methods/search.py:37-140cognee/modules/search/methods/get_search_type_retriever_instance.py:36-40

结果格式化逻辑

搜索工具通过 format_search_results cognee-mcp/src/server.py:541 实现了不同的结果转换,以确保大语言模型(LLM)接收到最相关的上下文格式。

Cognee · 结果格式化逻辑 · 图 2
Cognee · 结果格式化逻辑 · 图 2

来源:cognee-mcp/src/server.py:530-545cognee-mcp/src/cognee_client.py:230-233cognee/modules/storage/utils.py:21

后台任务监控:cognify_status

由于 cognify 工具可能触发长时间运行的后台任务,因此提供了 cognify_status 工具来跟踪进度并处理主请求-响应周期之外发生的错误 cognee-mcp/src/server.py:643

工具签名:

@mcp.tool()
async def cognify_status(dataset_name: str = "main_dataset") -> str
实现逻辑
  1. 错误历史检查:它会检查 _task_errors 环形缓冲区,查看后台工作线程针对该特定数据集报告的任何异常 cognee-mcp/src/server.py:651-652
  2. 状态检索:它调用 get_last_added_data(dataset_name) 从关系数据库中检索当前处理状态 cognee-mcp/src/server.py:654
  3. 状态报告:它返回一个格式化字符串,包含当前状态(例如"处理中..."、"已完成")或任务失败时的错误详情 cognee-mcp/src/server.py:656-658

来源:cognee-mcp/src/server.py:82cognee-mcp/src/server.py:100-103cognee-mcp/src/server.py:643-658

get_rules 工具

get_rules 工具检索从先前用户与代理交互中生成并存储在知识图谱中的开发者/编码规则。

工具签名:

@mcp.tool()
async def get_rules() -> list

它利用 get_existing_rules() cognee-mcp/src/server.py:611 获取存储的图谱实体,并将其格式化为代理可用的规则列表。这是 Cognee 的"Memify"系统的一部分,用于长期上下文增强。

来源:cognee-mcp/src/server.py:607-613cognee-mcp/src/server.py:62-65

数据库查询集成

检索系统通过检索器工厂将自然语言查询桥接到特定的数据库适配器实现。

代码实体空间:数据库检索路径

Cognee · 数据库查询集成 · 图 3
Cognee · 数据库查询集成 · 图 3

来源:cognee/modules/search/methods/get_search_type_retriever_instance.py:73-156cognee/infrastructure/databases/graph/kuzu/adapter.py:43-155cognee/infrastructure/databases/graph/neo4j_driver/adapter.py:52-130

MCP 通信模式

标准输出重定向

搜索和查询工具都使用了 redirect_stdout(sys.stderr) cognee-mcp/src/server.py:525。这一点至关重要,因为 MCP 使用 stdout 进行 JSON-RPC 协议通信;应用程序日志或打印语句发送到 stdout 会破坏客户端-服务器连接。

响应格式

所有工具都返回一个 types.TextContent 对象列表 cognee-mcp/src/server.py:544-545。这标准化了 MCP 客户端(如 Claude Desktop)的输出格式,确保大语言模型(LLM)能够将检索到的上下文作为纯文本进行处理。

来源:cognee-mcp/src/server.py:17cognee-mcp/src/server.py:525-545cognee-mcp/src/server.py:18