agentic_huge_data_base / wiki
页面 Graphiti · 11 示例与 Use Cases·DeepWiki 中文全文译文

11 · 示例与 Use Cases(Examples and Use Cases)

时序知识图谱与动态事实记忆 · 本章是 Graphiti DeepWiki 中文译文的独立章节页,保留原始链接、源码锚点、模块标签和章节层级。

项目Graphiti 章节11 状态全文译文 模块测试、发布与运维、模型调用与提供方适配、图谱与关系、接口与服务契约
源码线索
  • examples/ecommerce/runner.py
  • examples/quickstart/quickstart_falkordb.py
  • examples/quickstart/quickstart_neo4j.py
  • examples/wizard_of_oz/runner.py
  • graphiti_core/decorators.py
  • mcp_server/tests/test_async_operations.py
  • mcp_server/tests/test_comprehensive_integration.py
模块标签
  • 测试、发布与运维
  • 模型调用与提供方适配
  • 图谱与关系
  • 接口与服务契约
  • 界面与交互

中文译文

示例与 Use Cases(中文译文)

原始 DeepWiki 页面:https://deepwiki.com/getzep/graphiti/11-examples-and-use-cases
翻译时间:2026-05-27T08:44:54.307Z
翻译模型:deepseek-chat
原文字符数:10434
项目:Graphiti (graphiti)

---

示例与用例

相关源文件

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

  • examples/ecommerce/runner.py
  • examples/quickstart/quickstart_falkordb.py
  • examples/quickstart/quickstart_neo4j.py
  • examples/wizard_of_oz/runner.py
  • graphiti_core/decorators.py
  • mcp_server/tests/test_async_operations.py
  • mcp_server/tests/test_comprehensive_integration.py

本页面提供了 Graphiti 的实用示例和常见使用模式,涵盖了基本操作、提供方配置和集成模式,旨在帮助您快速上手并理解如何将 Graphiti 应用于实际场景。

如需详细的分步教程,请参阅:

  • 快速入门教程快速入门教程)—— 使用 Neo4j、FalkorDB 或 Amazon Neptune 进行基本设置和首次操作。
  • AI 智能体集成模式AI 智能体集成模式)—— 通过模型上下文协议(MCP)将 Graphiti 与 AI 智能体集成。
  • 播客处理示例播客处理示例)—— 处理转录文本,进行实体提取和关系构建。

如需了解高级功能用法,请参考:

常见用例

Graphiti 支持以下几种主要用例:

用例描述关键特性
AI 智能体记忆为对话智能体提供持久化知识图谱片段链、时间查询、混合搜索
文档处理从文档中提取实体和关系批量处理、JSON 入库、结构化提取
实时数据集成从实时数据流持续更新图谱增量更新、去重、时间追踪
企业知识管理从业务数据构建可搜索的知识库社区检测、自定义实体类型、多源集成
研究与分析追踪随时间演变的关系时间点查询、失效处理、历史分析

来源: examples/quickstart/quickstart_neo4j.py:73-77examples/ecommerce/runner.py:60-72

---

基本使用模式

使用默认配置初始化 Graphiti

最简单的 Graphiti 设置使用 Neo4j 和 OpenAI,并通过环境变量进行配置。Graphiti 类负责编排底层驱动和客户端。

from graphiti_core import Graphiti

# 使用默认 Neo4j 连接进行初始化
graphiti = Graphiti(
    uri="bolt://localhost:7687",
    user="neo4j",
    password="password"
)

# 构建索引和约束
await graphiti.build_indices_and_constraints()

来源: examples/quickstart/quickstart_neo4j.py:47-67examples/ecommerce/runner.py:88-90

片段入库工作流

下图展示了在入库过程中,自然语言输入如何映射到内部代码实体空间,以及高层调用如何对应到内部操作。

flowchart TB
    subgraph "自然语言空间"
        TEXT["episode_body: str"]
        META["name, source, reference_time"]
    end

    subgraph "Graphiti 核心 API"
        ADD_EP["Graphiti.add_episode()"]
        ADD_BULK["Graphiti.add_episode_bulk()"]
    end

    subgraph "代码实体空间(处理)"
        EXTRACT["LLMClient.generate_response()<br/>(节点/边提取)"]
        RESOLVE["EntityNodeOperations.resolve_nodes()<br/>EntityEdgeOperations.resolve_edges()"]
        EMBED["EmbedderClient.create()<br/>(向量生成)"]
        PERSIST["EpisodeNodeOperations.create()<br/>EntityEdgeOperations.create_many()"]
    end

    subgraph "数据库驱动空间"
        DRIVER["GraphDriver(Neo4j/Falkor/Kuzu)"]
        NODES["EntityNode<br/>EpisodicNode"]
        EDGES["EntityEdge<br/>EpisodicEdge"]
    end

    TEXT --> ADD_EP
    META --> ADD_EP
    ADD_EP --> ADD_BULK
    ADD_BULK --> EXTRACT
    EXTRACT --> RESOLVE
    RESOLVE --> EMBED
    EMBED --> PERSIST
    PERSIST --> DRIVER
    DRIVER --> NODES
    DRIVER --> EDGES

来源: examples/ecommerce/runner.py:75-84examples/wizard_of_oz/runner.py:84-90graphiti_core/decorators.py:29-53

添加片段

Graphiti 支持多种片段类型,包括原始文本、JSON 和消息列表。使用 EpisodeType 指定格式。

from datetime import datetime, timezone
from graphiti_core.nodes import EpisodeType

# 添加文本片段
await graphiti.add_episode(
    name="用户偏好",
    episode_body="John 喜欢在他的应用中使用深色模式。他在 Acme Corp 工作。",
    source_description="用户对话",
    source=EpisodeType.text,
    reference_time=datetime.now(timezone.utc)
)

# 添加 JSON 格式片段
await graphiti.add_episode(
    name="产品数据",
    episode_body='{"name": "SuperLight Wool Runners", "material": "wool"}',
    source_description="产品目录",
    source=EpisodeType.json,
    reference_time=datetime.now(timezone.utc)
)

来源: examples/quickstart/quickstart_falkordb.py:92-138examples/ecommerce/runner.py:102-120

搜索图谱

搜索系统使用混合检索来查找相关节点和边,通常会使用 center_node_uuid 基于图谱邻近度进行重排序。

flowchart LR
    subgraph "搜索输入"
        QUERY["query: str"]
        CONFIG["SearchConfig"]
        FILTERS["SearchFilters"]
    end

    subgraph "Graphiti 搜索引擎"
        SEARCH["Graphiti.search()"]
        OPS["SearchOperations.search()"]
        RERANK["CrossEncoderClient.rerank()"]
    end

    subgraph "代码实体结果"
        EDGES["List[EntityEdge]"]
        NODES["List[EntityNode]"]
    end

    QUERY --> SEARCH
    CONFIG --> SEARCH
    FILTERS --> SEARCH
    SEARCH --> OPS
    OPS --> RERANK
    RERANK --> EDGES
    RERANK --> NODES

来源: examples/quickstart/quickstart_neo4j.py:138-151graphiti_core/decorators.py:76-80

from graphiti_core.search.search_config_recipes import NODE_HYBRID_SEARCH_RRF

# 基本边搜索(事实)
results = await graphiti.search(
    "谁是加州总检察长?",
    num_results=5
)
for result in results:
    print(f"事实:{result.fact}")

# 使用预定义配置进行节点搜索
node_results = await graphiti.search(
    "Gavin Newsom",
    search_config=NODE_HYBRID_SEARCH_RRF
)

来源: examples/quickstart/quickstart_neo4j.py:138-151examples/quickstart/quickstart_neo4j.py:186-193

---

提供方配置示例

数据库后端选项

Graphiti 通过 GraphDriver 接口抽象了数据库操作。Graphiti 类可以直接使用驱动进行初始化。

# Neo4j 驱动(默认)
from graphiti_core.driver.neo4j_driver import Neo4jDriver
driver = Neo4jDriver(uri="bolt://localhost:7687", user="neo4j", password="password")

# FalkorDB 驱动
from graphiti_core.driver.falkordb_driver import FalkorDriver
falkor_driver = FalkorDriver(host="localhost", port=6379)
graphiti = Graphiti(graph_driver=falkor_driver)

来源: examples/quickstart/quickstart_falkordb.py:75-78examples/quickstart/quickstart_neo4j.py:67-67

大语言模型(LLM)提供方选项

Graphiti 通过 LLMClient 接口支持多种大语言模型(LLM)提供方。

Anthropic 示例
from graphiti_core.llm_client.anthropic_client import AnthropicClient
from graphiti_core.llm_client.config import LLMConfig

llm_client = AnthropicClient(LLMConfig(api_key=os.environ.get('ANTHROPIC_API_KEY')))
client = Graphiti(neo4j_uri, neo4j_user, neo4j_password, llm_client)

来源: examples/wizard_of_oz/runner.py:61-62

---

MCP 服务器集成

MCP(模型上下文协议)服务器将 Graphiti 的能力暴露给 AI 智能体。它包含顺序队列管理,确保在 group_id 内按顺序处理片段。

关键工具:

  • add_memory:将片段加入处理队列。
  • search_memory_nodes:对实体执行混合搜索。
  • search_memory_facts:对关系/边执行混合搜索。
  • get_episodes:检索特定组的最新片段。
  • get_status:检查图谱和处理队列的状态。
graph TD
    A[AI 智能体] -->|调用工具| B{MCP 服务器}
    B -->|add_memory(group_id, ...)| C[队列服务]
    C -->|按 group_id 顺序处理| D[Graphiti 核心]
    D -->|add_episode()| E[图数据库]
    B -->|search_memory_nodes(group_id, query)| D
    B -->|search_memory_facts(group_id, query)| D
    B -->|get_episodes(group_id)| D
    D -->|返回结果| B
    B -->|返回结果| A

来源: mcp_server/tests/test_async_operations.py:23-58mcp_server/tests/test_comprehensive_integration.py:151-171

---

运行示例

快速入门示例展示了不同数据库后端下的核心功能:

# 运行 Neo4j 快速入门
python examples/quickstart/quickstart_neo4j.py

# 运行 FalkorDB 快速入门
python examples/quickstart/quickstart_falkordb.py

这些示例涵盖:

  • 使用 build_indices_and_constraints() 进行图谱初始化。
  • 使用文本和 JSON 内容进行片段入库。
  • 结合语义相似度和 BM25 的混合搜索。
  • 使用 center_node_uuid 进行图谱感知的重排序。

来源: examples/quickstart/quickstart_neo4j.py:57-67examples/quickstart/quickstart_falkordb.py:65-79

---

如需更详细的教程和集成模式,请参阅子页面: