商店與綱要

此頁面顯示 Oracle 代理程式記憶體 SDK 使用的核心存放區摘要和綱要控制項。

儲存 API

商店寫入語意

儲存庫寫入會在應用程式儲存的文字與儲存用於擷取的有效負載之間保留明確的分隔。大多數應用程式都可以使用記憶體層級和執行緒層級的 API,並讓存放區準備進行向量、關鍵字或混合擷取所需的搜尋資料列。低階存放區 API 會顯示 index_texts、index_text、embeddings 和 embedding,以供已知道應使用哪些文字或向量進行擷取的進階整合使用。

將每一個部份寫成兩個相關部份:

update() 也接受 text 作為已不再使用的相容性參數。在新程式碼中使用 content;提供 text 會發出棄用警告。

如果未提供搜尋置換或明確內嵌,則存放區會使用解析的儲存文字作為擷取文字。設定分區時,商店會分區非空白文字。空白文字會儲存記錄文字,但不會提供擷取文字。

下表說明在考慮明確向量有效負載之前,如何選擇擷取文字。

儲存層次擷取有效負載

輸入 add() update()
省略 index_texts 或 index_text 每筆記錄都會使用解析的 contents 值進行擷取。 取代的 content 值會用於擷取。如果也省略 content,則僅內嵌更新會重複使用記錄的現有擷取文字資料列。
字串 index_texts 項目或字串 index_text 此字串會取代該記錄的擷取文字。寫入擷取列之前,商店可以將其分塊。 此字串會取代該記錄的擷取文字。寫入擷取列之前,商店可以將其分塊。
list[str] index_texts 項目或 list[str] index_text 此清單會被視為呼叫者擁有的區塊。每個非空白字串都會寫入為一個擷取列,且商店不會再次分區。 此清單會被視為呼叫者擁有的區塊。每個非空白字串都會寫入為一個擷取列,且商店不會再次分區。
None index_texts 項目或 index_text=None 外部 index_texts 清單中的 None 表示「使用此記錄的預存內容」。 除非同時提供 content,否則 index_text=None 會在未變更儲存的內容時清除擷取資料列。
空白字串或空白區塊清單 儲存記錄內容,且不提供該記錄的擷取文字。 在提供 content 時更新記錄內容,並清除該記錄的擷取文字。

明確內嵌是選擇性的。省略時,當設定本機向量儲存時,存放區會從擷取文字衍生本機向量;關鍵字或混合存放區也可以使用純文字擷取資料列。提供明確的 embeddings 或 embedding 值時,存放區會直接寫入這些向量,而不會為這些向量呼叫其內嵌器。

在 add() 中,embeddings=None 的行為類似於省略 embeddings。在 update() 中,embedding=None 是明確的:存放區會根據 content 和 index_text 保留或重寫擷取文字,但會儲存沒有本機向量的資料列。如果同時省略 content 和 index_text,就會清除現有擷取列中的向量。

向量形狀告訴商店,來電者所採取的區塊所有權是多少:

某些組合被拒絕,因此儲存的文字、擷取文字和向量不會偏差。傳送 content=None 會清除儲存的內容和擷取資料列,因此無法與非空值的 index_text 或 embedding 值合併;動作者設定檔記錄不支援 content=None。已不再使用的 text 參數有相同的行為。在 update() 中傳送 index_text=None 表示「清除擷取資料列」,因此在相同的呼叫中不允許非空白的明確內嵌。多個明確的向量需要明確的區塊文字,除非更新是僅內嵌的,且現有的擷取列已提供區塊文字。

類別 oracleagentmemory.core.OracleMemoryStore

基本:IMemoryStore

OracleAgentMemory 使用的通用儲存介面。

商店實施負責保存文字記錄,並對其執行相似性搜尋。同時定義了同步和非同步進入點,因此高階 API 可以公開相符的同步 / 非同步曲面,而不需要複製儲存特定邏輯。

方法 add

新增記錄至商店。

備註

當呼叫程式已經有一或多個 PendingRecordBatch 物件時,請使用 add_batches()。

方法 add_agent (摘要)

新增專員資料檔記錄。

方法 add_agent_async (非同步)

非同步新增專員資料檔記錄。

方法 add_async (非同步)

以非同步方式將資料列導向的記錄新增至商店。

接受相同的引數,並傳回與 add() 相同的識別碼。

方法 add_batches

新增來電者準備的邏輯批次至商店。

範例

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

方法 add_batches_async (非同步)

以非同步方式將呼叫器準備的邏輯批次新增至存放區。

接受相同的引數,並傳回與 add_batches() 相同的識別碼。

方法 add_relations (摘要)

儲存一或多個導向關係。

定量值會跨來源記錄批次廣播。清單值的長度必須相同。一個端點組只能儲存一個方向。使用 opposite_relation_types 來描述反向檢視,而不是新增第二個反向關係。實作可能會限制它們保存的端點記錄類型和關係標籤。

範例

store.add_relations(
    "new", "memory", "old", "memory", "supersedes"
)
['relation-id']

方法 add_relations_async (非同步)

非同步儲存一或多個導向關係。

定量值會跨來源記錄批次廣播。清單值的長度必須相同。一個端點組只能儲存一個方向。使用 opposite_relation_types 來描述反向檢視,而不是新增第二個反向關係。

範例

await store.add_relations_async(
    "new", "memory", "old", "memory", "supersedes"
)
['relation-id']

方法 add_user (摘要)

新增使用者基本資料記錄。

方法 add_user_async (非同步)

非同步新增使用者資料檔記錄。

方法 delete (摘要)

依識別碼刪除一筆儲存的記錄。

方法 delete_async (非同步)

以非同步方式依識別碼刪除一筆儲存的記錄。

方法 delete_relations (摘要)

依識別碼刪除關係。

生命週期狀態會從剩餘的關係重新計算。

範例

store.delete_relations("relation-id")
1

方法 delete_relations_async (非同步)

依 ID 非同步刪除關係。

生命週期狀態會從剩餘的關係重新計算。

範例

await store.delete_relations_async("relation-id")
1

方法 delete_thread (摘要)

刪除執行緒及其關聯的預存資料。

備註

這是儲存層次作業,用於移除商店所管理的執行緒與執行緒作用領域記錄。保留需求呼叫刪除來源訊息和衍生繫線作用領域記憶體資料時,偏好刪除繫線,因為訊息層次刪除並不表示會移除個別保存的衍生記錄。

方法 delete_thread_async (非同步)

非同步刪除執行緒及其相關聯的預存資料。

備註

這是儲存層次作業,用於移除商店所管理的執行緒與執行緒作用領域記錄。保留需求呼叫刪除來源訊息和衍生繫線作用領域記憶體資料時,偏好刪除繫線,因為訊息層次刪除並不表示會移除個別保存的衍生記錄。

方法 get (摘要)

依類型與識別碼擷取一筆儲存的記錄。

方法 get_async (非同步)

以非同步方式依類型與識別碼擷取一筆儲存的記錄。

方法 get_relation (摘要)

在儲存的來源至目標方向傳回一個關係。

僅提供 relation_id,或提供一個完整的來源至目標端點元組。

範例

store.get_relation(relation_id="relation-id")
RecordRelation(...)
store.get_relation(
    "source-id", "memory", "target-id", "fact", "supports"
)
RecordRelation(...)

方法 get_relation_async (非同步)

依 ID 或端點元組以非同步方式擷取一個關係。

僅提供 relation_id,或提供一個完整的來源至目標端點元組。

範例

await store.get_relation_async(relation_id="relation-id")
RecordRelation(...)

方法 list (摘要)

列出一個記錄類型的已儲存記錄。

方法 list_async (非同步)

非同步列出一個記錄類型的已儲存記錄。

方法 list_relations (摘要)

以其來源至目標方向列出已儲存的關係。

範例

store.list_relations(
    source_record_id="current-memory",
    relation_type="supports",
    metadata_filter={"source": "manual"},
)
[RecordRelation(...)]

方法 list_relations_async (非同步)

以非同步方式列出來源至目標方向的關係。

範例

await store.list_relations_async(
    source_record_id="current-memory", relation_type="supports"
)
[RecordRelation(...)]

方法 list_thread_messages (摘要)

列出一個執行緒中儲存的訊息歷史記錄。

方法 list_thread_messages_async (非同步)

非同步列出一個執行緒所儲存的訊息歷史記錄。

方法 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-docs2",
    metadata={"source": "slack"},
)
['mem-search-meta-source-docs2']
any(
    record.id == "mem-search-meta-source-docs2"
    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-docs2",
    metadata={"review": {"status": "open"}},
)
['mem-search-meta-review-docs2']
any(
    record.id == "mem-search-meta-review-docs2"
    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-docs2",
    metadata={"tags": ["prod", "urgent"]},
)
['mem-search-meta-tags-docs2']
any(
    record.id == "mem-search-meta-tags-docs2"
    for record, _ in store.search(
        "pizza",
        k=5,
        metadata_filter={"tags": ["prod", "urgent"]},
    )
)
True

描述資料陣列包含值時進行篩選:

any(
    record.id == "mem-search-meta-tags-docs2"
    for record, _ in store.search(
        "pizza",
        k=5,
        metadata_filter={"tags": {"$array_contains": "prod"}},
    )
)
True

結合多個描述資料條件。記錄必須滿足每個索引鍵:

store.add(
    ["pizza rollout"],
    record_type="memory",
    record_ids="mem-search-meta-combined-docs2",
    metadata={
        "source": "slack",
        "review": {"status": "open"},
        "tags": ["prod", "urgent"],
    },
)
['mem-search-meta-combined-docs2']
any(
    record.id == "mem-search-meta-combined-docs2"
    for record, _ in store.search(
        "pizza",
        k=5,
        metadata_filter={
            "source": "slack",
            "review": {"status": "open"},
            "tags": ["prod", "urgent"],
        },
    )
)
True

方法 search_async (非同步)

以非同步方式依語意相似度搜尋記錄。

方法 update (摘要)

更新儲存的記錄內容、嵌入資料、中繼資料、時間戳記或到期。

方法 update_async (非同步)

以非同步方式更新儲存的記錄內容、嵌入資料、中繼資料、時間戳記或到期。

方法 update_relations (摘要)

更新預存關係上的可變值。

省略的欄位會維持不變,但變更為內建記憶體關係類型會將其反向標籤取代為固定反向。資料庫備份的記憶體存放區也會在關係類型變更之後重新計算端點生命週期狀態。

範例

store.update_relations(
    "relation-id", relation_types="supports"
)
['relation-id']

方法 update_relations_async (非同步)

在儲存的關係上以非同步方式更新可變值。

省略的欄位會維持不變,但變更為內建記憶體關係類型會將其反向標籤取代為固定反向。資料庫備份的記憶體存放區也會在關係類型變更之後重新計算端點生命週期狀態。

範例

await store.update_relations_async(
    "relation-id", relation_types="supports"
)
['relation-id']

Oracle DB 商店

類別 oracleagentmemory.core.OracleDBMemoryStore

基本:OracleMemoryStore

訊息、文件、備忘錄以及動作者設定檔的資料庫備份保存。

建立 Oracle DB 存放區。

警告:SchemaPolicy.CREATE_IF_NECESSARY 可能比一般存放區啟動更為昂貴,因為在初始化成功之前,它可能會修復受管理的綱要物件。當綱要可能包含許多資料列時,將修復工作計畫為維護作業。舊版綱要上的存放區需要先升級套裝程式綱要,再進行初始化。

如果綱要設定必須建立受管理過期記錄永久清除工作,但資料庫使用者缺乏 Scheduler-job 權限,初始化會警告並繼續。已過期的訊息和記憶體會保持隱藏,無法讀取和搜尋,但要等到工作由具備 CREATE JOB 或同等排程器權限的使用者建立後,才會實際將它們整個清除。

SchemaPolicy.CREATE_IF_NECESSARY 先透過現有綱要建立受管理的混合索引時,Oracle 會掃描儲存的搜尋文字,並從設定的資料庫內模型建立受管理的混合索引狀態。儲存初始化等待該 DDL 完成,因此計畫第一個混合式升級作為大型綱要的移轉或維護作業。SearchIndexSyncMode 控制索引存在之後的進行中維護;它不會使第一個索引建立成為非同步。

建立該受管理的混合索引也會建立由受管理綱要命名的 DBMS_VECTOR_CHAIN 向量設定程式偏好設定。此偏好設定會儲存已設定 OracleDBEmbedder 模型的輕量型向量化程式組態中繼資料。可以使用 Oracle Text 偏好設定檢視 (例如 CTX_USER_PREFERENCES 和 CTX_USER_PREFERENCE_VALUES) 進行檢查。

方法 add

新增記錄至 Oracle DB 商店。

範例

store.add(
    ["Index this stored text"],
    record_type="memory",
    record_ids="mem-db-add-docs",
)
['mem-db-add-docs']
store.add(
    ["Stored text"],
    record_type="memory",
    index_texts=["Search this text"],
    record_ids="mem-db-index-text-docs",
)
['mem-db-index-text-docs']
store.add(
    ["Short-lived event"],
    record_type="memory",
    record_ids="mem-db-ttl-docs",
    timestamps="2026-01-01T12:00:00+00:00",
    ttl_days=7,
    ttl_anchor=TimeToLiveAnchor.TIMESTAMP,
)
['mem-db-ttl-docs']

方法 add_agent

新增專員資料檔記錄。

備註

專員資料檔記錄未作用領域。插入的公用記錄 ID 與傳送為 agent_id 的值相同。

範例

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

方法 add_agent_async (非同步)

非同步新增專員資料檔記錄。

方法 add_async (非同步)

以非同步方式將資料列導向的記錄新增至商店。

接受相同的引數,並傳回與 add() 相同的識別碼。

方法 add_batches

新增來電者準備的邏輯批次至商店。

範例

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

方法 add_batches_async (非同步)

以非同步方式將呼叫器準備的邏輯批次新增至存放區。

接受相同的引數,並傳回與 add_batches() 相同的識別碼。

方法 add_relations

以原子方式儲存一或多個記憶體對記憶體關係。

定量值會跨來源 ID 批次廣播;清單必須對齊。一個端點組只能儲存一個關係方向。內建記憶體連結標籤會收到固定的反向標籤,而生命週期標籤會更新相同交易中的端點狀態。

範例

store.add_relations(
    "new-memory", "memory", "old-memory", "memory", "supersedes"
)
['relation-id']

方法 add_relations_async (非同步)

非同步儲存一或多個導向關係。

定量值會跨來源記錄批次廣播。清單值的長度必須相同。一個端點組只能儲存一個方向。使用 opposite_relation_types 來描述反向檢視,而不是新增第二個反向關係。

範例

await store.add_relations_async(
    "new", "memory", "old", "memory", "supersedes"
)
['relation-id']

方法 add_user

新增使用者基本資料記錄。

備註

使用者資料檔記錄未作用領域。插入的公用記錄 ID 是明確或推斷的 user_id。

範例

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

方法 add_user_async (非同步)

非同步新增使用者資料檔記錄。

方法 delete

依 ID 刪除一個受管理資料列及其區塊資料列。

備註

此作業會在一個交易內執行。當支援的最上層目標啟用 cascade 時,會同時確認或倒回設定檔刪除和所有作用領域子項刪除。

範例

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

方法 delete_async (非同步)

以非同步方式依識別碼刪除一筆儲存的記錄。

方法 delete_relations

依 ID 刪除關係並重新計算生命週期狀態。

範例

store.delete_relations("relation-id")
1

方法 delete_relations_async (非同步)

依 ID 非同步刪除關係。

生命週期狀態會從剩餘的關係重新計算。

範例

await store.delete_relations_async("relation-id")
1

方法 delete_thread

刪除執行緒及其關聯的儲存資料列。

備註

當您需要執行緒作用領域的連鎖清除時,請使用此作業。在資料庫備份存放區中,刪除繫線會移除受管理繫線資料列以及相關聯的訊息和記憶體資料列,以及保留供擷取的搜尋資料。這比訊息階層刪除大,僅會移除原始訊息列。執行緒刪除會移除在相同交易中的相依訊息與記憶體資料列及其相關聯的擷取資料。

範例

store.delete_thread("c1")
0

方法 delete_thread_async (非同步)

非同步刪除執行緒及其相關聯的預存資料。

備註

這是儲存層次作業,用於移除商店所管理的執行緒與執行緒作用領域記錄。保留需求呼叫刪除來源訊息和衍生繫線作用領域記憶體資料時,偏好刪除繫線,因為訊息層次刪除並不表示會移除個別保存的衍生記錄。

方法 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'

方法 get_async (非同步)

以非同步方式依類型與識別碼擷取一筆儲存的記錄。

方法 get_relation

傳回 ID 識別的一個關係或完整的端點元組。

僅提供 relation_id,或提供一個完整的來源至目標端點元組。

範例

store.get_relation(relation_id="relation-id")
RecordRelation(...)
store.get_relation(
    "source-id", "memory", "target-id", "fact", "supports"
)
RecordRelation(...)

方法 get_relation_async (非同步)

依 ID 或端點元組以非同步方式擷取一個關係。

僅提供 relation_id,或提供一個完整的來源至目標端點元組。

範例

await store.get_relation_async(relation_id="relation-id")
RecordRelation(...)

方法 list

列舉記錄類型的持續記錄。

備註

"user_profile" 與 "agent_profile" 為非作用領域記錄類型。對於這些記錄類型,會忽略 thread_id、user_id 和 agent_id,動作者識別會保留在 record.id 中。"thread" 記錄會將繫線 ID 顯示為 record.id 和 record.thread_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

方法 list_async (非同步)

非同步列出一個記錄類型的已儲存記錄。

方法 list_relations

以其來源至目標方向列出關係。

範例

store.list_relations(
    source_record_id="current-memory",
    relation_type="supports",
    metadata_filter={"source": "manual"},
)
[RecordRelation(...)]

方法 list_relations_async (非同步)

以非同步方式列出來源至目標方向的關係。

範例

await store.list_relations_async(
    source_record_id="current-memory", relation_type="supports"
)
[RecordRelation(...)]

方法 list_thread_messages

傳回繫線的持續訊息。

範例

store.list_thread_messages("c1")
[]

方法 list_thread_messages_async (非同步)

非同步列出一個執行緒所儲存的訊息歷史記錄。

依相似性搜尋記錄。

作用中的搜尋後端取決於存放區設定的 SearchStrategy。SearchStrategy.VECTOR 會將查詢向量與儲存的記錄向量進行排名。SearchStrategy.HYBRID 會透過預存搜尋文字及其受管理索引狀態查詢 Oracle 的受管理混合索引。SearchStrategy.KEYWORD 只會以符合已儲存搜尋文字的文字來排名。

範例

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

描述資料陣列包含值時進行篩選:

any(
    record.id == "mem-search-meta-tags-docs"
    for record, _ in store.search(
        "pizza",
        k=3,
        metadata_filter={"tags": {"$array_contains": "prod"}},
    )
)
True

結合多個描述資料條件。記錄必須滿足每個索引鍵:

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

方法 search_async (非同步)

以非同步方式依語意相似度搜尋記錄。

方法 update

更新儲存的記錄內容、搜尋狀態、描述資料以及時戳值。

範例

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

方法 update_async (非同步)

以非同步方式更新儲存的記錄內容、嵌入資料、中繼資料、時間戳記或到期。

方法 update_relations

更新可變關係欄位並重新計算端點生命週期狀態。

省略的欄位則維持不變。內建記憶體連結標籤一律會保留其衍生的反向標籤。

範例

store.update_relations("relation-id", relation_types="supports")
['relation-id']

方法 update_relations_async (非同步)

在儲存的關係上以非同步方式更新可變值。

省略的欄位會維持不變,但變更為內建記憶體關係類型會將其反向標籤取代為固定反向。資料庫備份的記憶體存放區也會在關係類型變更之後重新計算端點生命週期狀態。

範例

await store.update_relations_async(
    "relation-id", relation_types="supports"
)
['relation-id']

關係

OracleDBMemoryStore 可以儲存類似記憶體的記錄 (memory、fact、guideline 和 preference) 之間的直接關係。當整合需要較低層次的關係 API 時,請使用 add_relations()、get_relation()、list_relations()、update_relations() 及 delete_relations()。用戶端與執行緒 API 為支援的記憶體關係類型提供 link_records()、update_record_link() 及 delete_record_link()。

若要擷取一個關係,請自行提供 relation_id 或完整儲存的端點元組:來源記錄 ID 和類型、目標記錄 ID 和類型,以及關係類型。部份元組和結合任何元組欄位的關係 ID 無效,因為兩者都無法明確地識別要求的關係。

使用 list_relations() 以建立順序列舉關係。依來源或目標記錄 ID 與類型篩選,或依直接關係標籤篩選。除非您通過 limit=None,否則它會使用商店的一般安全清單限制。其 metadata_filter 使用與 list() 相同的完全相符、巢狀物件、陣列成員身分及否定語意;傳送 metadata_filter=None 僅傳回沒有中繼資料的關係。

生命週期關係類型— supersedes、refines 及 duplicates —在連結存在時將其目標記憶體標示為無效。移除或變更最後一個此類連結會將目標回復為有效狀態。搜尋 API 可以排除含有 include_invalid_results=False 的無效記錄。

類別 oracleagentmemory.apis.relations.RecordRelation

基礎:object

描述兩筆記錄之間的已儲存直接關係。

搜尋策略

類別 oracleagentmemory.core.dbsearch.SearchStrategy

基本:Enum

Oracle DB 商店的搜尋行為。

資料庫存放區初始化使用選取的策略來選擇受管理綱要搜尋功能。VECTOR 搜尋會儲存本機內嵌項目。KEYWORD 搜尋會儲存可搜尋的文字和文字索引。HYBRID 搜尋會儲存可搜尋的文字加上 Oracle 管理的混合向量索引狀態。資料庫存放區會在啟動時驗證此綱要功能,因此不相容的策略不會無訊息地傳回不完整的結果。

VECTOR
僅依向量相似性搜尋。商店會內嵌具有已設定之內嵌器的查詢,或使用呼叫者提供的 query_vector,並依與已儲存向量的距離排列記錄的等級。搭配針對向量搜尋設定的資料庫綱要使用。
HYBRID
使用 Oracle 管理的混合索引進行搜尋。Oracle 將已儲存搜尋文字的文字比對與資料庫內混合索引的向量排名結合。當使用者可以依自然語言以及精確的識別碼、別名或產品名稱進行搜尋時,請使用此選項。此策略要求存放區的主要內嵌程式必須是 OracleDBEmbedder,因此受管理索引和儲存共用一個資料庫內模型。
KEYWORD
僅透過與預存搜尋文字相符的關鍵字 / 文字進行搜尋。此模式不會建立本機查詢內嵌,不需要 Oracle DB 內嵌程式。在針對現有混合綱要開啟時,它可以使用該混合索引的文字分支,而不需要建立新的混合索引。當精確的識別碼、別名、產品名稱或短詞應該在沒有向量融合的情況下驅動擷取時,請使用此選項。

HYBRID = 'HYBRID'

關鍵字 = 'KEYWORD'

VECTOR = 'VECTOR'

搜尋索引同步模式

類別 oracleagentmemory.core.dbsearch.SearchIndexSyncMode

基本:Enum

受管理資料庫搜尋索引的重新整理行為。

此設定控制 Oracle 何時對資料庫備份文字感知搜尋顯示新的或變更的搜尋文字。SearchStrategy.HYBRID 使用 Oracle 管理的混合向量索引。SearchStrategy.KEYWORD 使用 Oracle Text 索引。SearchStrategy.VECTOR 不使用此設定。

ON_COMMIT
當寫入交易確認時重新整理索引。這是大多數應用程式的預設和最簡單選項,因為記錄在成功寫入後可立即搜尋。它可以新增寫入交易的工作,因為索引會立即保持在最新狀態。
MANUAL
不要自動重新整理索引。在您自行執行資料庫端索引同步作業之前,新的或更新的記錄可能不會出現在關鍵字或混合搜尋中。這對於您要在其中控制重新整理工作執行時的大量載入或維護時段非常有用。
AUTO
讓 Oracle 以非同步方式重新整理受管理的混合索引。寫入可以避免立即重新整理成本,但搜尋結果可能會落後最近的寫入,直到 Oracle 完成背景重新整理為止。只有 SearchStrategy.HYBRID 才支援此模式。

警告:此設定控制受管理搜尋索引存在之後的進行中維護。它不會使第一個索引建置成為非同步。透過現有預存搜尋文字建立受管理的混合索引可能會長時間執行,因為 Oracle 會從該文字建立受管理的混合索引狀態。

自動 = 'AUTO'

手動 = 'MANUAL'

ON_COMMIT = 'ON_COMMIT'

存留時間

類別 oracleagentmemory.core.retention.MemoryRetentionConfig

基礎:object

Oracle DB 備份記錄的綱要層次保留設定值。

類別 oracleagentmemory.apis.ttl.TimeToLiveAnchor

基本:Enum

用來從存留期間計算到期時間戳記的錨點。

CREATED_AT
從記錄的資料庫建立時戳計算到期時間。這是呼叫者省略 ttl_anchor 時的預設值。
TIMESTAMP
從記錄的預存事件時戳計算到期時間。當訊息或記憶體代表較舊的事件,且應該相對於該事件時間而非插入時間到期時,使用此選項。

CREATED_AT = 'CREATED_AT'

TIMESTAMP = 'TIMESTAMP'

綱要原則

類別 oracleagentmemory.core.SchemaPolicy

基礎:str、Enum

Oracle DB 存放區的綱要建立原則。

需求 _ 現有

驗證完整受管理綱要已經存在且為最新狀態。請勿建立或修改資料庫物件。

空白建立 (_I)

如果沒有受管理物件,啟動安裝綱要。如果物件已經存在,則需要完整且最新的受管理綱要。

需要建立 (_I)

建立遺漏的受管理物件並套用支援的受管理綱要升級。

重新建立

刪除並重新建立所有受管理綱要物件。這是破壞性的。

不勾選 (_R)

略過受管理綱要驗證並建立。作用中的一般使用者安全相關資訊環境時,對現有的深層資料安全保護存放區使用此原則。在一般使用者相關資訊環境下開啟的存放區需要每個後續資料庫作業的作用中相關資訊環境。其他綱要原則會拒絕一般使用者相關資訊環境,因為綱要週期工作必須透過管理資料庫識別執行。