@svpino:仅依靠语义相似度来搜索数据是有缺陷的。图感知检索才是正确之路。基础实现……
摘要
Oracle AI Agent Memory 26.8 引入了图感知检索,让智能体可以将记忆存储为带有类型化关系(取代、支持、矛盾)的关联记录,搜索结果不再局限于扁平的语义相似度匹配。该版本还增加了图像感知记忆、Schema 升级以及企业级控制功能。
查看缓存全文
缓存时间: 2026/10/13 15:47
仅靠语义相似度来搜索数据是有缺陷的。图感知检索才是正确的方向。
基础实现采用扁平检索来选择与查询匹配的记录,按照语义相似度对记录进行排名,并从存储中返回最接近的匹配结果。
当你的信息以独立记录的形式存储时,这种方式运作良好。但当你需要理解事实之间的关系时,它就力不从心了。
图感知检索是一次巨大的升级。
它包含三个组成部分:
-
将事实存储为持久化记忆记录
-
用带有关系标签的有向链接将记录连接起来,例如“取代(supersedes)“、“支持(supports)“或“矛盾(contradicts)”
-
沿着链接扩展搜索结果,返回所有相连的记录
因此,你的查询结果将同时包含匹配的事实及其关系信息。
假设你存储了两段对话:
• “会议在周一。” • “会议改到了周二。”
如果你用简单的扁平搜索来回答“会议是什么时候?“,你会同时得到这两条记录,因为它们都与问题匹配。
如果你使用图感知检索,你会得到一个“取代“关系,表明周二替换了周一。
Oracle AI Agent Memory 26.8 实现了图感知搜索。你可以在以下链接阅读他们的技术详解并查看代码:
https://fandf.co/3VBDYt6
感谢 @OracleDevs 团队与我合作发布这篇文章。
Oracle AI Agent Memory 新功能:图感知检索、图像记忆与企业级管控
来源:https://blogs.oracle.com/developers/whats-new-in-oracle-ai-agent-memory-graph-aware-retrieval-image-memory-and-enterprise-controls?source=:ad:so:tw:awr:a_nas::RC_DEVT260603P00041:Santiago&SC=:ad:so:tw:awr:a_nas::RC_DEVT260603P00041:Santiago
在这个版本中,记忆的生命周期变得更加明确:记忆可以被创建、连接、更新、取代、检索,并随时间进行管控。
Oracle AI Agent Memory(https://pypi.org/project/oracleagentmemory/)正在从持久化回忆走向可以不断演化的记忆。本次发布包含图感知检索、图像感知记忆、Schema 升级支持和企业级管控功能。本文的核心主题是图记忆(Graph Memory)支持:记忆可以通过类型化关系进行连接,检索时不仅可以返回直接匹配的记忆,还能带出解释这些记忆随时间如何关联的上下文。
本文基于公开的 Oracle AI Agent Memory 文档(https://docs.oracle.com/en/database/oracle/agent-memory/),并通过配套笔记本《Graph-Aware Retrieval with Oracle AI Agent Memory》进行讲解。
配套笔记本:oracle_agent_memory_evolution.ipynb(https://github.com/oracle-devrel/oracle-ai-developer-hub/blob/main/notebooks/oracle_agent_memory_evolution.ipynb)
双列对比图:左侧为扁平记忆检索,返回孤立记录;右侧为图感知检索,执行一跳图扩展并展示直接结果和关联结果。扁平检索 vs 图感知检索
关键要点
-
26.8 版本在上一版本的基础上扩展了 Oracle AI Agent Memory,新增了图感知检索、图像记忆、Schema 升级逻辑和企业级管控改进。
-
图记忆帮助代理理解事实之间的关联,而不是将记忆视为一列扁平的孤立记录。
-
记忆链接可以表示多种关系,如取代(supersedes)、细化(refines)、支持(supports)、矛盾(contradicts)和重复(duplicates)。
-
图感知检索可以通过
num_hops和linked_results等设置,将直接搜索结果扩展到关联上下文。 -
提取过程中的自动链接应作为主要的开发者体验:应用定义记忆行为,相关记忆在正常提取过程中自动建立链接。
-
显式链接在应用有已确认的工作流事件时仍然有用,例如替换订单取代了旧的配送承诺。
-
配套笔记本使用 FreeSQL、Autonomous AI Database 和 Oracle AI Database 连接方式,并在创建任何数据库连接之前设置 Developer Hub 程序标识符。
| 发布能力 | 变化内容 | 重要性 |
|---|---|---|
| 图记忆 | 记忆记录现在可以通过类型化有向关系连接,如取代、细化、支持、矛盾和重复。 | 代理能够理解事实如何演化,而不是检索没有关系上下文的孤立记忆。 |
| 图感知检索 | 搜索可以通过 num_hops 和 max_linked_results 等控件从直接匹配扩展到关联记忆。 | 代理的后续对话轮次可以接收更丰富的上下文,同时保持检索范围有界。 |
| 自动记忆链接 | 记忆提取可以在正常提取工作流中识别并连接相关记忆。 | 开发者无需手动创建每一条关系,即可获得记忆演化行为。 |
| 图像感知记忆 | 图像可以持久化为文档记录,并通过调用方提供的描述或自动生成的标题进行搜索。 | 代理可以将截图、产品图片、表单、收据和支持证据作为持久上下文使用,默认不返回原始字节数据。 |
| 企业级管控 | Schema 版本 13、元数据作用域、Oracle Deep Data Security 集成、持久化摘要和剪枝,支持更规范的记忆工作流。 | 团队可以让记忆在生产环境中保持有用、受管控、高效且更易于运维。 |
为什么这个版本很重要
持久化记忆使代理更加有用,因为它们可以复用先前交互中的持久上下文。但持久化记忆也带来了更棘手的问题:事实会变化。客户可能更新配送偏好,支持案例可能被升级,或者新的替换承诺可能取代了先前的承诺。代理不应丢失历史记录,但也不应将旧事实视为与当前事实同等有效。
图记忆通过在记忆记录之间添加关系来弥补这一差距。应用不再孤立地检索单条记忆,而是可以检索一条直接匹配的记忆及其周围的关联上下文。这使得记忆演化变得可解释:代理可以看到什么发生了变化、哪条记录更新、以及为什么另一条记忆是相关的。
图记忆如何工作
一个实用的技术模型是将该功能分为三层:记忆记录存储持久化内容,记忆链接存储两个记录之间的类型化关系,检索层决定是仅返回直接匹配还是通过图链接进行扩展。
记忆记录仍然是代理后续可以复用的持久化事实,例如客户偏好、案例状态或支持承诺。记忆链接补充了缺失的关系层:它记录一条记忆取代、细化、支持、矛盾或重复另一条记忆。图感知检索随后决定有多少关系上下文应随直接搜索结果一起返回。
这种分层对读者来说很重要。图记忆不仅仅是一种不同的排名策略,它为记忆系统提供了一个关系模型,可以在保留事实演化过程的同时,让应用继续控制检索范围。
记忆链接类型
介绍图记忆最清晰的方式是通过链接类型。链接类型使关系足够明确,便于应用和未来的代理轮次对其进行推理。
例如,当一条更新的记忆应在未来使用中取代一条旧记忆时,“取代(supersedes)“是正确的关系。在笔记本的支持场景中,更新后的配送时间窗口可以取代原始偏好。当一条更新的记忆使先前的记忆更加精确时,“细化(refines)“很有用,例如将一般的上午配送偏好缩小为一个具体的时间窗口。当工具结果或另一条已确认的记录为某条记忆提供证据时,“支持(supports)“很有用。“矛盾(contradicts)“和“重复(duplicates)“则帮助建模应用可能希望检查或解决的冲突或重复事实。
该版本将链接建模为有向记录关系。诸如 new_memory –supersedes–> old_memory 这样的关系将更新的记忆作为源,旧记忆作为目标。反向遍历可以为可读性呈现相反的关系,但不会改变已存储的关系方向。
记忆演化还引入了生命周期状态。新记忆默认为有效状态,而受到取代、细化或重复链接影响的旧记录可以变为无效状态,并作为历史上下文保留可用。这是一个重要的设计要点:旧记忆不会被简单删除,它仍然可以解释当前状态是如何达到的。
笔记本演示了什么
笔记本(https://github.com/oracle-devrel/oracle-ai-developer-hub/blob/main/notebooks/oracle_agent_memory_evolution.ipynb)聚焦于图记忆这一发布的核心技术主题,因为它是记忆演化的基础。笔记本有意保持精简,但仍然展示了企业级模式:连接 Oracle AI Database,初始化或升级托管 Schema,创建持久化记忆,建立链接,比较普通搜索与图感知检索,并检查关联结果。
演示流程从安装和导入所需的包开始,然后检查已安装的包是否暴露了工作流所使用的图记忆 API。随后配置基于数据库的存储,使用与本版本相关的托管 Oracle Database 选项:FreeSQL 用于快速托管演示,Autonomous AI Database 用于 ADB 验证,或 Oracle AI Database 用于现有服务或连接描述符。之后,笔记本初始化托管 Schema,创建一组支持场景的记忆,添加显式链接,比较直接搜索与图感知搜索,最后展示提取过程中的自动链接。
这种流程使笔记本紧贴发布主题。笔记本使用图感知检索作为贯穿发布的可运行路径,因为它是展示记忆演化实际效果的最清晰方式。它并不试图同时演示所有新功能,而是使用一个精简的支持场景来展示最重要的行为:记忆可以通过链接进行演化,检索可以在代理需要时暴露这些关联上下文。
数据库设置与 ADB 指南
每一个连接到 Oracle Database 的 Developer Hub 技术资源都应通过连接程序名称进行标识。笔记本在导入之后、创建第一个连接之前设置一次该标识。
在导入 python-oracledb 之后、创建任何连接池或连接之前,立即设置程序标识符。
设置 Developer Hub 程序标识符
import oracledb
oracledb.defaults.program = "devrel-developerhub-graph-aware-retrieval-agent-memory"
笔记本随后使用标准的 python-oracledb 连接配置来连接 FreeSQL、Autonomous AI Database 或 Oracle AI Database。这使示例与 ADB 的使用方式保持一致,同时仍然为读者提供了一个轻量级的 FreeSQL 路径来试用笔记本。
关于数据库背景知识,请参阅 Oracle AI Database 26ai 文档(https://docs.oracle.com/en/database/oracle/oracle-database/26/)。
对于使用 Autonomous Database 的读者,请参阅 Oracle 关于下载钱包/客户端凭据的指南(https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/connect-download-wallet.html)。
python-oracledb 的 ADB mTLS 连接流程也在以下文档中说明:mTLS 连接 Oracle Autonomous Database(https://python-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#mutual-tls-mtls-connection-to-oracle-autonomous-database)。
初始化或升级托管 Schema
图记忆需要托管 Schema 对记忆链接和图感知检索的支持。在本版本中,托管 Schema 升级到了版本 13。它新增了 memory_link 表和相关索引,在记忆记录中添加了生命周期状态和状态更新时间,并在记忆及其链接之上创建了 memory_graph Oracle SQL 属性图。
笔记本展示了开发者应使用的模式:选择合适的 SchemaPolicy,使存储能够在环境允许的情况下创建或升级所需的数据库对象。对于全新的笔记本环境,CREATE_IF_NECESSARY 非常方便。对于迁移后的正常生产启动,团队应优先使用 REQUIRE_EXISTING,以确保 Schema 变更是经过刻意决策的。
存储初始化使 Schema 策略保持可见。当读者希望示例为发布功能创建或升级托管 Schema 时,应关注这一行代码。
初始化托管记忆存储
from oracleagentmemory.stores.oracledb import OracleDBMemoryStore, SchemaPolicy
store = OracleDBMemoryStore(
**store_kwargs,
schema_policy=SchemaPolicy.CREATE_IF_NECESSARY,
)
对外的要点很简单:面向发布的笔记本应有意识地初始化托管 Schema,生产团队应在共享环境中运行升级之前审查 Schema 变更。
显式链接:当应用知道关系时
当应用已有确认的事件时,显式链接非常有用。例如,支持工作流可能知道新的替换发货取代了旧的配送承诺,或者订单状态工具的结果支持了从对话文本中提取的记忆。
在建立任何链接之前,先创建一组小型的支持记忆。这使示例有据可依:图记忆在偏好、替换上下文和支持状态等持久化事实上进行演示。
添加持久化支持记忆
created = {}
for item in seed_memories:
result = memory.add_memory(
user_id=USER_ID,
agent_id=AGENT_ID,
text=item["text"],
metadata=item["metadata"],
)
created[item["label"]] = result
使用发布的 API 来建立类型化记录关系。新记忆可以通过 supersedes 等关系链接到旧记忆,应用可以在工作流状态变化时更新或删除记录链接。
创建显式记录链接
relation_id = memory.link_records(
source_record_id=new_memory_id,
source_record_type="preference",
target_record_id=previous_memory_id,
target_record_type="preference",
relation_type="supersedes",
metadata={"reason": "new delivery preference"},
)
这将工作流知识转化为持久化的关系上下文。未来的代理可以检索当前事实和相关的历史事实,然后理解为什么更新的记忆应指导回复。
提取过程中的自动链接
自动链接是应向开发者重点强调的功能。大多数应用不需要手动编码每一条记忆之间的关系。相反,它们可以配置提取行为,让记忆工作流在创建新记忆时自动识别可能的关系。
这一配置支撑了本文的核心产品信息:自动链接可以使记忆演化对开发者基本透明。
启用自动链接提取
memory_extraction_config = MemoryExtractionConfig(
memory_extraction_frequency=1,
memory_link_extraction_mode=MemoryLinkExtractionMode.POST_EXTRACTION,
)
该版本提供了三种模式:POST_EXTRACTION、DURING_EXTRACTION 和 DISABLED。POST_EXTRACTION 是默认模式,在提取的记忆写入完成后进行链接,使用检索找到的候选记忆。DURING_EXTRACTION 在
相似文章
@pauliusztin_: 我研究了Cognee、Graphiti和agent-memory(来自Neo4j)如何构建它们的智能体记忆解决方案,并将整个架构整理成了一篇文章。
关于Cognee、Graphiti和Neo4j的智能体记忆解决方案的研究总结,这些方案都使用知识图谱和向量搜索,并基于LLM进行数据提取。
@akshay_pachaar: 你的智能体记性很好,但理解力为零。大多数智能体记忆系统都在优化回忆能力。但更难的问题是……
一则关于智能体记忆中模式(Schema)约束重要性的讨论,介绍了 Zep AI 的开源 Graphiti 库,该库用于构建受约束实体和关系类型的时序知识图谱。
Oracle Agent Memory作为面向长周期AI智能体的企业级记忆基座
Oracle推出了Agent Memory,一种面向长周期AI智能体的数据库原生记忆基座,相比于扁平历史基线,在准确率高达93.8%的同时,token用量减少至原来的1/10.7(即减少约10.7倍)。
构建 Agentic GraphRAG 系统:从知识图谱和本体论到作为 AI 智能体 MCP 服务器的统一记忆
作者认为 GraphRAG 本质上是一个数据建模问题,而非单纯的检索算法,并提出了一种包含五个组件的架构,利用本体论、知识图谱和 MCP 服务器为智能体提供统一记忆。
Memanto:面向长周期智能体的类型化语义记忆与信息论检索
Memanto 引入了一个基于模式(schema)、冲突解决机制以及 Moorcheh 信息论检索引擎的类型化语义记忆系统,在 LongMemEval 和 LoCoMo 基准测试中取得了最先进的结果,且零摄入成本、延迟低于 90 毫秒。