상점 및 스키마

이 페이지에서는 Oracle Agent 메모리 SDK에서 사용되는 코어 저장소 추상화 및 스키마 콘트롤을 제공합니다.

API 저장

스토어 쓰기 의미

저장소 쓰기는 애플리케이션이 저장하는 텍스트와 저장소가 검색에 사용하는 페이로드 간에 명확한 구분을 유지합니다. 대부분의 애플리케이션은 메모리 레벨 및 스레드 레벨 API를 사용할 수 있으며 저장소가 벡터, 키워드 또는 하이브리드 검색에 필요한 검색 행을 준비하도록 합니다. 하위 레벨 저장소 API는 검색에 사용해야 하는 텍스트 또는 벡터를 이미 알고 있는 고급 통합을 위해 index_texts, index_text, embeddingsembedding를 노출합니다.

각 글은 두 가지 관련 조각으로 생각하십시오 :

검색 재정의 또는 명시적 임베딩이 제공되지 않은 경우 저장소는 분석된 저장 텍스트를 검색 텍스트로 사용합니다. 조각화가 구성될 때 저장소에서 비어 있지 않은 텍스트를 조각화합니다. 빈 텍스트는 레코드 텍스트를 저장하지만 검색 텍스트는 제공하지 않습니다.

아래 표에서는 명시적 벡터 페이로드를 고려하기 전에 검색 텍스트가 선택되는 방법에 대해 설명합니다.

점포 레벨 검색 페이로드

입력 add() update()
index_texts 또는 index_text 생략 각 레코드는 검색에 분석된 contents 값을 사용합니다. 대체 text 값은 검색에 사용됩니다. text도 생략할 경우 포함 전용 업데이트는 레코드의 기존 검색 텍스트 행을 재사용합니다.
문자열 index_texts 항목 또는 문자열 index_text 문자열이 해당 레코드의 검색 텍스트를 대체합니다. 저장소는 검색 행을 쓰기 전에 청크할 수 있습니다. 문자열이 해당 레코드의 검색 텍스트를 대체합니다. 저장소는 검색 행을 쓰기 전에 청크할 수 있습니다.
list[str] index_texts 항목 또는 list[str] index_text 이 목록은 호출자 소유 청크로 처리됩니다. 비어 있지 않은 각 문자열은 하나의 검색 행으로 기록되며 저장소는 다시 조각화하지 않습니다. 이 목록은 호출자 소유 청크로 처리됩니다. 비어 있지 않은 각 문자열은 하나의 검색 행으로 기록되며 저장소는 다시 조각화하지 않습니다.
None index_texts 항목 또는 index_text=None 외부 index_texts 목록의 None은 "이 레코드에 저장된 콘텐츠 사용"을 의미합니다. index_text=Nonetext도 제공되지 않는 한 저장된 텍스트를 변경하지 않고 그대로 두는 동안 검색 행을 지웁니다.
빈 문자열 또는 빈 조각 목록 레코드 텍스트를 저장하고 해당 레코드에 대한 검색 텍스트를 제공하지 않습니다. text가 제공될 때 레코드 텍스트를 업데이트하고 해당 레코드에 대한 검색 텍스트를 지웁니다.

명시적 임베딩은 선택 사항입니다. 생략하면 로컬 벡터 스토리지가 구성될 때 검색 텍스트에서 로컬 벡터가 파생됩니다. 키워드 또는 하이브리드 스토어는 텍스트 전용 검색 행도 사용할 수 있습니다. 명시적 embeddings 또는 embedding 값이 제공된 경우 저장소는 해당 벡터를 직접 기록하고 해당 벡터에 대한 임베더를 호출하지 않습니다.

add()에서 embeddings=Noneembeddings를 생략하는 것처럼 동작합니다. update()에서 embedding=None는 명시적입니다. 저장소는 textindex_text에 따라 검색 텍스트를 유지하거나 재작성하지만 로컬 벡터 없이 해당 행을 저장합니다. textindex_text가 모두 생략된 경우 기존 검색 행에서 벡터가 지워집니다.

벡터 모양은 호출자가 차지하는 조각 소유권의 양을 저장소에 알려줍니다.

일부 조합이 거부되어 저장된 텍스트, 검색 텍스트 및 벡터가 분리되지 않습니다. text=None를 전달하면 저장된 텍스트 및 검색 행이 지워지므로 널이 아닌 index_text 또는 embedding 값과 결합할 수 없습니다. 작업자 프로파일 레코드는 text=None을 지원하지 않습니다. update()에서 index_text=None를 전달하면 "검색 행 지우기"가 의미되므로 비어 있지 않은 명시적 임베딩은 동일한 호출에서 허용되지 않습니다. 업데이트가 포함 전용이고 기존 검색 행이 이미 조각 텍스트를 제공하지 않는 한 여러 명시적 벡터에 명시적 조각 텍스트가 필요합니다.

클래스 oracleagentmemory.core.OracleMemoryStore

기준: IMemoryStore

OracleAgentMemory에서 사용되는 공통 저장소 인터페이스입니다.

저장소 구현은 텍스트 레코드를 지속하고 이에 대한 유사성 검색을 수행합니다. 동기 및 비동기 엔트리 포인트가 모두 정의되므로 상위 레벨의 API가 매장별 논리를 복제하지 않고도 일치하는 동기화/비동기 서피스를 노출할 수 있습니다.

방법 add

점포에 레코드를 추가합니다.

호출자에 이미 하나 이상의 PendingRecordBatch 객체가 있는 경우 add_batches()를 사용합니다.

method add_agent(개요)

에이전트 프로파일 레코드를 추가합니다.

method add_async(비동기)

점포에 행 지향 레코드를 비동기적으로 추가합니다.

동일한 인수를 사용하고 add()와 동일한 식별자를 반환합니다.

방법 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

메타데이터 배열에 값이 포함된 경우 필터링:

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

method search_async(비동기)

의미 유사성을 기준으로 비동기적으로 레코드를 검색합니다.

method update(개요)

저장된 레코드 콘텐츠를 업데이트하고 데이터, 메타데이터, 타임스탬프 또는 만료를 포함합니다.

Oracle DB 저장소

클래스 oracleagentmemory.core.OracleDBMemoryStore

기준: OracleMemoryStore

메시지, 메모리 및 작업자 프로파일에 대한 데이터베이스 지원 지속성

Oracle DB 저장소를 생성합니다.

경고: SchemaPolicy.CREATE_IF_NECESSARY는 초기화가 성공하기 전에 관리 스키마 DDL 및 최선 조건 데이터 재작성을 적용할 수 있으므로 일반 저장소 시작보다 비용이 많이 들 수 있습니다. 스키마에 많은 행이 포함될 수 있는 경우 이전 관리 스키마의 첫번째 열기를 이전 또는 유지 관리 작업으로 계획합니다.

스키마 설정에서 만료된 관리 레코드 비우기 작업을 생성해야 하지만 데이터베이스 사용자에게 스케줄러 작업 권한이 없는 경우 초기화가 경고되고 계속됩니다. 만료된 메시지 및 메모리는 읽기 및 검색에서 숨겨지지만 CREATE JOB 또는 이와 동등한 스케줄러 권한을 가진 사용자가 작업을 생성할 때까지는 물리적으로 비워지지 않습니다.

SchemaPolicy.CREATE_IF_NECESSARY가 기존 스키마를 통해 관리형 하이브리드 인덱스를 처음 생성하는 경우 Oracle은 저장된 검색 텍스트를 스캔하고 구성된 데이터베이스 내 모델에서 관리형 하이브리드 인덱스 상태를 구축합니다. 저장소 초기화는 해당 DDL이 완료될 때까지 기다리므로 대규모 스키마에 대한 마이그레이션 또는 유지 관리 작업으로 첫번째 하이브리드 업그레이드를 계획하십시오. SearchIndexSyncMode는 인덱스가 존재하는 후의 지속적인 유지 관리를 제어하며 첫번째 인덱스가 비동기적으로 생성되지 않습니다.

관리되는 하이브리드 인덱스를 생성하면 관리 스키마에 의해 이름이 지정된 DBMS_VECTOR_CHAIN 벡터화기 환경설정도 생성됩니다. 기본 설정은 구성된 OracleDBEmbedder 모델의 경량 벡터화기 구성 메타데이터를 저장합니다. CTX_USER_PREFERENCESCTX_USER_PREFERENCE_VALUES와 같은 Oracle Text 기본 설정 뷰를 사용하여 검사할 수 있습니다.

방법 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

에이전트 프로파일 레코드를 추가합니다.

에이전트 프로파일 레코드의 범위가 지정되지 않았습니다. 삽입된 공용 레코드 식별자는 agent_id로 전달된 값과 동일합니다.

예제

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

method add_async(비동기)

점포에 행 지향 레코드를 비동기적으로 추가합니다.

동일한 인수를 사용하고 add()와 동일한 식별자를 반환합니다.

방법 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()와 동일한 식별자를 반환합니다.

방법 add_user

사용자 프로파일 레코드를 추가합니다.

사용자 프로파일 레코드의 범위가 지정되지 않았습니다. 삽입된 공용 레코드 식별자는 user_id로 전달된 값과 동일합니다.

예제

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

방법 delete

식별자별로 하나의 관리 행과 해당 조각 행을 삭제합니다.

이 작업은 하나의 트랜잭션 내에서 실행됩니다. 지원되는 최상위 레벨 대상에 대해 cascade가 사용으로 설정된 경우 프로파일 삭제 및 모든 범위가 지정된 하위 삭제가 커밋되거나 함께 롤백됩니다.

예제

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

방법 delete_thread

스레드 및 연관된 내장 행을 삭제합니다.

스레드 범위의 계단식 정리가 필요한 경우 이 작업을 사용합니다. DB 지원 저장소에서 스레드를 삭제하면 연관된 메시지 및 메모리 행과 함께 관리되는 스레드 행과 검색을 위해 유지 관리되는 검색 데이터가 제거됩니다. 이는 원시 메시지 행만 제거하는 메시지 레벨 삭제보다 광범위합니다. 스레드 삭제는 동일한 트랜잭션의 연관된 검색 데이터와 함께 종속 메시지 및 메모리 행을 제거합니다.

예제

store.delete_thread("c1")
0

메소드 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'

방법 list

레코드 유형에 대한 지속 레코드를 열거합니다.

"user_profile""agent_profile"는 범위가 지정되지 않은 레코드 유형입니다. 해당 레코드 유형의 경우 thread_id, user_idagent_id가 무시되고 작업자 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

방법 list_thread_messages

스레드에 대한 지속 메시지를 반환합니다.

예제

store.list_thread_messages("c1")
[]

유사성으로 레코드를 검색합니다.

활성 검색 백엔드는 저장소의 구성된 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

method search_async(비동기)

의미 유사성을 기준으로 비동기적으로 레코드를 검색합니다.

방법 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'

검색 전략

클래스 oracleagentmemory.core.dbsearch.SearchStrategy

기준: Enum

Oracle DB 저장소에 대한 검색 동작입니다.

DB 저장소 초기화는 선택한 전략을 사용하여 관리 스키마 검색 기능을 선택합니다. VECTOR 검색은 로컬 임베딩을 저장합니다. KEYWORD 검색은 검색 가능한 텍스트와 텍스트 인덱스를 저장합니다. HYBRID 검색은 검색 가능한 텍스트와 Oracle이 관리하는 하이브리드 벡터 인덱스 상태를 저장합니다. DB 저장소는 시작 시 이 스키마 기능을 검증하므로 호환되지 않는 전략이 불완전한 결과를 자동으로 반환하지 않습니다.

VECTOR
벡터 유사성만 검색하십시오. 저장소는 구성된 임베더로 질의를 포함하거나 호출자가 제공한 query_vector를 사용하고 저장된 벡터로부터의 거리별로 레코드 순위를 지정합니다. 벡터 검색을 위해 구성된 DB 스키마와 함께 사용합니다.
HYBRID
Oracle의 관리형 하이브리드 인덱스로 검색합니다. Oracle은 저장된 검색 텍스트에 대한 텍스트 매칭과 데이터베이스 내 하이브리드 인덱스의 벡터 순위를 결합합니다. 사용자가 정확한 식별자, 별칭 또는 제품 이름을 비롯하여 자연어로 검색할 수 있는 경우 이 옵션을 사용합니다. 이 전략을 사용하려면 저장소의 기본 임베더가 OracleDBEmbedder이어야 하므로 관리 인덱스 및 저장소가 하나의 데이터베이스 내 모델을 공유합니다.
KEYWORD
저장된 검색 텍스트에 대해 키워드/텍스트 일치로만 검색합니다. 이 모드는 로컬 질의 임베딩을 생성하지 않으며 Oracle DB 임베더가 필요하지 않습니다. 기존 하이브리드 스키마에 대해 열면 새 하이브리드 인덱스를 생성하지 않고도 해당 하이브리드 인덱스의 텍스트 분기를 사용할 수 있습니다. 정확한 식별자, 별칭, 제품 이름 또는 짧은 구문이 벡터 결합 없이 검색을 유도해야 하는 경우 이 옵션을 사용합니다.

하이브리드 = 'HYBRID'

KEYWORD = 'KEYWORD'

벡터 = 'VECTOR'

검색 인덱스 동기화 모드

클래스 oracleagentmemory.core.dbsearch.SearchIndexSyncMode

기준: Enum

관리 DB 검색 인덱스에 대한 새로고침 동작입니다.

이 설정은 Oracle에서 DB 지원 텍스트 인식 검색에 새 검색 텍스트 또는 변경된 검색 텍스트를 표시하는 시기를 제어합니다. SearchStrategy.HYBRID는 Oracle의 관리형 하이브리드 벡터 인덱스를 사용합니다. SearchStrategy.KEYWORD는 Oracle Text 인덱스를 사용합니다. SearchStrategy.VECTOR는 이 설정을 사용하지 않습니다.

ON_COMMIT
쓰기 트랜잭션이 커밋되면 인덱스를 새로 고칩니다. 쓰기가 성공한 직후 레코드를 검색할 수 있으므로 이는 대부분의 애플리케이션에 대한 기본값이며 가장 간단한 선택입니다. 인덱스가 최신 상태로 유지되기 때문에 트랜잭션을 기록하는 작업을 추가할 수 있습니다.
MANUAL
인덱스를 자동으로 새로 고치지 마십시오. 데이터베이스측 인덱스 동기화 작업을 직접 실행할 때까지 새 레코드 또는 업데이트된 레코드가 키워드 또는 하이브리드 검색에 표시되지 않을 수 있습니다. 이 기능은 새로고침 작업 실행 시기를 제어하려는 대량 로드 또는 유지보수 기간에 유용합니다.
AUTO
Oracle은 관리되는 하이브리드 인덱스를 비동기적으로 새로 고칩니다. 쓰기는 즉시 새로 고침 비용을 피할 수 있지만 Oracle이 백그라운드 새로 고침을 완료할 때까지 검색 결과가 최근 쓰기보다 지연될 수 있습니다. 이 모드는 SearchStrategy.HYBRID에서만 지원됩니다.

경고: 이 설정은 관리 검색 인덱스가 존재하는 후 진행 중인 유지 관리를 제어합니다. 첫번째 인덱스가 비동기적으로 생성되지는 않습니다. 기존 저장된 검색 텍스트에 대해 관리되는 하이브리드 인덱스를 생성하는 작업은 Oracle이 해당 텍스트에서 관리되는 하이브리드 인덱스 상태를 구축하므로 장기적으로 실행될 수 있습니다.

AUTO = '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 저장소에 대한 스키마 생성 정책입니다.

필수_기존

전체 관리 스키마가 존재하고 최신 상태인지 검증합니다. DB 객체를 생성하거나 수정하지 마십시오.

비어 있는 경우 생성_IF_EMPT

관리되는 객체가 없으면 부트스트랩 스키마입니다. 객체가 존재하는 경우 완전한 최신 관리 스키마가 필요합니다.

CREATE_IF_NE REQUIRED

누락된 관리 객체를 생성하고 지원되는 관리 스키마 업그레이드를 적용합니다.

재생성

모든 관리되는 스키마 객체를 삭제하고 재생성합니다. 이것은 파괴적입니다.