콘텐츠로 이동

2.8. 메모리

메모리 시스템을 사용하면 AI가 모든 대화에서 참조하는 지속적인 사실, 선호 사항, 컨텍스트를 저장할 수 있습니다. 세션마다 초기화되는 일시적인 컨텍스트 윈도우와 달리, 메모리 항목은 영구적으로 유지되어 같은 내용을 반복하지 않아도 AI가 프로젝트 규칙, 개인 선호 사항, 도메인 지식을 "기억"합니다.

메모리란?

대규모 언어 모델은 기본적으로 장기 기억이 없습니다. 매 대화가 백지 상태에서 시작되며, 모델의 컨텍스트 윈도우에 들어갈 수 있는 내용으로 제한됩니다. 메모리는 Backend.AI GO가 매 채팅 세션에 자동으로 주입하는 로컬 사실 저장소를 유지함으로써 이 한계를 해결합니다.

AI 어시스턴트와 함께하는 개인 지식 베이스라고 생각하시면 됩니다.

핵심 개념

  • 메모리 뱅크 (네임스페이스) — 관련 항목을 모아두는 구성 그룹입니다. 예를 들어 "업무 프로젝트" 뱅크와 "코딩 스타일" 뱅크를 따로 만들 수 있습니다. 각 뱅크는 개별적으로 활성화하거나 비활성화할 수 있어 AI가 어떤 컨텍스트를 볼지 정확히 제어할 수 있습니다.

  • 메모리 항목 — 뱅크 안에 저장된 개별 사실입니다. 각 항목에는 내용 텍스트, 분류를 위한 선택적 태그, 소스 유형(수동 또는 자동), 타임스탬프가 포함됩니다.

  • 메모리 주입 — 메시지를 보내면 Backend.AI GO가 활성화된 모든 뱅크에서 항목을 수집하고, 시스템 메시지로 포맷한 뒤 API 요청에 앞에 추가합니다. 모델은 답변하기 전에 이 컨텍스트를 읽습니다.

  • 자동 추출 — AI가 대화에서 유용한 사실을 자동으로 식별하고 새 항목으로 저장할 수 있어 수동 작업 없이도 메모리가 자연스럽게 성장합니다.

  • 중복 제거 및 통합 — 시간이 지남에 따라 자동 추출된 항목이 겹칠 수 있습니다. 시스템은 유사한 항목을 병합하고 오래된 항목을 정리하여 메모리를 간결하게 유지합니다.

시작하기

  1. 설정 > 메모리를 열고 메모리 시스템이 활성화되어 있는지 확인합니다 (기본적으로 활성화되어 있습니다).

  2. 새 메모리 뱅크을 클릭하여 첫 메모리 뱅크를 만듭니다. "개인 선호 사항"이나 "프로젝트 메모" 같은 설명적인 이름을 지정합니다.

  3. 수동으로 항목을 추가하거나, AI와 대화하면서 자동 추출이 뱅크를 채우도록 합니다.

메모리 인디케이터

메모리가 활성 상태일 때, 도구 선택기 옆 채팅 헤더에 데이터베이스 아이콘이 나타납니다.

  • 배지 카운트 — 아이콘에 활성화된 메모리 뱅크의 수가 표시됩니다.

  • 팝오버 — 데이터베이스 아이콘을 클릭하면 다음을 보여주는 빠른 접근 패널이 열립니다:

    • 대화에 대한 메모리 주입을 활성화하거나 비활성화하는 토글.
    • 활성 뱅크 목록과 각 항목 수.
    • 컨텍스트 예산 사용량을 나타내는 토큰 사용 정보.
    • 전체 메모리 뷰어를 여는 버튼.

인디케이터 숨기기

더 깔끔한 채팅 헤더를 선호한다면 설정 > 메모리 > 메모리 표시기 표시에서 데이터베이스 아이콘을 숨길 수 있으며, 이때 메모리 시스템 자체는 비활성화되지 않습니다.

메모리 주입 작동 방식

메모리가 활성화된 상태에서 메시지를 보내면:

  1. Backend.AI GO가 모든 활성화된 뱅크에서 항목을 수집합니다.

  2. 항목은 구조화된 블록으로 포맷되어 API 요청에 시스템 메시지로 앞에 추가됩니다. 이 메시지는 채팅 UI에서 보이지 않으며 모델만 볼 수 있습니다.

  3. 시스템은 설정된 최대 토큰 예산(기본값 2000)을 준수합니다. 전체 항목이 예산을 초과하면 항목이 잘려서 맞춰집니다.

  4. 어떤 이유로든 컨텍스트 구성에 실패하면(예: 백엔드를 사용할 수 없는 경우) 메모리 없이 정상적으로 대화가 진행됩니다. 이러한 우아한 성능 저하로 채팅이 항상 작동합니다.

메시지를 메모리에 저장

채팅 메시지를 직접 메모리에 저장할 수 있습니다:

  1. 메시지를 마우스 오른쪽 버튼으로 클릭하거나 점 세 개 메뉴를 클릭한 후 메모리에 저장을 선택합니다.

  2. 대화상자에서:

    • 저장할 내용을 확인하거나 편집합니다.
    • 드롭다운에서 대상 뱅크(네임스페이스)를 선택합니다.
    • 선택적으로 쉼표로 구분된 태그를 추가하여 정리할 수 있습니다.
  3. 저장을 클릭합니다. 항목은 향후 메모리 주입에 즉시 사용할 수 있습니다.

메모리가 활성화되어 있어야 합니다

"메모리에 저장" 옵션은 설정 > 메모리에서 메모리 시스템이 활성화되어 있을 때만 컨텍스트 메뉴에 나타납니다.

메모리 뱅크 관리

메모리 설정 메모리 설정

메모리 뱅크는 설정 > 메모리 섹션에서 관리합니다:

  • 생성 — 이름과 선택적 설명을 포함한 새 뱅크를 추가합니다.

    메모리 뱅크 생성 메모리 뱅크 생성

  • 편집 — 기존 뱅크의 이름이나 설명을 수정합니다.

  • 삭제 — 뱅크와 모든 항목을 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다.

  • 활성화 / 비활성화 — 삭제하지 않고 개별 뱅크를 켜거나 끕니다. 비활성화된 뱅크는 메모리 주입에서 제외됩니다.

  • 가져오기 / 내보내기 — 뱅크를 JSON 파일로 내보내 백업하거나 공유할 수 있고, JSON 파일에서 가져올 수도 있습니다 (최대 10 MB).

메모리 뷰어

메모리 뷰어 메모리 뷰어

메모리 뷰어는 뱅크 내의 개별 항목을 탐색, 검색, 관리하는 사이드 드로어입니다.

뷰어 열기

설정 > 메모리에서 뱅크 카드의 보기 버튼을 클릭하거나, 메모리 인디케이터 팝오버 내의 버튼을 클릭합니다.

항목 탐색

  • 항목은 가장 최근에 업데이트된 순서로 정렬됩니다.

  • 각 항목 카드에는 내용(마크다운 렌더링 포함), 소스 배지(수동 또는 자동), # 접두사가 붙은 태그, 상대적 타임스탬프가 표시됩니다.

  • 자동 추출된 항목에는 AI가 추출 시 분류한 경우 선택적으로 종류 배지(사실, 선호, 개체, 결정)가 표시됩니다. 분류되지 않은 항목이나 수동으로 저장한 항목에는 배지가 표시되지 않습니다.

  • 긴 항목은 기본적으로 처음 6줄로 접혀 있습니다. 펼침 버튼을 클릭하면 전체 내용을 볼 수 있습니다.

추가, 편집, 삭제

  • 추가추가 버튼을 클릭하여 내용, 태그, 소스 유형을 포함한 새 항목을 만듭니다.

  • 편집 — 항목 카드의 편집 아이콘을 클릭하여 내용과 태그를 수정합니다.

  • 삭제 — 삭제 아이콘을 클릭하여 항목을 제거합니다 (확인 대화상자가 먼저 나타납니다).

  • 뱅크 비우기 — 하단의 네임스페이스 비우기를 클릭하여 현재 뱅크의 모든 항목을 한 번에 제거합니다 (확인 필요).

검색

상단의 검색 바를 사용하여 모든 뱅크 또는 특정 뱅크 내에서 내용으로 항목을 필터링합니다.

종류별 필터링

종류 드롭다운을 사용하여 특정 유형(사실, 선호, 개체, 결정, 미분류)의 항목만 표시합니다. 전체를 선택하면 필터가 해제됩니다.

자동 추출

자동 추출이 활성화된 메모리 설정 자동 추출이 활성화된 메모리 설정

자동 추출은 AI가 대화에서 유용한 사실을 자동으로 식별하고 저장하는 기능입니다.

작동 방식

  1. 어시스턴트가 몇 번 응답할 때마다 (기본값: 5회) 기억할 만한 새로운 정보가 있는지 확인합니다.

  2. 최근 대화 턴(기본 최대 10개)이 중복 확인을 위한 기존 항목과 함께 추론 서버로 전송됩니다.

  3. AI가 어떤 사실을 새 항목으로 생성하거나 기존 항목을 업데이트할지 결정합니다.

  4. 새 항목은 전용 "자동 추출" 뱅크에 저장됩니다 (존재하지 않으면 자동으로 생성됩니다).

  5. 설정된 유휴 시간(기본값: 10분) 동안 새 메시지가 없으면 추출되지 않은 대기 세그먼트가 자동으로 플러시됩니다. 이는 트리거 임계값에 도달하지 않고 끝난 대화를 처리합니다. 유휴 플러시 지연을 0으로 설정하면 이 동작을 비활성화할 수 있습니다.

  6. 대기 세그먼트에서 두 메시지 사이의 공백이 주제 경계 간격(기본값: 30분) 이상일 때, 공백 이전 턴을 완료된 에피소드로 간주하여 별도로 추출합니다. 이후 턴은 대기 상태로 남아 일반 인터벌 로직에 의해 처리됩니다. 주제 경계 간격을 0으로 설정하면 경계 분할을 비활성화할 수 있습니다.

  7. 다음 앱 실행 시 Backend.AI GO가 최근 대화를 조용히 스캔하여 추출 워터마크가 마지막 메시지보다 뒤처진 대화를 백그라운드에서 처리합니다. 이 실행 시 따라잡기 기능은 기본적으로 활성화되어 있으며, 라이브 대화 중에만 추출을 원한다면 설정에서 비활성화할 수 있습니다.

안전 제한

  • 사이클당 최대 20개의 추출 작업으로 과도한 항목 생성을 방지합니다.

  • 자동 추출된 항목 내용은 10,000자로 제한되며, 수동 항목은 최대 50,000자까지 허용됩니다.

  • 각 항목에는 최대 10개의 태그를 지정할 수 있습니다.

실험적 설정

주제 전환 경계 신호 (실험적, 기본값 꺼짐): 활성화하면 연속된 어시스턴트 응답 사이의 어휘 변화를 모니터링하여 주제가 크게 바뀌었다고 판단될 때 추출 구간의 후보 경계로 기록합니다. 대화가 중간에 주제를 전환할 경우 일반 인터벌보다 일찍 추출을 유발할 수 있습니다. 이 신호는 단어 빈도 기반 로컬 수학(유니그램 Jaccard 유사도)만 사용하며, 모델 호출이나 외부 의존성을 추가하지 않습니다. 설정 > 메모리 > 자동 추출 > 주제 전환 경계 신호에서 활성화할 수 있습니다. 휴리스틱이 새롭고 변경될 수 있으므로 기본값은 꺼짐입니다.

중복 제거 및 통합

시간이 지남에 따라 자동 추출된 항목에 중복되거나 유사한 정보가 포함될 수 있습니다. 통합 프로세스가 이를 정리합니다.

  • 유사도 매칭 — 바이그램 기반 Jaccard 유사도를 사용하여 항목을 비교합니다. 기본 임계값은 0.85 (0–1 범위)이며, 텍스트 구조의 85% 이상을 공유하는 항목이 중복으로 간주됩니다.

  • 병합 — 유사한 항목이 발견되면 가장 긴 내용을 유지하고, 모든 태그를 합치며, 어떤 항목이 병합되었는지 기록합니다.

  • 정리90일 (설정 가능) 이상 경과하고 거의 참조되지 않은 자동 추출 항목은 자동으로 삭제될 수 있습니다. 여러 번 추출되거나 참조된 항목은 보존됩니다.

수동 항목은 영향을 받지 않습니다

통합은 자동 추출된 항목에만 적용됩니다. 수동으로 저장한 항목은 항상 그대로 유지됩니다.

aigo-server의 자동 유지 관리

데스크톱 앱은 채팅 유휴 플러시를 통해 통합을 실행합니다. 독립 실행형 헤드리스 바이너리인 aigo-server에는 기다릴 채팅 활동이 없으므로, 대신 백그라운드 유지 관리 틱을 실행합니다. memory_consolidation_enabled가 켜져 있고 설정된 memory_consolidation_interval_hours가 경과하면, 서버가 자체 주기에 따라 정리 및 어휘 통합을 실행합니다. 그 시점에 continuum 라우터도 실행 중이면 LLM 재작성 단계도 함께 진행하고, 그렇지 않으면 다음 번 실행으로 미룹니다. 예약된 틱과 수동 "지금 통합" 호출은 단일 실행으로 처리됩니다. 이미 진행 중인 경우 나중에 들어온 요청은 겹치지 않고 기다립니다. 통합 상태 응답에는 lastAttemptAtlastError 필드가 포함되어 있어 운영자가 유지 관리 실행 여부를 확인하고 반복적인 오류를 파악할 수 있습니다.

설정 참조

모든 메모리 설정은 설정 > 메모리에서 찾을 수 있습니다.

설정 설명 기본값
메모리 시스템 활성화 전체 메모리 시스템을 켜거나 끕니다. 켜짐
메모리 표시기 표시 채팅 헤더에 데이터베이스 아이콘을 표시합니다. 켜짐
최대 메모리 토큰 메모리 주입의 최대 토큰 예산 (500–8000). 값이 높을수록 더 많은 컨텍스트를 제공하지만 모델의 컨텍스트 윈도우를 더 많이 사용합니다. 2000

자동 추출 컨트롤 (자동 추출이 활성화된 경우 표시):

설정 설명 기본값
추출 간격 어시스턴트 응답 N회마다 추출 (1-20). 5
컨텍스트 윈도우 추출 사이클당 분석할 최근 대화 턴 수 (3-20). 10
유휴 플러시 지연 대기 세그먼트를 자동으로 플러시하기 전 유휴 시간(분) (0-120). 0으로 설정하면 비활성화됩니다. 10
주제 경계 간격 주제 경계를 나타내는 침묵 시간(분) (0-1440). 간격 이전 턴이 독립된 에피소드로 추출됩니다. 0으로 설정하면 경계 분할이 비활성화됩니다. 30
실행 시 따라잡기 이전 세션의 대기 세그먼트를 다음 앱 실행 시 백그라운드에서 처리합니다. 켜짐

네임스페이스 수준 컨트롤 (뱅크별):

컨트롤 설명
활성화 토글 이 뱅크를 메모리 주입에 포함하거나 제외합니다.
가져오기 / 내보내기 뱅크를 JSON 파일로 주고받습니다.
보기 메모리 뷰어 드로어를 엽니다.
삭제 뱅크와 모든 항목을 영구적으로 삭제합니다.

팁 및 모범 사례

  • 주제별로 구성하기 — 다양한 도메인에 대해 별도의 뱅크를 만드세요 (예: "업무", "코딩", "개인"). 필요에 따라 컨텍스트를 쉽게 켜고 끌 수 있습니다.

  • 태그 활용하기#python, #preferences, #project-x 같은 태그를 사용하면 메모리 뷰어에서 항목을 빠르게 필터링하고 찾을 수 있습니다.

  • 자동 추출 항목 검토하기 — 정기적으로 메모리 뷰어를 열어 AI가 자동으로 저장한 내용을 확인하세요. 부정확하거나 더 이상 관련 없는 항목은 편집하거나 삭제합니다.

  • 토큰 예산 관리하기최대 메모리 토큰 값이 높을수록 AI에게 더 많은 컨텍스트를 제공하지만 대화 자체에 사용할 수 있는 공간이 줄어듭니다. 기본값(2000)으로 시작하고 필요한 경우에만 늘리세요.

  • 백업을 위해 내보내기 — 큰 변경을 하기 전에 중요한 뱅크를 JSON 파일로 내보내 필요시 복원할 수 있도록 합니다.