Vertex AI Agent Engine 메모리 뱅크를 사용하면 사용자가 에이전트와 나눈 대화를 기반으로 장기 메모리를 동적으로 생성할 수 있습니다. 장기 메모리는 특정 사용자의 여러 세션에서 액세스할 수 있는 맞춤설정된 정보입니다. 에이전트는 메모리를 사용하여 사용자에게 맞춤설정된 응답을 제공하고 세션 간 연속성을 만들 수 있습니다.
개요
메모리 뱅크를 사용하면 메모리를 관리하여 에이전트가 사용자와 상호작용하는 방식을 맞춤설정하고 컨텍스트 윈도우를 관리할 수 있습니다. 메모리 뱅크는 각 범위에 대해 격리된 메모리 컬렉션을 유지합니다. 각 메모리는 에이전트가 사용할 수 있는 컨텍스트를 확장하는 데 사용할 수 있는 독립적인 자체 포함 정보입니다. 예를 들면 다음과 같습니다.
{
"name": "projects/.../locations/.../reasoningEngines/.../memories/...",
"scope": {
"agent_name": "My agent"
},
"fact": "I use Memory Bank to manage my memories."
}
메모리 뱅크에는 다음 기능이 포함됩니다.
메모리 생성: 대규모 언어 모델 (LLM)을 사용하여 메모리를 생성, 개선, 관리합니다.
메모리 추출: 소스 데이터에서 가장 의미 있는 정보만 추출하여 메모리로 유지합니다.
메모리 통합: 새로 추출된 정보를 기존 메모리와 통합하여 새 정보가 수집될 때 메모리가 발전할 수 있도록 합니다. 사전 추출된 메모리 (예: 에이전트 또는 human-in-the-loop에서 의미가 있다고 간주하는 정보)를 기존 메모리와 통합할 수도 있습니다.
비동기 생성: 메모리는 백그라운드에서 생성될 수 있으므로 에이전트가 메모리 생성이 완료될 때까지 기다릴 필요가 없습니다.
맞춤설정 가능한 추출: 구체적인 주제와 few-shot 예시를 제공하여 메모리 뱅크가 의미 있는 것으로 간주하는 정보를 구성합니다.
멀티모달 이해: 멀티모달 정보를 처리하여 텍스트 인사이트를 생성하고 유지합니다.
관리형 스토리지 및 검색: 완전 관리형의 지속적이고 액세스 가능한 메모리 저장소를 활용합니다.
ID 간 데이터 격리: 메모리 통합 및 검색이 특정 ID로 격리됩니다.
영구적이고 액세스 가능한 스토리지: Vertex AI Agent Engine 런타임, 로컬 환경 또는 기타 배포 옵션을 비롯한 여러 환경에서 액세스할 수 있는 메모리를 저장합니다.
유사성 검색: 특정 ID로 범위가 지정된 유사성 검색을 사용하여 기억을 검색합니다.
자동 만료: 오래된 정보가 자동으로 삭제되도록 메모리에 TTL (수명)을 설정합니다. 삽입되거나 생성된 메모리에 TTL이 자동으로 적용되도록 메모리 뱅크 인스턴스를 구성합니다.
에이전트 통합: 메모리를 생성하고 검색하는 호출을 조정할 수 있도록 메모리 뱅크를 에이전트에 연결합니다.
에이전트 개발 키트 (ADK) 통합: 내장된 ADK 도구와
VertexAiMemoryBankService
를 사용하여 ADK 기반 에이전트의 호출을 조정하여 메모리 뱅크에서 읽고 메모리 뱅크에 씁니다.기타 프레임워크: 도구와 콜백으로 메모리 뱅크 코드를 래핑하여 메모리 생성과 검색을 조정합니다.
사용 사례
메모리 뱅크를 사용하면 스테이트리스(Stateless) 에이전트 상호작용을 에이전트가 시간이 지남에 따라 기억하고, 학습하고, 적응하는 스테이트풀(Stateful) 컨텍스트 환경으로 변환할 수 있습니다. 메모리 뱅크는 다음을 요구하는 애플리케이션에 적합합니다.
장기 맞춤설정: 개별 사용자에게 맞춤화된 환경을 구축합니다. 메모리 뱅크는 메모리의 범위를 특정 ID로 지정하여 에이전트가 여러 세션에서 사용자의 환경설정, 기록, 주요 세부정보를 기억할 수 있도록 합니다.
- 예: 다시 묻지 않아도 사용자의 이전 지원 티켓과 제품 환경설정에서 주요 정보를 기억하는 고객 서비스 상담사
LLM 기반 지식 추출: 수동 개입 없이 대화 또는 멀티모달 콘텐츠에서 가장 중요한 정보를 자동으로 식별하고 유지해야 하는 경우에 사용합니다.
- 예: 일련의 기술 논문을 읽고 주요 결과, 방법론, 결론을 통합된 메모리로 구축하는 연구 에이전트
동적이고 진화하는 컨텍스트: 정적이지 않은 지식 소스가 필요한 경우 메모리 뱅크를 사용합니다. Memory Bank는 에이전트의 새로운 정보를 지속적으로 통합하여 새로운 데이터가 제공될 때 저장된 메모리를 개선하고 업데이트하도록 설계되었습니다. 이렇게 하면 에이전트가 사용하는 컨텍스트가 항상 최신 상태이고 정확합니다. RAG에는 정적인 외부 기술 자료가 있는 반면, 메모리 뱅크는 에이전트가 제공하는 컨텍스트에 따라 발전할 수 있습니다.
사용 예시
다음 프로세스를 사용하여 Vertex AI Agent Engine 세션과 함께 메모리 뱅크를 사용하여 저장된 세션에서 메모리를 생성할 수 있습니다.
(세션)
CreateSession
: 대화를 시작할 때마다 새 세션을 만듭니다. 상담사가 사용하는 대화 기록은 이 세션으로 범위가 지정됩니다. 세션에는 사용자와 에이전트 간의 상호작용에 대한 메시지와 작업(SessionEvents
)의 시간순 시퀀스가 포함됩니다. 모든 세션에는 사용자 ID가 있어야 합니다. 이 세션에 대해 추출된 메모리(GenerateMemories
참조)가 이 사용자에 매핑됩니다.(세션)
AppendEvent
: 사용자가 에이전트와 상호작용하면 이벤트 (예: 사용자 메시지, 에이전트 응답, 도구 작업)가 세션에 업로드됩니다. 이벤트는 대화 기록을 유지하고 메모리를 생성하는 데 사용할 수 있는 대화 기록을 만듭니다.(세션)
ListEvents
: 사용자가 에이전트와 상호작용하면 에이전트가 대화 기록을 가져옵니다.(메모리 뱅크): 메모리를 생성하거나 만듭니다.
GenerateMemories
: 지정된 간격(예: 세션이 끝날 때 또는 턴이 끝날 때)에 에이전트가 대화 기록을 사용하여 메모리가 생성되도록 트리거할 수 있습니다. 사용자에 관한 사실은 현재 또는 향후 세션에서 사용할 수 있도록 대화 기록에서 자동으로 추출됩니다.CreateMemory
: 에이전트가 메모리 뱅크에 직접 메모리를 작성할 수 있습니다. 예를 들어 에이전트는 메모리를 작성해야 하는 시점과 저장해야 하는 정보(도구로 사용할 수 있는 메모리)를 결정할 수 있습니다. 에이전트가 추출되는 사실을 더 세부적으로 제어하도록 하려면CreateMemory
를 사용하세요.
(메모리 뱅크)
RetrieveMemories
: 사용자가 에이전트와 상호작용하면 에이전트가 해당 사용자에 관해 저장된 메모리를 가져올 수 있습니다. 모든 기억을 가져오거나(간단한 검색) 현재 대화와 가장 관련성이 높은 메모리만 가져올 수 있습니다(유사성 검색). 그런 다음 가져온 기억을 프롬프트에 삽입할 수 있습니다.
빠른 시작
다음 빠른 시작을 사용하여 메모리 뱅크를 시작하세요.
REST API를 사용한 빠른 시작: REST API 빠른 시작을 따라 Vertex AI Agent Engine 세션 및 메모리 뱅크에 직접 API를 호출합니다.
에이전트 개발 키트(ADK)를 사용한 빠른 시작: ADK 에이전트가 Vertex AI Agent Engine 세션 및 메모리 뱅크에 대한 호출을 조정하도록 하려면 에이전트 개발 키트(ADK) 빠른 시작을 따르세요.
프롬프트 인젝션의 보안 위험
Vertex AI 공유 책임에 설명된 보안 책임 외에도 장기 메모리를 사용할 때 에이전트에 영향을 줄 수 있는 프롬프트 인젝션 및 메모리 포이즈닝의 위험을 고려하세요. 메모리 포이즈닝은 거짓 정보가 메모리 뱅크에 저장될 때 발생합니다. 그러면 에이전트가 향후 세션에서 이 거짓 정보나 악성 정보를 기반으로 작업할 수 있습니다.
메모리 포이즈닝의 위험을 완화하려면 다음을 수행하세요.
Model Armor: Model Armor를 사용하여 메모리 뱅크 또는 에이전트로 전송되는 프롬프트를 검사합니다.
적대적 테스트: 공격을 시뮬레이션하여 LLM 애플리케이션의 프롬프트 인젝션 취약점을 선제적으로 테스트합니다. 이를 일반적으로 '레드팀'이라고 합니다.
샌드박스 실행: 에이전트가 외부 또는 중요한 시스템을 실행하거나 상호작용할 수 있는 경우 이러한 작업은 엄격한 액세스 제어 및 사람의 검토가 적용된 샌드박스 환경에서 실행해야 합니다.
자세한 내용은 안전한 AI 에이전트에 대한 Google의 접근 방식을 참조하세요.