Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

사용자 메모리

LibreChat의 모든 채팅 요청 시 실행되는 사용자 메모리를 위한 키/값 저장소

개요

LibreChat의 User Memory는 대화 전반에 걸쳐 사용자별 정보를 유지하는 **키/값 저장소(key/value store)**입니다. 전용 메모리 에이전트가 모든 채팅 요청의 시작 부분에서 실행되며, 이 저장소를 읽고 기록하여 주요 AI 응답에 개인화된 컨텍스트를 제공합니다.

키/값 저장소, 대화 메모리 아님

이는 전체 대화 기록에 대한 **의미론적 기억(semantic memory)**이 아닙니다. 과거 대화를 인덱싱하거나, 임베딩하거나, 검색하지 않습니다. 대신, 각 요청에 컨텍스트로 주입되는 구조화된 키/값 쌍(예: user_preferences, learned_facts) 세트를 유지합니다. 이를 AI가 모든 응답 전에 읽는 지속적인 메모장이라고 생각하면 됩니다.

단일 대화 내의 이전 메시지에 대한 맥락을 위해, LibreChat은 이미 표준 메시지 기록 창을 사용하고 있으며, 이는 이 기능과는 별개입니다.

⚠️ 구성 필요

Memory 기능이 작동하려면 librechat.yaml 파일에서 명시적으로 구성해야 합니다. 기본적으로 활성화되어 있지 않습니다.

주요 기능

  • 모든 요청마다 실행: 메모리 에이전트는 각 채팅 요청이 시작될 때 실행되어, 저장된 컨텍스트를 항상 사용할 수 있도록 보장합니다.
  • Key/Value Storage: 정보는 원시 대화 로그가 아닌 구조화된 키/값 쌍으로 저장됩니다.
  • 수동 항목: 사용자는 메모리 항목을 직접 추가, 수정 또는 삭제할 수 있으며, AI가 무엇을 기억할지에 대한 완전한 제어권을 가집니다.
  • 사용자 제어: 활성화되면 사용자는 개별 채팅에 대해 메모리 기능을 켜거나 끌 수 있습니다.
  • 사용자 지정 키(Customizable Keys): validKeys를 사용하여 저장할 수 있는 정보의 범주를 제한합니다.
  • 토큰 관리: 비용을 제어하기 위해 메모리 사용량 제한을 설정하세요
  • Agent Integration: AI 에이전트를 사용하여 기억할 내용을 지능적으로 관리하세요

구성

메모리 기능을 활성화하려면 librechat.yaml 파일에 memory 구성을 추가해야 합니다:

version: 1.3.5
cache: true

memory:
  disabled: false # Set to true to completely disable memory
  personalize: true # Gives users the ability to toggle memory on/off, true by default
  tokenLimit: 2000 # Maximum tokens for memory storage
  maxInputTokens: 12000 # Maximum recent-chat tokens sent to the memory agent
  messageWindowSize: 5 # Number of recent messages to consider
  agent:
    provider: 'openAI'
    model: 'gpt-4'

provider 필드는 Model Spec Guide에 정의된 허용된 값과 일치해야 합니다.

참고: 사용자 지정 endpoint를 사용하는 경우, endpoint 값은 정의된 사용자 지정 endpoint 이름과 정확히 일치해야 합니다.

자세한 구성 옵션은 Memory Configuration Guide를 참조하세요.

작동 방식

Memory Agent 실행

메모리 에이전트는 메모리가 활성화된 경우 모든 채팅 요청 시 실행됩니다. 메인 채팅 응답과 동시에 실행되며, 메인 응답이 시작되기 전에 시작되어 메인 요청이 완료된 후 최대 3초까지 지속됩니다.

즉, 귀하가 보내는 모든 메시지는 메모리 에이전트가 다음을 수행하도록 트리거합니다:

  1. 현재 키/값 저장소를 읽고 관련 항목을 컨텍스트로 주입합니다

  2. 분석: 저장하거나 업데이트할 가치가 있는 정보를 위해 최근 메시지 창을 분석합니다.

  3. Write any new or modified entries back to the store

1. Key/Value Storage

Memory 항목은 키/값 쌍으로 저장됩니다. Memory가 활성화되면 시스템은 다음과 같은 항목을 저장할 수 있습니다:

  • 사용자 환경 설정 (대화 스타일, 관심 주제)
  • 사용자가 명시적으로 공유한 중요한 사실
  • 언급된 진행 중인 프로젝트 또는 작업
  • validKeys를 통해 정의하는 모든 카테고리

사용자는 인터페이스를 통해 메모 항목을 수동으로 생성, 편집 및 삭제할 수도 있으며, 이를 통해 AI가 자신에 대해 알고 있는 내용을 직접 제어할 수 있습니다.

2. Context Window

messageWindowSize 매개변수는 메모리 업데이트를 위해 분석할 최근 메시지 수를 결정합니다. 이는 메모리 에이전트가 어떤 정보를 키/값 저장소에 저장하거나 업데이트할 가치가 있는지 결정하는 데 도움을 줍니다.

maxInputTokens 매개변수는 추출 전 자동 메모리 에이전트로 전송되는 최근 대화 텍스트의 상한선을 설정합니다. 선택된 메시지 창이 여전히 너무 큰 경우, LibreChat은 메모리 에이전트를 호출하기 전에 가장 최신 컨텍스트를 유지하고 이전 대화 내용을 생략합니다.

3. 사용자 제어

personalizetrue로 설정된 경우:

  • 사용자는 채팅 인터페이스에서 메모리 토글을 볼 수 있습니다.
  • 개별 대화에 대해 메모리를 활성화/비활성화할 수 있습니다.
  • Memory 설정은 세션 간에 유지됩니다

4. 유효한 키 (Valid Keys)

validKeys를 지정하여 저장되는 정보의 범주를 제한할 수 있습니다:

memory:
  validKeys:
    - 'user_preferences'
    - 'conversation_context'
    - 'learned_facts'
    - 'personal_information'

모범 사례

1. 토큰 제한

기능과 비용의 균형을 맞추기 위해 적절한 토큰 제한을 설정하세요:

  • 더 높은 제한은 더 포괄적인 메모리를 허용합니다
  • 더 낮은 제한은 처리 비용을 절감합니다
  • 사용 패턴과 예산을 고려하세요

2. Custom Instructions

validKeys를 사용할 때는 메모리 에이전트에 대한 사용자 지정 지침을 제공하세요:

memory:
  agent:
    provider: 'openAI'
    model: 'gpt-4'
    instructions: |
      Store information only in the specified validKeys categories.
      Focus on explicitly stated preferences and important facts.
      Delete outdated or corrected information promptly.

3. 개인정보 보호 고려 사항

  • Memory는 대화 전반에 걸쳐 사용자 정보를 저장합니다.
  • 사용자가 어떤 정보가 저장되는지 이해하도록 하십시오
  • 데이터 보존 정책 구현을 고려하세요
  • 메모리 사용량에 대한 명확한 문서를 제공하세요

예시

기본 구성

기본 설정으로 메모리 활성화:

memory:
  tokenLimit: 2000
  maxInputTokens: 12000
  agent:
    provider: 'openAI'
    model: 'gpt-4.1-mini'

고급 구성

모든 옵션을 포함한 전체 구성:

memory:
  disabled: false
  validKeys: ['preferences', 'context', 'facts']
  tokenLimit: 3000
  maxInputTokens: 12000
  personalize: true
  messageWindowSize: 10
  agent:
    provider: 'anthropic'
    model: 'claude-3-opus-20240229'
    instructions: 'Remember only explicitly stated preferences and key facts.'
    model_parameters:
      temperature: 0.3

공급자별 유효한 모델 매개변수에 대해서는 Model Spec Preset Fields를 참조하세요.

사전 정의된 에이전트 사용하기

ID를 사용하여 기존 에이전트 참조:

memory:
  agent:
    id: 'memory-specialist-001'

메모리가 포함된 사용자 지정 endpoint

Memory는 사용자 지정 헤더 및 환경 변수를 포함한 사용자 지정 endpoint를 완벽하게 지원합니다. 사용자 지정 endpoint를 사용할 때, 헤더 플레이스홀더와 환경 변수는 Memory 처리 과정에서 적절하게 해석됩니다.


endpoints:
    custom:
        - name: 'Custom Memory Endpoint'
           apiKey: 'dummy'
           baseURL: 'https://api.gateway.ai/v1'
           headers:
             x-gateway-api-key: '${GATEWAY_API_KEY}'
             x-gateway-virtual-key: '${GATEWAY_OPENAI_VIRTUAL_KEY}'
             X-User-Identifier: '{{LIBRECHAT_USER_EMAIL}}'
             X-Application-Identifier: 'LibreChat - Test'
             api-key: '${TEST_CUSTOM_API_KEY}'
           models:
             default:
               - 'gpt-4o-mini'
               - 'gpt-4o'
             fetch: false

memory:
  disabled: false
  tokenLimit: 3000
  maxInputTokens: 12000
  personalize: true
  messageWindowSize: 10
  agent:
    provider: 'Custom Memory Endpoint'
    model: 'gpt-4o-mini'

문제 해결

메모리가 작동하지 않음

  1. librechat.yaml에서 메모리가 구성되었는지 확인하세요
  2. disabledfalse로 설정되어 있는지 확인하세요
  3. 구성된 에이전트/모델을 사용할 수 있는지 확인하세요
  4. 사용자가 채팅 인터페이스에서 메모리(memory)를 활성화했는지 확인하세요
  5. 사용자 지정 endpoint의 경우: provider 이름이 사용자 지정 endpoint name과 정확히 일치하는지 확인하세요.

높은 토큰 사용량

  1. tokenLimit를 줄여 비용을 제어하세요
  2. maxInputTokens를 줄여 메모리 에이전트로 전송되는 최근 대화의 양을 제한하세요.
  3. messageWindowSize를 줄여 더 적은 수의 메시지를 분석하도록 합니다.
  4. validKeys를 사용하여 저장되는 항목을 제한하세요
  5. 에이전트 지침 검토 및 최적화

일관되지 않은 메모리

  1. 사용자가 메모리 기능을 켜고 끄는지 확인하세요
  2. 토큰 제한이 초과되지 않았는지 확인하세요
  3. 일관된 에이전트 구성을 보장하세요
  4. 저장된 메모리의 충돌을 검토하세요

사용자 지정 endpoint 인증 문제

  1. .env 파일에 환경 변수가 올바르게 설정되었는지 확인하세요.
  2. 사용자 지정 헤더가 올바른 구문을 사용하는지 확인하세요(환경 변수에는 ${ENV_VAR}, 사용자 플레이스홀더에는 {{LIBRECHAT_USER_*}} 사용).
  3. 메모리로 테스트하기 전에 사용자 지정 endpoint가 일반 채팅 완료(chat completions)에서 작동하는지 확인하세요.
  4. 사용자 지정 endpoint API에서 발생하는 인증 오류에 대해 서버 로그를 검토하세요.

향후 개선 사항

현재 구현은 모든 채팅 요청에 대해 메모리 에이전트를 무조건적으로 실행합니다. 계획된 개선 사항은 다음과 같습니다:

  • 쓰기 작업을 위한 의미론적 트리거(Semantic Trigger for Writes): 사용자가 모델에게 무언가를 기억하도록 명시적으로 요청했을 때(예: "내가 Python을 선호한다는 것을 기억해줘")를 감지하여 해당 경우에만 메모리 쓰기 에이전트를 실행함으로써, 일상적인 메시지에 대한 불필요한 처리를 줄입니다.
  • Vector Similarity Recall: 모든 저장된 메모리 항목을 모든 요청에 주입하는 대신, 벡터 임베딩을 사용하여 현재 대화 맥락과 가장 관련성이 높은 항목만 검색함으로써 효율성과 관련성을 모두 향상시킵니다.
  • Agents - 맞춤형 AI 어시스턴트 구축
  • Presets - 대화 설정 저장
  • Fork Messages - 컨텍스트를 유지하면서 대화 분기하기

이 가이드는 어떤가요?