FAQ

흔한 질문 빠른 답변. 더 깊은 문서는 Concepts와 SDKs 참조.

memgen이 내 챗 LLM을 호출하나요?

아니요. memgen은 메모리 저장·검색만 합니다. 당신의 앱 코드가 OpenAI / Claude / Gemini / Ollama 등을 호출하면서 가져온 메모리를 컨텍스트로 씁니다. memgen 내부 LLM은 추출(대화 턴을 구조화 필드로 변환)에만 사용.

add()와 extract()의 차이는?

add()는 fire-and-forget: 추출은 백그라운드에서 일어나고 새 row IDs만 받습니다. extract()는 추출 완료까지 대기하고 구조화 형태를 즉시 반환. store=True로 저장도 함께. 채팅 루프엔 add(), 저장 전 검사·모더레이션엔 extract().

내 도메인에 맞게 추출 동작을 커스터마이즈하려면?

client.project.update(project_id=..., extraction_policy='자연어 가이드라인', label_taxonomy=[...]) 호출. 프로젝트당 한 번 설정하면 이후 모든 add/extract 호출이 이 설정을 사용. 예시는 Quickstart 참조.

레이어드 메모리란? core와 extensions 차이는?

core는 모든 메모리에 따라오는 범용 추출: summary, entities, tags, key_facts, importance, timestamp. extensions는 extract()의 extension 인자로 opt-in하는 도메인별 narrative 필드. extensions 없이도 core만 자동으로 옵니다.

user_id vs agent_id vs run_id — 어느 걸 쓸까?

user_id = 영속 최종 사용자 식별자. agent_id = AI 에이전트 정체성. run_id = 일시적 세션 (티켓, 회의, 여행 계획). app_id = 앱 컨텍스트 (mobile, web, slack). 독립적 차원이라 add에 일부만 전달, search에 일부로 필터 가능.

자체 인프라에서 memgen을 돌릴 수 있나요?

네. 풀 Docker Compose 스택이 오픈되어 있습니다. Postgres / Redis / Qdrant / RabbitMQ / FastAPI 백엔드 / Next.js 프런트엔드 / memory-engine GPU 서비스. SDK의 base_url로 가리키면 끝.

어떤 임베딩 모델을 쓰나요?

설정 가능. 운영 기본은 GPU 서빙 (4096차원, 예: NVIDIA Llama Nemotron Embed). 개발 폴백은 all-MiniLM-L6-v2 (384차원, CPU). memory-engine 서비스의 EMBEDDING_BACKEND env 변수로 선택.

추출에는 어떤 LLM이 쓰이나요?

배포별로 설정. 기본은 self-hosted에서 Ollama qwen3:30b-a3b, SaaS 운영에선 Gemini Flash. OLLAMA_CHAT_MODEL / LLM_BACKEND env로 전환.

mg- prefix는 뭘 의미하나요?

memgen API 키 식별자 (로그에서 알아보기 쉽도록). 키는 프로젝트 스코프 + bcrypt 해시 저장. 인증은 해시 비교 사용; prefix는 표시용일 뿐.

프로젝트 간 데이터 격리가 되나요?

네. 각 프로젝트마다 자체 Qdrant collection (memgen_<project_id>) + 모든 DB 쿼리가 API 키 인증으로 프로젝트 스코프. 프로젝트 간 누수 없음.

메모리를 삭제하면 어떻게 되나요?

Soft delete: row가 is_deleted=true로 표시되고 벡터 검색에서 제외. 히스토리 엔트리는 감사용 보존. delete_all(user_id=...)로 한 사용자 전체 메모리 GDPR 삭제 가능.

내 데이터가 third-party LLM 공급자로 전송되나요?

그렇게 구성한 경우만. Ollama로 self-hosted 시 모든 데이터가 당신 GPU에 머무름. SaaS 운영은 Google Gemini Flash 사용. env 설정으로 자체 공급자 가리킬 수 있음.

mem0에서 어떻게 마이그레이션하나요?

Migration 페이지 참조. SDK 호출 형태가 의도적으로 호환 — 보통 3줄 변경 (import + base_url + custom_instructions → extraction_policy 리네임).