Speicher und Schema

Auf dieser Seite werden die Core-Speicherabstraktionen und Schemakontrollen angezeigt, die vom Oracle Agent-Speicher-SDK verwendet werden.

Shop-API

Schreibsemantik speichern

Beim Speichern von Schreibvorgängen wird eine klare Trennung zwischen dem Text, den eine Anwendung speichert, und der Payload, die der Speicher zum Abrufen verwendet, beibehalten. Die meisten Anwendungen können die APIs auf Speicherebene und Thread-Ebene verwenden und den Speicher die benötigten Suchzeilen für den Vektor-, Schlüsselwort- oder Hybridabruf vorbereiten lassen. Die Speicher-APIs der unteren Ebene stellen index_texts, index_text, embeddings und embedding für erweiterte Integrationen bereit, die bereits wissen, welcher Text oder welche Vektoren zum Abrufen verwendet werden sollen.

Denken Sie an jedes Schreiben als zwei verwandte Stücke:

Wenn keine Suchüberschreibung oder explizite Einbettung angegeben wird, verwendet der Speicher den aufgelösten gespeicherten Text als Abruftext. Bei der Konfiguration von Chunking wird nicht leerer Text vom Speicher als Chunking-Block verarbeitet. Leerer Text speichert den Datensatztext, liefert jedoch keinen Abruftext.

In der folgenden Tabelle wird beschrieben, wie Abruftext ausgewählt wird, bevor explizite Vektor-Payloads berücksichtigt werden.

Abruf-Payloads auf Filialebene

Eingabe add() update()
index_texts oder index_text ausgelassen Jeder Datensatz verwendet den aufgelösten contents-Wert für den Abruf. Für den Abruf wird ein Ersatzwert text verwendet. Wenn auch text ausgelassen wird, verwenden Nur-Einbetten-Aktualisierungen die vorhandenen Abruftextzeilen des Datensatzes wieder.
Zeichenfolge index_texts-Eintrag oder Zeichenfolge index_text Die Zeichenfolge ersetzt den Abruftext für diesen Datensatz. Der Speicher kann einen Chunk-Vorgang ausführen, bevor Abrufzeilen geschrieben werden. Die Zeichenfolge ersetzt den Abruftext für diesen Datensatz. Der Speicher kann einen Chunk-Vorgang ausführen, bevor Abrufzeilen geschrieben werden.
list[str] index_texts-Eintrag oder list[str] index_text Die Liste wird als Chunks im Besitz des Anrufers behandelt. Jede nicht leere Zeichenfolge wird als eine Abrufzeile geschrieben, und der Speicher blockiert sie nicht erneut. Die Liste wird als Chunks im Besitz des Anrufers behandelt. Jede nicht leere Zeichenfolge wird als eine Abrufzeile geschrieben, und der Speicher blockiert sie nicht erneut.
None index_texts-Eintrag oder index_text=None None in der äußeren Liste index_texts bedeutet "den gespeicherten Inhalt für diesen Datensatz verwenden". index_text=None löscht die Abrufzeilen, während der gespeicherte Text unverändert bleibt, es sei denn, text wird ebenfalls angegeben.
Leere Zeichenfolge oder leere Chunk-Liste Speichert den Datensatztext und stellt keinen Abruftext für diesen Datensatz bereit. Aktualisiert den Datensatztext, wenn text angegeben wird, und löscht den Abruftext für diesen Datensatz.

Explizite Einbettungen sind optional. Wenn sie ausgelassen werden, leitet der Speicher lokale Vektoren aus dem Abruftext ab, wenn der lokale Vektorspeicher konfiguriert ist. Schlüsselwort- oder Hybridspeicher können auch Nur-Text-Abrufzeilen verwenden. Wenn explizite embeddings- oder embedding-Werte angegeben werden, schreibt der Speicher diese Vektoren direkt und ruft den Embedder für diese Vektoren nicht auf.

In add() verhält sich embeddings=None wie das Weglassen von embeddings. In update() ist embedding=None explizit: Der Speicher speichert oder schreibt den Abruftext gemäß text und index_text neu, speichert diese Zeilen jedoch ohne lokale Vektoren. Wenn text und index_text beide ausgelassen werden, werden Vektoren aus den vorhandenen Abrufzeilen gelöscht.

Die Vektorform gibt dem Speicher an, wie viel Chunk-Eigentum der Anrufer nimmt:

Einige Kombinationen werden abgelehnt, sodass gespeicherter Text, Abruftext und Vektoren nicht auseinanderdriften. Durch die Übergabe von text=None werden gespeicherte Text- und Abrufzeilen gelöscht, sodass sie nicht mit Werten kombiniert werden können, die nicht Null sind: index_text oder embedding; Akteurprofildatensätze unterstützen text=None nicht. Die Übergabe von index_text=None in update() bedeutet "Abrufzeilen löschen", sodass nicht leere explizite Einbettungen im selben Aufruf nicht zulässig sind. Mehrere explizite Vektoren erfordern expliziten Chunk-Text, es sei denn, die Aktualisierung wird nur eingebettet, und die vorhandenen Abrufzeilen stellen bereits den Chunk-Text bereit.

Klasse oracleagentmemory.core.OracleMemoryStore

Basen: IMemoryStore

Gemeinsame Speicherschnittstelle, die von OracleAgentMemory verwendet wird.

Eine Store-Implementierung ist dafür verantwortlich, Text-Records zu persistieren und Ähnlichkeitssuchen durchzuführen. Sowohl synchrone als auch asynchrone Einstiegspunkte werden definiert, sodass APIs auf höherer Ebene übereinstimmende Synchronisierungs-/asynchrone Oberflächen bereitstellen können, ohne dass eine speicherspezifische Logik dupliziert wird.

Methode add

Datensätze zur Filiale hinzufügen

Hinweise

Verwenden Sie add_batches(), wenn der Aufrufer bereits mindestens ein PendingRecordBatch-Objekt enthält.

Methode add_agent (Übung)

Agent-Profildatensatz hinzufügen.

Methode add_async (asynchron)

Fügen Sie dem Speicher asynchron zeilenorientierte Datensätze hinzu.

Akzeptiert dieselben Argumente und gibt dieselben IDs wie add() zurück.

Methode add_batches

Fügen Sie dem Speicher vom Aufrufer vorbereitete logische Batches hinzu.

Beispiele

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

Methode add_batches_async (asynchron)

Fügen Sie dem Speicher asynchron vom Aufrufer vorbereitete logische Batches hinzu.

Akzeptiert dieselben Argumente und gibt dieselben IDs wie add_batches() zurück.

Methode add_user (Übung)

Benutzerprofildatensatz hinzufügen

Methode delete (Übung)

Löschen Sie einen gespeicherten Datensatz nach ID.

Methode delete_thread (Übung)

Thread und die zugehörigen gespeicherten Daten löschen

Hinweise

Dies ist der Vorgang auf Speicherebene zum Entfernen eines Threads und der vom Speicher verwalteten Datensätze mit Threadbereich. Threadlöschung bevorzugen, wenn Aufbewahrungsanforderungen das Löschen von Quellnachrichten und abgeleiteten Speicherdaten mit Threadbereich erfordern, da Löschvorgänge auf Nachrichtenebene nicht bedeuten, dass separat persistente abgeleitete Datensätze entfernt werden.

Methode get (Übung)

Rufen Sie einen gespeicherten Datensatz nach Typ und ID ab.

Methode list (Übung)

Listet gespeicherte Datensätze für einen Datensatztyp auf.

Methode list_thread_messages (Übung)

Listen Sie die Nachrichtenhistorie auf, die für einen Thread gespeichert ist.

Methode search (Übung)

Datensätze nach Ähnlichkeit suchen

Beispiele

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'

Nach einem skalaren Metadatenwert filtern:

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

Nach verschachtelten Metadaten filtern:

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

Ordnen Sie einen Listenwert genau zu, einschließlich Reihenfolge:

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

Filtern, wenn ein Metadaten-Array einen Wert enthält:

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

Mehrere Metadatenbedingungen kombinieren Ein Datensatz muss jeden Schlüssel erfüllen:

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

Methode search_async (asynchron)

Suchen Sie Datensätze asynchron nach semantischer Ähnlichkeit.

Methode update (Übung)

Aktualisieren Sie gespeicherten Datensatzinhalt, betten Sie Daten, Metadaten, Zeitstempel oder Ablauf ein.

Oracle DB-Speicher

Klasse oracleagentmemory.core.OracleDBMemoryStore

Basis: OracleMemoryStore

Datenbankgestützte Persistenz für Nachrichten, Speicher und Akteurprofile.

Oracle DB-Speicher erstellen

Warnung: SchemaPolicy.CREATE_IF_NECESSARY kann teurer sein als der normale Speicherstart, da verwaltete Schema-DDL und Best-Effort-Datenrewrites angewendet werden können, bevor die Initialisierung erfolgreich verläuft. Planen Sie das erste Öffnen eines älteren verwalteten Schemas als Migrations- oder Wartungsvorgang, wenn dieses Schema viele Zeilen enthalten kann.

Wenn das Schemasetup den Löschjob für verwaltete abgelaufene Datensätze erstellen muss, dem Datenbankbenutzer jedoch die Berechtigung für den Scheduler-Job fehlt, warnt die Initialisierung und wird fortgesetzt. Abgelaufene Nachrichten und Speicher bleiben vor Lese- und Suchvorgängen verborgen, werden jedoch erst physisch gelöscht, wenn der Job von einem Benutzer mit CREATE JOB oder einer entsprechenden Scheduler-Berechtigung erstellt wurde.

Wenn SchemaPolicy.CREATE_IF_NECESSARY zum ersten Mal einen verwalteten Hybridindex über ein vorhandenes Schema erstellt, scannt Oracle den gespeicherten Suchtext und erstellt den verwalteten Hybridindexstatus aus dem konfigurierten datenbankinternen Modell. Die Speicherinitialisierung wartet, bis diese DDL abgeschlossen ist. Planen Sie daher das erste Hybridupgrade als Migrations- oder Wartungsvorgang für große Schemas. SearchIndexSyncMode steuert die laufende Wartung, nachdem der Index vorhanden ist. Die erste Indexerstellung wird nicht asynchron.

Wenn Sie diesen verwalteten Hybridindex erstellen, wird auch eine DBMS_VECTOR_CHAIN-Vektorisatorvoreinstellung erstellt, die vom verwalteten Schema benannt wird. Die Voreinstellung speichert Lightweight Vectorizer-Konfigurationsmetadaten aus dem konfigurierten OracleDBEmbedder-Modell. Er kann mit Oracle Text-Voreinstellungsansichten wie CTX_USER_PREFERENCES und CTX_USER_PREFERENCE_VALUES geprüft werden.

Methode add

Fügen Sie dem Oracle DB-Speicher Datensätze hinzu.

Beispiele

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']

Methode add_agent

Agent-Profildatensatz hinzufügen.

Hinweise

Agent-Profildatensätze werden nicht kopiert. Die eingefügte öffentliche Datensatz-ID ist derselbe Wert, der als agent_id übergeben wird.

Beispiele

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

Methode add_async (asynchron)

Fügen Sie dem Speicher asynchron zeilenorientierte Datensätze hinzu.

Akzeptiert dieselben Argumente und gibt dieselben IDs wie add() zurück.

Methode add_batches

Fügen Sie dem Speicher vom Aufrufer vorbereitete logische Batches hinzu.

Beispiele

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

Methode add_batches_async (asynchron)

Fügen Sie dem Speicher asynchron vom Aufrufer vorbereitete logische Batches hinzu.

Akzeptiert dieselben Argumente und gibt dieselben IDs wie add_batches() zurück.

Methode add_user

Benutzerprofildatensatz hinzufügen

Hinweise

Benutzerprofildatensätze werden nicht kopiert. Die eingefügte öffentliche Datensatz-ID ist derselbe Wert, der als user_id übergeben wird.

Beispiele

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

Methode delete

Löschen Sie einen verwalteten Datensatz und die zugehörigen Blockzeilen nach ID.

Hinweise

Der Vorgang wird innerhalb einer Transaktion ausgeführt. Wenn cascade für ein unterstütztes Ziel der obersten Ebene aktiviert ist, werden das Löschen des Profils und alle untergeordneten Löschvorgänge mit Geltungsbereich festgeschrieben oder zusammen zurückgesetzt.

Beispiele

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

Methode delete_thread

Thread und die zugehörigen gespeicherten Zeilen löschen

Hinweise

Verwenden Sie diesen Vorgang, wenn Sie eine Thread-bezogene kaskadierende Bereinigung benötigen. Wenn Sie den Thread im DB-Backed-Speicher löschen, wird die Zeile mit dem verwalteten Thread zusammen mit den zugehörigen Nachrichten- und Speicherzeilen sowie den für den Abruf verwalteten Suchdaten entfernt. Dies ist breiter als ein Löschvorgang auf Nachrichtenebene, bei dem nur die Zeile mit Raw-Nachrichten entfernt wird. Beim Löschen von Threads werden abhängige Nachrichten- und Speicherzeilen zusammen mit den zugehörigen Abrufdaten in derselben Transaktion entfernt.

Beispiele

store.delete_thread("c1")
0

Method get

Gespeicherten Datensatz nach Kennung abrufen

Beispiele

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'

Methode list

Permanente Datensätze für einen Datensatztyp auflisten.

Hinweise

"user_profile" und "agent_profile" sind nicht kopierte Datensatztypen. Für diese Datensatztypen werden thread_id, user_id und agent_id ignoriert, und die Akteuridentität bleibt in record.id.

Beispiele

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

Methode list_thread_messages

Permanente Nachrichten für einen Thread zurückgeben.

Beispiele

store.list_thread_messages("c1")
[]

Datensätze nach Ähnlichkeit suchen

Das aktive Such-Backend hängt vom konfigurierten SearchStrategy des Speichers ab. SearchStrategy.VECTOR ordnet den Abfragevektor den gespeicherten Datensatzvektoren zu. SearchStrategy.HYBRID fragt den verwalteten Hybridindex von Oracle über den gespeicherten Suchtext und den Status des verwalteten Index ab. SearchStrategy.KEYWORD wird nur nach übereinstimmendem Text über dem gespeicherten Suchtext sortiert.

Beispiele

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'

Nach einem skalaren Metadatenwert filtern:

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

Nach verschachtelten Metadaten filtern:

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

Ordnen Sie einen Listenwert genau zu, einschließlich Reihenfolge:

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

Filtern, wenn ein Metadaten-Array einen Wert enthält:

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

Mehrere Metadatenbedingungen kombinieren Ein Datensatz muss jeden Schlüssel erfüllen:

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

Methode search_async (asynchron)

Suchen Sie Datensätze asynchron nach semantischer Ähnlichkeit.

Methode update

Aktualisieren Sie gespeicherten Datensatzinhalt, Suchstatus, Metadaten und Zeitstempelwerte.

Beispiele

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'

Suchstrategie

Klasse oracleagentmemory.core.dbsearch.SearchStrategy

Basen: Enum

Suchverhalten für Oracle DB-Speicher.

Bei der Initialisierung des DB-Speichers wird die ausgewählte Strategie verwendet, um die Suchfunktion für das verwaltete Schema auszuwählen. Die VECTOR-Suche speichert lokale Einbettungen. Bei der KEYWORD-Suche werden durchsuchbarer Text und ein Textindex gespeichert. In der HYBRID-Suche werden durchsuchbarer Text und von Oracle verwalteter Hybridvektorindexstatus gespeichert. Der DB-Speicher validiert diese Schemafunktion beim Start, sodass eine inkompatible Strategie keine unvollständigen Ergebnisse zurückgibt.

VECTOR
Nur nach Vektorähnlichkeit suchen. Der Speicher bettet die Abfrage mit der konfigurierten Einbettung ein oder verwendet eine vom Aufrufer bereitgestellte query_vector und ordnet Datensätze nach Entfernung zu den gespeicherten Vektoren ein. Verwenden Sie dies mit einem DB-Schema, das für die Vektorsuche konfiguriert ist.
HYBRID
Mit dem verwalteten Hybridindex von Oracle suchen. Oracle kombiniert Textabgleich über gespeicherten Suchtext mit Vektorrangfolge aus dem datenbankinternen Hybridindex. Verwenden Sie diese Option, wenn Benutzer nach natürlicher Sprache sowie nach genauen Kennungen, Aliasnamen oder Produktnamen suchen können. Für diese Strategie muss der Haupteinbettungsordner des Speichers ein OracleDBEmbedder sein, sodass der verwaltete Index und der verwaltete Speicher ein datenbankinternes Modell gemeinsam verwenden.
KEYWORD
Nur nach Stichwort/Text suchen, der über gespeicherten Suchtext übereinstimmt. In diesem Modus werden keine lokalen Abfrageeinbettungen erstellt, und es ist kein Oracle DB-Einbettung erforderlich. Wenn es für ein vorhandenes Hybridschema geöffnet wird, kann es die Textverzweigung dieses Hybridindex verwenden, ohne einen neuen Hybridindex zu erstellen. Verwenden Sie diese Option, wenn exakte Kennungen, Aliasnamen, Produktnamen oder kurze Phrasen den Abruf ohne Vektorfusion steuern sollen.

HYBRID = "HYBRID"

Schlüsselwort = "Schlüsselwort"

VECTOR = 'VECTOR'

Suchindex-Synchronisierungsmodus

Klasse oracleagentmemory.core.dbsearch.SearchIndexSyncMode

Basen: Enum

Aktualisierungsverhalten für verwaltete DB-Suchindizes.

Diese Einstellung steuert, wann Oracle neuen oder geänderten Suchtext für die DB-gestützte textbezogene Suche sichtbar macht. SearchStrategy.HYBRID verwendet den verwalteten Hybridvektorindex von Oracle. SearchStrategy.KEYWORD verwendet einen Oracle Text-Index. SearchStrategy.VECTOR verwendet diese Einstellung nicht.

ON_COMMIT
Aktualisieren Sie den Index, wenn die Schreibtransaktion festgeschrieben wird. Dies ist die Standardeinstellung und die einfachste Wahl für die meisten Anwendungen, da Datensätze unmittelbar nach einem erfolgreichen Schreibvorgang durchsucht werden können. Es kann Arbeit hinzufügen, um Transaktionen zu schreiben, da der Index sofort auf dem neuesten Stand gehalten wird.
MANUAL
Index nicht automatisch aktualisieren. Neue oder aktualisierte Datensätze werden möglicherweise erst dann in der Stichwort- oder Hybridsuche angezeigt, wenn Sie den datenbankseitigen Indexsynchronisierungsvorgang selbst ausführen. Dies ist nützlich für Bulk Loads oder Wartungsfenster, in denen Sie steuern möchten, wann Aktualisierungsarbeitsläufe ausgeführt werden.
AUTO
Lassen Sie Oracle den verwalteten Hybridindex asynchron aktualisieren. Schreibvorgänge können die unmittelbaren Aktualisierungskosten vermeiden. Die Suchergebnisse können jedoch hinter den letzten Schreibvorgängen zurückbleiben, bis Oracle die Hintergrundaktualisierung abgeschlossen hat. Dieser Modus wird nur mit SearchStrategy.HYBRID unterstützt.

Warnung: Diese Einstellung steuert die fortlaufende Wartung, nachdem der verwaltete Suchindex vorhanden ist. Die erste Indexerstellung wird nicht asynchron erstellt. Das Erstellen eines verwalteten Hybridindexes über vorhandenen gespeicherten Suchtext kann eine lange Ausführungszeit haben, da Oracle den verwalteten Hybridindexstatus aus diesem Text erstellt.

AUTO = 'AUTO'

MANUELL = 'manuell'

ON_COMMIT = 'ON_COMMIT'

Gültigkeitsdauer

Klasse oracleagentmemory.core.retention.MemoryRetentionConfig

Basis: object

Aufbewahrungseinstellungen auf Schemaebene für von Oracle DB unterstützte Datensätze.

Klasse oracleagentmemory.apis.ttl.TimeToLiveAnchor

Basen: Enum

Anker zur Berechnung eines Ablaufzeitstempels von einer Gültigkeitsdauer.

CREATED_AT
Compute-Ablauf vom Zeitstempel der Datenbankerstellung des Datensatzes. Dies ist der Standardwert, wenn Aufrufer ttl_anchor auslassen.
TIMESTAMP
Berechnung des Ablaufs aus dem gespeicherten Ereigniszeitstempel des Datensatzes. Verwenden Sie diese Option, wenn eine Nachricht oder ein Speicher ein älteres Ereignis darstellt und relativ zu dieser Ereigniszeit anstatt der Einfügezeit ablaufen soll.

CREATED_AT = 'CREATED_AT'

Zeitstempel = 'Zeitstempel'

Schema-Policy

Klasse oracleagentmemory.core.SchemaPolicy

Basis: str, Enum

Schemaerstellungs-Policy für Oracle DB-Speicher.

ERFORDERLICH

Stellen Sie sicher, dass das vollständige verwaltete Schema bereits vorhanden ist und aktuell ist. Erstellen oder ändern Sie keine DB-Objekte.

CREATE_IF_LEER

Wenn keine verwalteten Objekte vorhanden sind, Bootstrap-Schema. Wenn bereits Objekte vorhanden sind, benötigen Sie ein vollständiges und aktuelles verwaltetes Schema.

ERSTELLEN_IF_NOTWENDIG

Erstellen Sie fehlende verwaltete Objekte, und wenden Sie unterstützte Upgrades verwalteter Schemas an.

NEU ERSTELLEN

Alle verwalteten Schemaobjekte löschen und neu erstellen. Das ist destruktiv.