View a markdown version of this page

인사이트 저장 및 검색 - Amazon Bedrock AgentCore

인사이트 저장 및 검색

하나 이상의 장기 메모리 전략으로 AgentCore 메모리를 구성하고 전략이 ACTIVE이면 서비스는 자동으로 대화형 데이터 처리를 시작하여 인사이트를 추출하고 저장합니다. 이 프로세스에는 원시 대화를 저장한 다음 처리된 후 구조화된 인사이트를 검색하는 두 가지 단계가 포함됩니다.

1단계: 대화형 이벤트를 저장하여 추출 트리거

create_event 작업을 사용하여 대화 데이터를 단기 메모리에 저장하면 전체 장기 메모리 프로세스가 트리거됩니다. 이벤트를 기록할 때마다 분석할 활성 메모리 전략에 대한 새 원재료를 제공합니다.

중요

메모리 전략의 상태가 된 생성된 이벤트만 장기 메모리 추출을 위해 ACTIVE 처리됩니다. 전략이 추가되고 활성화되기 전에 저장된 대화는 포함되지 않습니다.

다음 예제에서는 멀티턴 대화를 메모리 리소스에 저장하는 방법을 보여줍니다.

예제 대화를 일련의 이벤트로 저장

#'memory_id' is the ID of your memory resource with an active summary strategy. from bedrock_agentcore.memory.session import MemorySessionManager from bedrock_agentcore.memory.constants import ConversationalMessage, MessageRole import time actor_id = "User84" session_id = "OrderSupportSession1" # Create session manager session_manager = MemorySessionManager( memory_id=memory_id, region_name="us-west-2" ) # Create a session session = session_manager.create_memory_session( actor_id=actor_id, session_id=session_id ) print("Capturing conversational events...") # Add all conversation turns session.add_turns( messages=[ ConversationalMessage("Hi, I'm having trouble with my order #12345", MessageRole.USER), ConversationalMessage("I am sorry to hear that. Let me look up your order.", MessageRole.ASSISTANT), ConversationalMessage("lookup_order(order_id='12345')", MessageRole.TOOL), ConversationalMessage("I see your order was shipped 3 days ago. What specific issue are you experiencing?", MessageRole.ASSISTANT), ConversationalMessage("The package arrived damaged", MessageRole.USER), ] ) print("Conversation turns added successfully!")

2단계: 추출된 인사이트 검색

장기 메모리의 추출 및 통합은 백그라운드에서 실행되는 비동기 프로세스입니다. 새 대화의 인사이트를 검색하는 데 1분 이상 걸릴 수 있습니다. 애플리케이션 로직이이 지연을 고려해야 합니다.

구조화된 인사이트를 검색하려면 retrieve_memory_records 작업을 사용합니다. 이 작업은 장기 메모리 스토어에 대해 강력한 의미 체계 검색을 수행합니다. 전략에서 정의namespace한 올바른 정보와 찾고 searchQuery 있는 정보를 설명하는를 제공해야 합니다.

다음 예제에서는 처리를 기다린 다음 이전 단계에서 저장된 대화의 요약을 검색하는 방법을 보여줍니다.

세션 요약 대기 및 검색 예제

# 'session' is an existing session object that you created when adding the coversation turns # session should be created on a memory resource with an active summary strategy. # --- Example 1: Retrieve the user's shipping issues under a specific namespace --- memories = session.search_long_term_memories( namespace=f"/summaries/{actor_id}/{session_id}/", query="What problem did the user report with their order?", top_k=5 ) # --- Example 2: Retrieve the user's shipping issues under a particular namespace hierarchy (e.g.: shipping issues across multiple sessions) --- memories = session.search_long_term_memories( namespace_path=f"/summaries/{actor_id}/", query="What problem did the user report with their order?", top_k=5 ) print(f"Found {len(memories)} memories:") for memory_record in memories: print(f"Retrieved Issue Detail: {memory_record}") print("--------------------------------------------------------------------") # Example Output: # Retrieved Issue Detail: The user reported that their package for order #12345 arrived damaged.