存储和方案

此页介绍 Oracle Agent Memory SDK 使用的核心存储抽象和方案控制。

存储 API

class oracleagentmemory.core.OracleMemoryStore

基础:IMemoryStore

OracleAgentMemory 使用的公用存储接口。

存储实施负责持久保存文本记录并对它们执行相似性搜索。定义了同步和异步入口点,以便更高级别的 API 可以在不复制特定于存储的逻辑的情况下公开匹配的同步/异步曲面。

method add

将记录添加到商店。

当调用方已具有一个或多个 PendingRecordBatch 对象时,请使用 add_batches()

method add_agent(抽象)

添加代理概要记录。

method add_async(异步)

将面向行的记录异步添加到存储中。

接受相同的参数并返回与 add() 相同的标识符。

method add_batches

将调用者准备的逻辑批处理添加到存储。

示例

store.add_batches(
    [
        PendingRecordBatch(
            texts=["pizza batch"],
            record_type="memory",
            record_ids="mem-batch-docs",
        )
    ]
)
['mem-batch-docs']

method add_batches_async(异步)

将呼叫者准备的逻辑批处理异步添加到存储中。

接受相同的参数并返回与 add_batches() 相同的标识符。

method add_user(抽象)

添加用户概要记录。

method delete(抽象)

按标识符删除一个存储的记录。

method delete_thread(抽象)

删除线程及其关联的存储数据。

这是用于删除存储管理的线程和线程范围记录的存储级别操作。当保留要求同时调用删除源消息和派生的线程范围内存数据时,首选线程删除,因为消息级别的删除并不意味着删除单独保留的派生记录。

method get(抽象)

按类型和标识符检索一个存储的记录。

method list(抽象)

列出一种记录类型的存储记录。

method list_thread_messages(抽象)

列出存储于一个线程的消息历史记录。

method search(抽象)

按相似性搜索记录。

示例

store.add(
    ["Searchable abstract memory"],
    record_type="memory",
    record_ids="mem-search-abstract-docs",
)
['mem-search-abstract-docs']
store.search("Searchable", 1, record_types={"memory"})[0][0].id
'mem-search-abstract-docs'

对标量元数据值进行筛选:

store.add(
    ["pizza release"],
    record_type="memory",
    record_ids="mem-search-meta-source-docs",
    metadata={"source": "slack"},
)
['mem-search-meta-source-docs']
any(
    record.id == "mem-search-meta-source-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"source": "slack"},
    )
)
True

对嵌套元数据进行过滤:

store.add(
    ["pizza review"],
    record_type="memory",
    record_ids="mem-search-meta-review-docs",
    metadata={"review": {"status": "open"}},
)
['mem-search-meta-review-docs']
any(
    record.id == "mem-search-meta-review-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"review": {"status": "open"}},
    )
)
True

完全匹配列表值,包括顺序:

store.add(
    ["pizza tags"],
    record_type="memory",
    record_ids="mem-search-meta-tags-docs",
    metadata={"tags": ["prod", "urgent"]},
)
['mem-search-meta-tags-docs']
any(
    record.id == "mem-search-meta-tags-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"tags": ["prod", "urgent"]},
    )
)
True

method search_async(异步)

按向量相似性异步搜索记录。

method update(抽象)

更新存储的记录内容、嵌入数据或元数据。

Oracle DB 存储

class oracleagentmemory.core.OracleDBMemoryStore

基础:OracleMemoryStore

数据库支持的消息、内存和角色概要信息持久性。

创建 Oracle DB 存储。

method add

将记录添加到商店。

当调用方已具有一个或多个 PendingRecordBatch 对象时,请使用 add_batches()

method add_async(异步)

将面向行的记录异步添加到存储中。

接受相同的参数并返回与 add() 相同的标识符。

method add_batches

将调用者准备的逻辑批处理添加到存储。

示例

store.add_batches(
    [
        PendingRecordBatch(
            texts=["pizza batch"],
            record_type="memory",
            record_ids="mem-batch-docs",
        )
    ]
)
['mem-batch-docs']

method add_batches_async(异步)

将呼叫者准备的逻辑批处理异步添加到存储中。

接受相同的参数并返回与 add_batches() 相同的标识符。

method add_agent

添加代理概要记录。

代理概要信息记录未受影响。插入的公共记录标识符与 agent_id 传递的值相同。

示例

store.add_agent("a-docs-agent", "Support assistant")
'a-docs-agent'

method add_user

添加用户概要记录。

用户概要信息记录未受限制。插入的公共记录标识符与 user_id 传递的值相同。

示例

store.add_user("u-docs-profile", "Prefers concise answers.")
'u-docs-profile'

method delete

按标识符删除一个托管行及其块行。

该操作在一个事务处理内运行。为支持的顶层目标启用 cascade 时,将一起提交或回退概要信息删除和所有范围子删除。

示例

store.add(["Delete me"], record_type="memory", record_ids="mem-delete-docs")
['mem-delete-docs']
store.delete("memory", "mem-delete-docs")
1

method delete_thread

删除线程及其关联的存储行。

需要线程范围级联清除时使用此操作。在数据库支持的存储中,删除该线程将删除托管线程行以及关联的消息和内存行以及为检索而维护的记录块行。这比仅删除原始消息行的消息级别删除更广泛。线程删除将删除从 THREAD 引用的相关消息和内存行以及同一事务处理中的匹配 RECORD_CHUNKS 行。

示例

store.delete_thread("c1")
0

method get

按标识符检索存储的记录。

示例

store.add(["Remember this"], record_type="memory", record_ids="mem-get-docs")
['mem-get-docs']
store.get("memory", "mem-get-docs").id
'mem-get-docs'

method(方法)list

枚举记录类型的持久记录。

"user_profile""agent_profile" 是不受限制的记录类型。对于这些记录类型,将忽略 thread_iduser_idagent_id,角色标识保留在 record.id 中。

示例

store.add(
    ["First listed", "Second listed"],
    record_type="memory",
    record_ids=["mem-list-docs-1", "mem-list-docs-2"],
)
['mem-list-docs-1', 'mem-list-docs-2']
[record.id for record in store.list("memory", limit=2)]
['mem-list-docs-1', 'mem-list-docs-2']
store.add_user("u-list-docs", "Prefers concise answers.")
'u-list-docs'
any(
    record.id == "u-list-docs"
    for record in store.list("user_profile", user_id=None, limit=10)
)
True

method list_thread_messages

返回一个话题持续的消息。

示例

store.list_thread_messages("c1")
[]

按相似性搜索记录。

示例

store.add(
    ["pizza preference"],
    record_type="memory",
    record_ids="mem-search-docs",
    thread_ids="c-search-docs",
)
['mem-search-docs']
results = store.search(
    "pizza",
    1,
    thread_id="c-search-docs",
    exact_thread_match=True,
    record_types={"memory"},
)
results[0][0].id
'mem-search-docs'

对标量元数据值进行筛选:

store.add(
    ["pizza release"],
    record_type="memory",
    record_ids="mem-search-meta-source-docs",
    metadata={"source": "slack"},
)
['mem-search-meta-source-docs']
any(
    record.id == "mem-search-meta-source-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"source": "slack"},
    )
)
True

对嵌套元数据进行过滤:

store.add(
    ["pizza review"],
    record_type="memory",
    record_ids="mem-search-meta-review-docs",
    metadata={"review": {"status": "open"}},
)
['mem-search-meta-review-docs']
any(
    record.id == "mem-search-meta-review-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"review": {"status": "open"}},
    )
)
True

完全匹配列表值,包括顺序:

store.add(
    ["pizza tags"],
    record_type="memory",
    record_ids="mem-search-meta-tags-docs",
    metadata={"tags": ["prod", "urgent"]},
)
['mem-search-meta-tags-docs']
any(
    record.id == "mem-search-meta-tags-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"tags": ["prod", "urgent"]},
    )
)
True

method search_async(异步)

按向量相似性异步搜索记录。

method update

更新存储的记录内容、块嵌入和元数据值。

示例

store.add(["Original note"], record_type="memory", record_ids="mem-update-docs")
['mem-update-docs']
store.update("memory", "mem-update-docs", text="Updated note")
1
store.get("memory", "mem-update-docs").content
'Updated note'

模式策略

class oracleagentmemory.core.SchemaPolicy

基础:strEnum

Oracle DB 存储的方案创建策略。

需要现有

验证完整托管方案是否已存在并且是否是最新的。请勿创建或修改数据库对象。

CREATE_IF_EMPTY

如果不存在托管对象,则引导方案。如果对象已存在,则需要完整且最新的托管方案。

需要 CREATE_IF_

仅创建缺少的托管对象,包括元数据。

重新创建

删除并重新创建所有托管方案对象。这是毁灭性的。