ai-agents-for-beginners

AI 에이전트를 위한 메모리

Agent Memory

AI 에이전트를 만드는 고유한 이점을 논할 때 주로 두 가지가 논의됩니다: 작업을 완료하기 위해 도구를 호출하는 능력과 시간이 지남에 따라 개선되는 능력입니다. 메모리는 더 나은 사용자 경험을 창출할 수 있는 자기 개선 에이전트를 만드는 기초입니다.

이번 수업에서는 AI 에이전트의 메모리가 무엇인지, 이를 어떻게 관리하고 애플리케이션에 활용할 수 있는지 알아보겠습니다.

소개

이번 수업에서 다룰 내용:

AI 에이전트 메모리 이해: 메모리가 무엇이고 에이전트에 왜 필수적인지.

메모리 구현 및 저장: 단기 및 장기 메모리에 초점을 맞춰 AI 에이전트에 메모리 기능을 추가하는 실용적인 방법.

자기 개선 AI 에이전트 만들기: 메모리가 과거 상호작용에서 학습하고 시간이 지남에 따라 개선하도록 에이전트를 가능하게 하는 방법.

사용 가능한 구현

이 수업에는 두 가지 포괄적인 노트북 튜토리얼이 포함되어 있습니다:

13-agent-memory.ipynb: Microsoft Agent Framework를 사용하여 Mem0 및 Azure AI Search로 메모리 구현

13-agent-memory-cognee.ipynb: 임베딩으로 지원되는 지식 그래프를 자동으로 구축하고 시각화하며 지능형 검색을 지원하는 Cognee를 사용한 구조화된 메모리 구현

학습 목표

이 수업을 마치면 다음을 알게 됩니다:

• 작업 기억, 단기 및 장기 기억처럼 다양한 AI 에이전트 메모리 유형과 페르소나 및 에피소드 메모리와 같은 특수 형태를 구별하는 방법.

• Microsoft Agent Framework를 사용하여 Mem0, Cognee, 화이트보드 메모리 같은 도구를 활용하고 Azure AI Search와 통합하여 AI 에이전트의 단기 및 장기 메모리를 구현하고 관리하는 방법.

• 자기 개선 AI 에이전트의 원리를 이해하고 견고한 메모리 관리 시스템이 지속적인 학습과 적응에 어떻게 기여하는지.

AI 에이전트 메모리 이해하기

본질적으로 AI 에이전트를 위한 메모리는 정보를 보유하고 회상할 수 있는 메커니즘을 의미합니다. 이 정보는 대화에 대한 구체적인 세부사항, 사용자 선호, 과거 행동, 또는 학습된 패턴일 수 있습니다.

메모리가 없으면 AI 애플리케이션은 종종 상태 비저장(stateless)으로, 각 상호작용이 처음부터 시작됩니다. 이는 에이전트가 이전 컨텍스트나 선호를 “잊어버리는” 반복적이고 실망스러운 사용자 경험으로 이어집니다.

메모리가 왜 중요한가?

에이전트의 지능은 과거 정보를 회상하고 활용하는 능력과 깊게 연결되어 있습니다. 메모리는 에이전트를 다음과 같이 만듭니다:

반영적: 과거 행동과 결과로부터 학습.

대화형: 진행 중인 대화에서 컨텍스트를 유지.

능동적이고 반응적: 과거 데이터를 기반으로 필요를 예측하거나 적절하게 대응.

자율적: 저장된 지식을 활용하여 보다 독립적으로 작동.

메모리를 구현하는 목표는 에이전트를 더 신뢰할 수 있고 능력 있게 만드는 것입니다.

메모리 유형

작업 기억

작업 기억은 에이전트가 단일 지속 작업이나 사고 과정 중에 사용하는 임시 메모리로 생각하세요. 다음 단계를 계산하는 데 필요한 즉각적인 정보를 담고 있습니다.

AI 에이전트의 작업 기억은 전체 채팅 기록이 길거나 잘려도 대화에서 가장 관련성 높은 정보를 포착합니다. 요구 사항, 제안, 결정, 행동 같은 핵심 요소들을 추출하는 데 집중합니다.

작업 기억 예시

여행 예약 에이전트에서 작업 기억은 사용자의 현재 요청, 예를 들어 “파리로 여행 예약하고 싶어요”라는 요구사항을 포착할 수 있습니다. 이 특정 요구가 에이전트의 즉각적 컨텍스트에 저장되어 현재 상호작용을 안내합니다.

단기 기억

이 메모리 유형은 단일 대화나 세션 동안 정보를 유지합니다. 현재 채팅의 컨텍스트로서 이전 대화 턴을 참조할 수 있게 합니다.

Microsoft Agent Framework Python SDK 샘플에서 이는 agent.create_session()으로 생성되는 AgentSession에 해당합니다. 세션은 프레임워크 내장 단기 메모리로, 같은 세션이 재사용되는 동안 대화 컨텍스트를 유지하지만 세션 종료나 애플리케이션 재시작 시 이 컨텍스트는 유지되지 않습니다. 세션 간에도 유지할 사실과 선호는 데이터베이스, 벡터 인덱스 또는 기타 영구 저장소를 통한 장기 기억에 저장하세요.

단기 기억 예시

사용자가 “파리행 비행기 비용은 얼마인가요?”라고 묻고 이어서 “거기 숙박은요?”라고 질문하면, 단기 기억은 같은 대화 내에서 “거기”가 “파리”를 의미한다는 것을 에이전트가 알도록 합니다.

장기 기억

여러 대화나 세션에 걸쳐 지속되는 정보입니다. 사용자의 선호, 과거 상호작용 또는 일반 지식을 기억할 수 있어 개인화에 중요합니다.

장기 기억 예시

장기 기억은 “벤은 스키와 야외 활동을 즐기고, 산 전망과 함께 커피를 좋아하며 과거 부상으로 인해 고급 스키 슬로프는 피하는 편이다”라는 정보를 저장할 수 있습니다. 이전 상호작용에서 학습된 이 정보는 미래 여행 계획 세션에서 맞춤형 추천에 영향을 줍니다.

페르소나 메모리

이 특수 메모리 유형은 에이전트가 일관된 “성격”이나 “페르소나”를 개발하도록 돕습니다. 에이전트가 자신이나 의도하는 역할에 대한 세부사항을 기억하여 상호작용을 보다 부드럽고 집중되게 만듭니다.

페르소나 메모리 예시 여행 에이전트가 “전문 스키 계획자”로 설계됐다면 페르소나 메모리는 이 역할을 강화하고 전문가의 어조와 지식에 맞춘 응답을 유도할 수 있습니다.

작업 흐름/에피소드 메모리

이 메모리는 복잡한 작업 동안 에이전트가 수행한 단계의 순서를 저장합니다. 성공과 실패를 포함하여 과거의 특정 “에피소드” 또는 경험을 기억하여 학습합니다.

에피소드 메모리 예시

에이전트가 특정 비행기 예약을 시도했으나 불가해서 실패한 경우, 에피소드 메모리는 이 실패를 기록하여 다음 시도 시 대체 비행기를 찾거나 사용자에게 문제를 더 잘 안내할 수 있게 합니다.

엔티티 메모리

대화에서 사람, 장소, 사물 같은 특정 엔티티와 이벤트를 추출하고 기억하는 것을 포함합니다. 이는 에이전트가 논의된 핵심 요소에 대한 구조화된 이해를 구축하도록 합니다.

엔티티 메모리 예시

과거 여행에 관한 대화에서 에이전트는 “파리,” “에펠탑,” “Le Chat Noir 레스토랑에서의 저녁 식사”를 엔티티로 추출할 수 있습니다. 미래 상호작용에서 “Le Chat Noir”를 기억해 다시 예약 제안을 할 수도 있습니다.

구조화된 RAG (검색 증강 생성)

RAG는 더 넓은 기술이지만 “구조화된 RAG”는 강력한 메모리 기술로 강조됩니다. 대화, 이메일, 이미지 등 다양한 출처에서 빽빽하고 구조화된 정보를 추출하여 응답 정밀도, 재현율, 속도를 높입니다. 기존 RAG가 의미 유사성에만 의존하는 반면, 구조화된 RAG는 정보의 본질적 구조를 활용합니다.

구조화된 RAG 예시

키워드 단순 매칭 대신에 구조화된 RAG는 이메일에서 비행기 상세 정보(목적지, 날짜, 시간, 항공사)를 파싱하여 구조화된 방식으로 저장할 수 있습니다. 이를 통해 “화요일에 파리로 예약한 비행기는 무엇인가요?” 같은 정밀한 질의가 가능해집니다.

메모리 구현 및 저장

AI 에이전트를 위한 메모리 구현은 생성, 저장, 검색, 통합, 업데이트, 심지어 “잊기”(삭제)를 포함하는 체계적인 메모리 관리 과정을 수반합니다. 검색은 특히 중요한 부분입니다.

특수화된 메모리 도구

Mem0

에이전트 메모리 저장과 관리를 위한 한 가지 방법은 Mem0 같은 특수 도구를 사용하는 것입니다. Mem0은 지속적인 메모리 계층 역할을 하여 에이전트가 관련 상호작용을 회상하고, 사용자 선호 및 사실적 컨텍스트를 저장하며, 시간 경과에 따른 성공과 실패에서 학습할 수 있게 합니다. 이 아이디어는 상태 비저장 에이전트가 상태 저장 에이전트로 전환된다는 것입니다.

이것은 추출과 업데이트의 두 단계 메모리 파이프라인으로 작동합니다. 먼저, 에이전트 스레드에 추가된 메시지는 Mem0 서비스로 보내지며, 이 서비스는 대형 언어 모델(LLM)을 사용해 대화 기록을 요약하고 새로운 메모리를 추출합니다. 이후 LLM 기반 업데이트 단계에서는 이 메모리를 추가, 수정, 삭제할지 결정하며, 벡터, 그래프, 키-값 데이터베이스를 포함할 수 있는 혼합형 데이터 저장소에 보관합니다. 이 시스템은 다양한 메모리 유형을 지원하고, 엔티티 간 관계 관리를 위한 그래프 메모리도 통합할 수 있습니다.

Cognee

또 다른 강력한 접근법은 Cognee로, AI 에이전트용 오픈소스 의미 기억 도구입니다. 구조화 및 비구조화 데이터를 쿼리 가능한 임베딩 기반 지식 그래프로 변환합니다. Cognee는 벡터 유사도 검색과 그래프 관계를 결합한 듀얼 스토어 아키텍처를 제공하여 에이전트가 정보의 유사성뿐 아니라 개념 간 관계도 이해할 수 있게 합니다.

벡터 유사도, 그래프 구조, LLM 추론을 혼합하는 하이브리드 검색에서 뛰어납니다 - 원시 덩어리 검색부터 그래프 인지 질문 답변까지. 시스템은 진화하고 성장하는 생동 메모리를 유지하며 연결된 하나의 그래프로 쿼리 가능하고, 단기 세션 컨텍스트와 장기 영속 메모리를 모두 지원합니다.

Cognee 노트북 튜토리얼(13-agent-memory-cognee.ipynb)에서는 다양한 데이터 소스 섭취, 지식 그래프 시각화, 특정 에이전트 요구에 맞는 다양한 검색 전략을 활용한 쿼리 예제를 보여 이 통합 메모리 계층 구축을 시연합니다.

RAG로 메모리 저장하기

Mem0 같은 특수 메모리 도구 외에도, Azure AI Search 같은 강력한 검색 서비스를 메모리 저장소 및 검색 백엔드로 활용할 수 있습니다, 특히 구조화된 RAG에 적합합니다.

이를 통해 에이전트의 응답에 자체 데이터를 기반으로 하여 더 관련성 높고 정확한 답변을 확보할 수 있습니다. Azure AI Search는 사용자 별 여행 메모리, 제품 카탈로그 또는 기타 도메인 특정 지식을 저장하는 데 사용될 수 있습니다.

Azure AI Search는 대화 기록, 이메일 또는 이미지 같은 대규모 데이터셋에서 빽빽하고 구조화된 정보를 추출하고 검색하는 구조화된 RAG 기능을 지원합니다. 이는 전통적인 텍스트 청킹 및 임베딩 방식을 넘어선 “초인적 정밀도 및 재현율”을 제공합니다.

AI 에이전트가 스스로 개선하도록 만들기

자기 개선 에이전트를 위한 일반적인 패턴 중 하나는 “지식 에이전트”를 도입하는 것입니다. 이 별도의 에이전트는 사용자와 주 에이전트 간 대화를 관찰합니다. 역할은:

  1. 가치 있는 정보 식별: 대화 중 일반 지식이나 특정 사용자 선호로 저장할 만한 부분이 있는지 결정.

  2. 추출 및 요약: 대화에서 핵심 학습이나 선호를 추출.

  3. 지식 베이스에 저장: 이 추출된 정보를 종종 벡터 데이터베이스에 영속적으로 저장하여 나중에 검색 가능하게 함.

  4. 향후 질의 보강: 사용자가 새로운 질의를 시작할 때 지식 에이전트가 관련 저장 정보를 검색해 사용자의 프롬프트에 추가하여 주 에이전트에 중요한 컨텍스트 제공 (RAG와 유사).

메모리 최적화

지연 시간 관리: 사용자 상호작용 속도를 늦추지 않도록, 저렴하고 빠른 모델로 먼저 정보의 저장 또는 검색 가치 여부를 확인하고, 필요할 때만 더 복잡한 추출/검색 프로세스를 호출합니다.

지식 베이스 유지 관리: 성장하는 지식 베이스의 경우, 덜 자주 사용되는 정보는 비용 관리 차원에서 “콜드 스토리지”로 이동할 수 있습니다.

에이전트 메모리에 대해 더 궁금하세요?

Microsoft Foundry Discord에 참여하여 다른 학습자들과 만나고 오피스 아워에 참석하며 AI 에이전트 관련 질문을 해결하세요.

이전 수업

AI 에이전트를 위한 컨텍스트 엔지니어링

다음 수업

Microsoft Agent Framework 탐색하기


면책 조항: 이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 기하기 위해 노력하고 있으나, 자동 번역은 오류나 부정확한 부분이 있을 수 있음을 유의하시기 바랍니다. 원본 문서의 원어본이 권위 있는 자료로 간주되어야 합니다. 중요한 정보의 경우, 전문가의 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.