상점 및 스키마

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

API 저장

클래스 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

method search_async(비동기)

비동기적으로 벡터 유사성으로 레코드를 검색합니다.

method update(개요)

저장된 레코드 콘텐츠, 포함 데이터 또는 메타데이터를 업데이트합니다.

Oracle DB 저장소

클래스 oracleagentmemory.core.OracleDBMemoryStore

기준: OracleMemoryStore

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

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

방법 add

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

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

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_agent

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

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

예제

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

방법 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 지원 저장소에서 스레드를 삭제하면 연관된 메시지 및 메모리 행과 함께 관리되는 스레드 행과 검색을 위해 유지 관리되는 레코드 조각 행이 제거됩니다. 이는 원시 메시지 행만 제거하는 메시지 레벨 삭제보다 광범위합니다. 스레드 삭제는 동일한 트랜잭션의 일치하는 RECORD_CHUNKS 행과 함께 THREAD에서 참조된 종속 메시지 및 메모리 행을 제거합니다.

예제

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")
[]

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

예제

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(비동기)

비동기적으로 벡터 유사성으로 레코드를 검색합니다.

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

기준: str, Enum

Oracle DB 저장소에 대한 스키마 생성 정책입니다.

필수_기존

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

비어 있는 경우 생성_IF_EMPT

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

CREATE_IF_NE REQUIRED

메타데이터를 포함하여 누락된 관리 객체만 생성합니다.

재생성

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