AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB 와 Mem0통합

시간이 지남에 따라 대화에서 사실을 추출, 저장, 검색하는 AI 에이전트 및 어시스턴트를 위한 오픈소스 메모리 계층인 Mem 과 MongoDB 통합할 수 있습니다.00 MongoDB 벡터 저장 로 사용하도록 Mem 을 구성하면 Mem0 는 MongoDB 컬렉션에 에이전트 메모리를 유지합니다. 시맨틱 검색에는 MongoDB Vector Search를 사용하고 전체 텍스트 키워드 검색에는 MongoDB Search를 사용합니다.

MongoDB 사용하도록 Mem 을 구성하는 튜토리얼을 완료하려면0 MongoDB Mem0 통합 시작하기를 참조하세요.

Mem0 에는 Python v3.10 이상 및 PyMongo v4.13.2 이상이 필요합니다. 최신 Mem0 및 PyMongo 버전을 설치하려면 다음 명령을 실행 .

pip install mem0ai pymongo

MongoDB Mem0 벡터 저장 로 사용하려면 vector_store 사전의 provider 키를 mongodb로 설정하는 구성 사전을 Memory.from_config()에 전달합니다.

Basic initialization 탭 선택하여 기본 MongoDB 및 Mem0 구성 예시 보거나 Custom configuration 탭 선택하여 사용자 지정 설정으로 통합을 구성하는 방법을 확인합니다.

벡터 저장 초기화하려면 MongoDB 연결 문자열, 데이터베이스 이름, 컬렉션 이름, 임베딩 모델이 생성하는 차원 수를 지정합니다. 다음 예시 에서는 이러한 키를 vector_store.config 사전에 설정합니다.

import os
from mem0 import Memory
config = {
"vector_store": {
"provider": "mongodb",
"config": {
"mongo_uri": os.environ["MONGODB_URI"],
"db_name": "mem0_db",
"collection_name": "agent_memory",
"embedding_model_dims": 1536,
},
}
}
m = Memory.from_config(config)

구성 사전은 llmembedder 키도 허용하며, 이를 사용하여 기본값 OpenAI 모델을 Mem0이 지원하는 제공자 로 바꿀 수 있습니다. 다음 예시 이러한 선택적 키를 설정합니다.

import os
from mem0 import Memory
config = {
"llm": {
"provider": "openai",
"config": {
"model": "gpt-4o-mini",
"temperature": 0.1,
"max_tokens": 2000,
},
},
"embedder": {
"provider": "openai",
"config": {
"model": "text-embedding-3-small",
"embedding_dims": 1536,
},
},
"vector_store": {
"provider": "mongodb",
"config": {
"mongo_uri": os.environ["MONGODB_URI"],
"db_name": "mem0_db",
"collection_name": "agent_memory",
"embedding_model_dims": 1536,
},
},
"history_db_path": os.path.expanduser("~/.mem0/history.db"),
}
m = Memory.from_config(config)

vector_store.config 사전의 embedding_model_dims 키 값은 구성된 임베더가 생성하는 차원 수와 일치해야 합니다.

Memory.from_config() 메서드를 처음 호출할 때 대상 컬렉션 아직 존재하지 않는 경우 Mem0이 대상 컬렉션을 생성하고 컬렉션 에 MongoDB Vector Search 인덱스 와 MongoDB Search 인덱스 생성합니다. 이러한 인덱스는 비동기적으로 빌드 때문에 인덱스 빌드 완료될 때까지 검색에서 빈 결과가 반환될 수 있습니다.

이 키를 사용하여 벡터 저장 구성합니다.

provider 키를 mongodb로 설정하다 하면 Mem0이 vector_store 사전 내에 중첩된 config 사전에서 MongoDB 설정을 읽습니다. 해당 사전은 다음 키를 허용합니다. 각 키는 선택 사항이며 지정된 기본값 으로 돌아오지만, 로컬 배포가 아닌 다른 배포서버 에 연결하려면 mongo_uri를 설정하다 해야 합니다.

필요성
설명

mongo_uri

옵션

MongoDB deployment 에 대한 연결 문자열 . 기본값은 mongodb://localhost:27017 입니다. 연결 문자열 찾는 방법에 대해 자세히 학습 클라이언트 라이브러리를 통해 클러스터에 연결하기를 참조하세요.

db_name

옵션

메모리 컬렉션 보유하는 데이터베이스 의 이름입니다. 기본값은 mem0_db입니다. 데이터베이스가 아직 존재하지 않는 경우 Mem0이(가) 데이터베이스 생성합니다.

collection_name

옵션

메모리 문서를 저장하는 컬렉션 의 이름입니다. 기본값은 입니다.mem0 0 컬렉션 생성합니다.

embedding_model_dims

옵션

임베딩 벡터의 차원 수입니다. 기본값은 1536입니다. 이 값은 구성된 임베더가 생성하는 차원 수와 일치해야 합니다.

이 섹션에서는 Memory 클래스에서 제공하는 메서드에 대해 설명합니다. 각 메서드는 vector_store.config 사전에서 구성한 컬렉션 에서 작동합니다.

메서드 범위를 특정 사용자, 에이전트 또는 대화 실행 으로 지정하려면 user_id, agent_id 또는 run_id 키 중 하나 이상이 포함된 filters 사전을 전달합니다.

add() 메서드는 대화에서 사실을 추출하여 컬렉션 에 메모리 문서로 씁니다. 엔터티에 대해 의미적으로 동일한 메모리가 이미 존재하는 경우 Mem0 은 중복 문서 생성하는 대신 해당 메모리를 업데이트합니다.

다음 예시 대화를 add() 메서드에 전달하고 결과 메모리의 범위를 특정 사용자로 지정합니다.

messages = [
{"role": "user", "content": "I'm moving to Berlin next month."},
{"role": "assistant", "content": "I'll remember that you're relocating to Berlin."},
]
result = m.add(messages, user_id="alice")
print(result)
{'results': [{'id': '...', 'memory': 'User is moving to Berlin around September 2026.', 'event': 'ADD'}]}

이 매개변수를 사용하여 Mem0이 메모리를 저장하는 방법을 구성합니다.

Parameter
필요성
설명

messages

필수 사항

대화는 {"role": ..., "content": ...} 사전 목록 또는 문자열로 사실을 추출합니다.

user_id

조건부

메모리가 속한 사용자의 식별자입니다. user_id, agent_id 또는 run_id 키 중 하나 이상을 제공해야 합니다.

agent_id

조건부

메모리가 속한 에이전트 의 식별자입니다. user_id 또는 run_id 값을 제공하지 않는 경우 필수입니다.

run_id

조건부

특정 대화 실행 또는 세션의 식별자입니다. user_id 또는 agent_id 값을 제공하지 않는 경우 필수입니다.

metadata

옵션

이 호출이 기록하는 모든 메모리 문서 에 첨부할 키-값 쌍입니다. search() 메서드의 filters 매개변수를 사용하여 이러한 값을 쿼리 할 수 있습니다.

expiration_date

옵션

Mem0이 결과에서 메모리를 제외하는 날짜입니다.

infer

옵션

Mem0이(가) LLM을 사용하여 불연속적인 팩트를 저장하기 전에 추출하는지 여부입니다. 기본값은 True입니다. False인 경우 Mem0은 원시 메시지 콘텐츠를 저장합니다.

memory_type

옵션

저장 메모리의 유형입니다.

prompt

옵션

기본값 팩트 추출 템플릿을 재정의하는 사용자 지정 추출 프롬프트입니다.

get() 메서드는 벡터 검색 실행 하지 않고 ID 값으로 단일 메모리 문서 조회합니다.

다음 예시 ID 로 메모리를 직접 조회합니다.

memory = m.get(memory_id="<memory-id>")
print(memory)
{'id': '...', 'memory': 'User is moving to Berlin around September 2026.',
'hash': '...', 'metadata': None, 'score': None, 'created_at': '...',
'updated_at': '...', 'user_id': 'alice', 'attributed_to': 'user'}

memory_id 매개변수는 필수이며 조회 할 메모리 문서 의 id 값을 허용합니다. 해당 ID 가진 메모리가 없는 경우 get() 메서드는 None을 반환합니다.

search() 메서드는 MongoDB Vector Search 인덱스 대해 시맨틱 검색 실행하고 쿼리 문자열과 가장 관련성이 높은 메모리를 반환합니다.

다음 예시 특정 사용자의 기억에서 가장 관련성이 높은 5개의 결과를 검색합니다.

results = m.search(
query="Where does Alice live?",
filters={"user_id": "alice"},
top_k=5,
)
for mem in results["results"]:
print(mem["memory"], "- score:", mem["score"])
User is moving to Berlin around September 2026. - score: 0.7043201923370361

이 매개변수를 사용하여 검색 쿼리 구성합니다.

Parameter
필요성
설명

query

필수 사항

Mem0이 검색 임베딩을 생성하는 데 사용하는 자연어 쿼리 입니다.

filters

옵션

시맨틱 쿼리 와 함께 적용 할 필터하다 조건입니다. user_id, agent_id 또는 run_id 키 중 하나 이상을 포함해야 합니다. 비교 연산자, 목록 연산자, 문자열 연산자, AND, OR, NOT 논리 연산자를 지원합니다.

top_k

옵션

반환할 최대 결과 수입니다. 기본값은 20입니다.

threshold

옵션

메모리가 결과에 표시되기 위해 충족해야 하는 최소 관련성 점수입니다. 기본값은 0.1입니다.

rerank

옵션

Mem0이 결과를 반환하기 전에 결과의 순위를 재지정할지 여부입니다. 기본값은 False입니다.

explain

옵션

각 결과에 대해 score_details 분석을 포함할지 여부입니다. 기본값은 False입니다.

reference_date

옵션

Mem0이 쿼리 의 상대 시간 표현식을 확인하는 데 사용하는 날짜입니다.

show_expired

옵션

expiration_date이(가) 지난 메모리를 포함할지 여부입니다. 기본값은 False입니다.

get_all() 메서드는 시맨틱 검색 실행 하지 않고 지정된 엔터티에 대해 저장된 메모리 문서를 반환합니다. 이 메서드를 사용하여 엔터티의 전체 메모리 기록을 표시합니다.

다음 예시 특정 사용자에 대한 모든 메모리를 반환하고 인쇄합니다.

all_memories = m.get_all(filters={"user_id": "alice"})
for mem in all_memories["results"]:
print(mem["id"], mem["memory"])
<id> User is moving to Berlin around September 2026.

이 매개변수를 사용하여 Mem0이 반환하는 메모리를 구성합니다.

Parameter
필요성
설명

filters

옵션

반환할 메모리를 식별하는 필터하다 조건입니다. user_id, agent_id 또는 run_id 중 하나 이상을 포함해야 합니다.

top_k

옵션

반환할 문서의 최대 개수. 기본값은 20입니다.

show_expired

옵션

expiration_date이(가) 지난 메모리를 포함할지 여부입니다. 기본값은 False입니다.

update() 메서드는 기존 메모리 문서 의 텍스트를 대체합니다. Mem0은 새 텍스트에서 임베딩을 다시 계산하고 문서 를 제자리에서 업데이트합니다.

다음 예시 기존 메모리의 텍스트를 대체합니다.

m.update(memory_id="<memory-id>", text="Alice relocated to Berlin in July 2025.")

이 매개변수를 사용하여 업데이트 구성합니다.

Parameter
필요성
설명

memory_id

필수 사항

업데이트 할 메모리 문서 의 id 값입니다.

text

옵션

메모리의 대체 텍스트입니다. Mem0은 이 텍스트에 대한 새 임베딩을 계산하고 저장합니다.

metadata

옵션

메모리 문서 의 대체 메타데이터 입니다.

expiration_date

옵션

Mem0이 결과에서 메모리를 제외하는 날짜입니다.

delete() 메서드는 컬렉션 에서 단일 메모리 문서 삭제합니다.

다음 예시 ID 로 메모리를 삭제합니다.

m.delete(memory_id="<memory-id>")

memory_id 매개변수는 필수이며 삭제 메모리 문서 의 id 값을 허용합니다.

delete_all() 메서드는 지정된 엔터티에 대한 모든 메모리 문서를 컬렉션 에서 삭제합니다.

다음 예시 특정 사용자에 대한 모든 메모리를 삭제합니다:

m.delete_all(user_id="alice")

이 매개변수를 사용하여 Mem0이 삭제할 메모리를 구성합니다.

Parameter
필요성
설명

user_id

옵션

이 사용자에 대한 모든 메모리를 삭제합니다. user_id, agent_id 또는 run_id 중 하나 이상을 제공해야 합니다.

agent_id

옵션

이 에이전트 에 대한 모든 메모리를 삭제합니다.

run_id

옵션

이 실행 또는 세션에 대한 모든 메모리를 삭제합니다.

history() 메서드는 텍스트의 각 버전과 이벤트 유형을 포함하여 단일 메모리에 대한 편집 기록을 반환합니다. Mem0은 이 기록을 MongoDB 가 아닌 로컬 SQLite 데이터베이스 에 저장합니다. Mem0 이 데이터베이스 기록하는 위치를 변경하려면 구성 사전에서 history_db_path 키를 설정하다 .

다음 예시 메모리의 편집 기록을 조회하고 인쇄합니다.

history = m.history(memory_id="<memory-id>")
for entry in history:
print(entry["event"], entry["old_memory"], entry["new_memory"])
ADD None User is moving to Berlin around September 2026.
UPDATE User is moving to Berlin around September 2026. Alice relocated to Berlin in July 2025.

memory_id 매개변수는 필수이며 기록을 조회 하려는 메모리 문서 의 id 값을 허용합니다.

reset() 메서드는 다음 작업을 수행합니다.

  • MongoDB 컬렉션 과 해당 MongoDB Vector Search 및 MongoDB Search 인덱스를 삭제합니다.

  • 로컬 기록 데이터베이스 재설정

  • 컬렉션 과 해당 인덱스를 처음부터 다시 생성합니다.

delete_all() 메서드를 사용하여 한 번에 하나의 엔터티를 삭제 하는 대신 이 메서드를 사용하여 모든 메모리를 지웁니다.

m.reset()

reset() 어떤 매개변수도 허용하지 않고 Mem0이 이 Memory 인스턴스 통해 저장한 모든 메모리를 삭제합니다.

close() 메서드는 Mem0이 기록 데이터베이스 에 사용하는 로컬 SQLite 연결을 해제합니다. 이 방법은 MongoDB 연결에 영향을 주지 않습니다.

m.close()

close() 어떤 매개변수도 허용하지 않습니다. Mem0은 Memory 인스턴스 컨텍스트 관리자로 사용하는 경우 자동으로 호출합니다.

Mem0 은(는) 처음 연결될 때 컬렉션 에 다음과 같은 인덱스를 생성합니다. 이러한 인덱스를 수동으로 생성하거나 검사할 수도 있습니다.자세한 학습 은 MongoDB 벡터 검색 인덱스 생성을 참조하세요.

MongoDB Vector Search 인덱스 이름은 <collectionName>_vector_index이며, 여기서 <collectionName>은 메모리 문서를 저장하는 컬렉션 의 이름입니다. 인덱스 다음 정의를 사용합니다.

{
"fields": [
{
"type": "vector",
"path": "embedding",
"numDimensions": 1536,
"similarity": "cosine"
}
]
}

MongoDB Search 인덱스 이름은 <collection-name>_text_search_index 이며 다음 정의를 사용합니다.

{
"mappings": {
"dynamic": false,
"fields": {
"payload": {
"type": "document",
"fields": {
"data": { "type": "string" },
"text_lemmatized": { "type": "string" }
}
}
}
}
}

Mem0는 MongoDB Search 인덱스 사용하여 search()의 시맨틱 결과를 보완하는 키워드 검색을 실행 . 인덱스 존재하지 않으면 Mem0은 경고를 기록하고 의미론적 결과만 반환합니다.

MongoDB 에서 Mem0을 사용하는 방법에 대해 자세히 학습 다음을 참조하세요.