기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모범 사례
메모리 수명 주기 관리
단기 메모리에 TTL 사용 - 임시 정보를 자동으로 만료하도록 메모리 항목에 적절한 TTL 값을 설정합니다. 세션 컨텍스트의 경우 30분~24시간의 TTLs을 사용합니다. 장기 사용자 기본 설정의 경우 더 긴 TTLs 사용하거나 무기한 유지합니다.
메모리 감소 구현 - Mem0은 시간이 지남에 따라 관련 없는 정보를 제거하는 내장 감소 메커니즘을 제공합니다. 에이전트가 더 많은 상호 작용을 누적할 때 메모리 팽창을 방지하도록 구성합니다.
메모리 중복 제거 - 새 메모리를 저장하기 전에 벡터 유사성 검색을 사용하여 유사한 메모리가 이미 존재하는지 확인합니다. 중복을 생성하는 대신 기존 메모리를 업데이트합니다.
벡터 인덱스 구성
올바른 인덱스 유형 선택 - 정확한 검색이 가능한 작은 메모리 스토어(100,000개 미만 항목)에
FLAT사용합니다. 가장 가까운 근접 이웃 검색이 대규모로 더 나은 성능을 제공하는 대형 매장에HNSW사용합니다.적절한 차원 선택 - 임베딩 차원을 모델과 일치시킵니다. Amazon Titan Text Embeddings V2는 1024차원 벡터를 생성합니다. OpenAI의 text-embedding-3-small은 1536차원 벡터를 생성합니다.
COSINE 거리 지표 사용 - Amazon Titan 및 OpenAI와 같은 모델의 텍스트 임베딩의 경우 COSINE 거리는 일반적으로 의미론 유사성을 측정하는 데 가장 적합한 지표입니다.
다중 사용자 격리
사용자 ID로 메모리 범위 지정 - 메모리를 저장하고 검색할 때 사용자 간에 정보가 유출되지 않도록 항상
user_id파라미터를 포함합니다.효율적인 격리를 위해 TAG 필터 사용 - 벡터 인덱스를 쿼리할 때 KNN 검색을 수행하기 전에 TAG 필터(예:
@user_id:{user_123})를 사용하여 사용자별로 결과를 사전 필터링합니다. 이는 단일 원자성 작업으로 실행되어 격리와 성능을 모두 제공합니다.# Example: TAG-filtered vector search for user isolation results = client.execute_command( "FT.SEARCH", "agent_memory", f"@user_id:{{{user_id}}}=>[KNN 5 @embedding $query_vec]", "PARAMS", "2", "query_vec", query_vec, "DIALECT", "2", )
대규모 메모리 관리
최대 정책 설정 - 클러스터가 메모리 제한
maxmemory-policy allkeys-lru에 도달하면 least-recently-used 메모리 항목을 자동으로 제거하도록 ElastiCache 클러스터에서를 구성합니다.메모리 사용량 모니터링 - Amazon CloudWatch 지표를 사용하여 메모리 사용률, 캐시 적중률 및 벡터 검색 지연 시간을 추적합니다. 메모리 사용량이 많은 경보를 설정하여 용량을 사전에 관리합니다.
용량 계획 - 각 메모리 항목에는 일반적으로 약 4~6KB(임베딩 차원 × 4바이트 + 메타데이터)가 필요합니다. 1GB ElastiCache 인스턴스는 임베딩 크기 및 메타데이터에 따라 약 170,000~250,000개의 메모리 항목을 저장할 수 있습니다.