상점 및 스키마

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

API 저장

클래스 oracleagentmemory.core.OracleMemoryStore

기준: IMemoryStore

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

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

method add(개요)

텍스트 레코드를 포함 및 유지합니다.

예제

store.add(["Abstract memory"], record_type="memory", record_ids="mem-abstract-docs")
['mem-abstract-docs']

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

Oracle DB 저장소

클래스 oracleagentmemory.core.OracleDBMemoryStore

기준: OracleMemoryStore

메시지 및 입력된 메모리 레코드에 대한 데이터베이스 지원 지속성

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

방법 add

메모리 저장소에 레코드를 추가합니다.

예제

store.add(
    ["Hello from docs"],
    record_type="message",
    record_ids="msg-docs-add",
    thread_ids="c-docs-add",
    roles="user",
)
['msg-docs-add']

방법 add_agent

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

예제

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

방법 add_user

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

예제

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

방법 delete

관리되는 벡터 레코드 행과 식별자별로 조각 행을 삭제합니다.

예제

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

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

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

예제

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

방법 list_thread_messages

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

예제

store.list_thread_messages("c1")
[]

방법 search

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

예제

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

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

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

재생성

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