@svpino:仅依靠语义相似度来搜索数据是有缺陷的。图感知检索才是正确之路。基础实现……

X AI KOLs Timeline 产品

摘要

Oracle AI Agent Memory 26.8 引入了图感知检索,让智能体可以将记忆存储为带有类型化关系(取代、支持、矛盾)的关联记录,搜索结果不再局限于扁平的语义相似度匹配。该版本还增加了图像感知记忆、Schema 升级以及企业级控制功能。

仅依靠语义相似度来搜索数据是有缺陷的。图感知检索才是正确之路。 基础实现采用扁平检索来选择与查询匹配的记录。它按照语义相似度对记录进行排名,并从存储中返回最接近的匹配结果。 当你将所需信息存储在独立的记录中时,这种方式效果良好,但当你需要理解事实之间的关系时,它就会失效。 图感知检索是一次巨大的升级。 它包含三个组成部分: 1. 将事实存储为持久化记忆记录 2. 通过带关系标签的有向链接连接各记录。例如「取代」「支持」或「矛盾」 3. 通过沿链接遍历,返回所有关联记录,从而扩展搜索结果 因此,你的查询结果不仅会包含匹配的事实,还会包含它们之间关系的信息。 假设你存储了两段对话: • 「会议在周一。」 • 「会议改到周二了。」 如果你使用简单的扁平搜索来回答「会议是什么时候?」,两条记录都会被返回,因为它们都与问题匹配。 如果你使用图感知检索,你会得到一条「取代」关系,表明周二替代了周一。 Oracle AI Agent Memory 26.8 实现了图感知搜索。你可以在这里阅读他们的技术详解并查看代码: https://fandf.co/3VBDYt6 感谢 @OracleDevs 团队与我合作完成这篇文章。
查看原文
查看缓存全文

缓存时间: 2026/10/13 15:47

仅靠语义相似度来搜索数据是有缺陷的。图感知检索才是正确的方向。

基础实现采用扁平检索来选择与查询匹配的记录,按照语义相似度对记录进行排名,并从存储中返回最接近的匹配结果。

当你的信息以独立记录的形式存储时,这种方式运作良好。但当你需要理解事实之间的关系时,它就力不从心了。

图感知检索是一次巨大的升级。

它包含三个组成部分:

  1. 将事实存储为持久化记忆记录

  2. 用带有关系标签的有向链接将记录连接起来,例如“取代(supersedes)“、“支持(supports)“或“矛盾(contradicts)”

  3. 沿着链接扩展搜索结果,返回所有相连的记录

因此,你的查询结果将同时包含匹配的事实及其关系信息。

假设你存储了两段对话:

• “会议在周一。” • “会议改到了周二。”

如果你用简单的扁平搜索来回答“会议是什么时候?“,你会同时得到这两条记录,因为它们都与问题匹配。

如果你使用图感知检索,你会得到一个“取代“关系,表明周二替换了周一。

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 在

相似文章