hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Enables GitHub Copilot to access the persistent knowledge graph memory system through the model context protocol.
Uses Neo4j as the storage backend for the knowledge graph, providing unified graph storage and vector search capabilities.
Leverages OpenAI's embedding models for semantic search capabilities, supporting multiple models including text-embedding-3-small/large.
Memento MCP: LLM을 위한 지식 그래프 메모리 시스템
의미 검색, 맥락적 회상, 시간 인식 기능을 갖춘 확장 가능하고 고성능의 지식 그래프 메모리 시스템입니다. 모델 맥락 프로토콜(예: Claude Desktop, Cursor, Github Copilot)을 지원하는 모든 LLM 클라이언트에 복원력, 적응성, 지속성을 갖춘 장기 온톨로지 메모리를 제공합니다.
핵심 개념
엔티티
엔티티는 지식 그래프의 주요 노드입니다. 각 엔티티는 다음을 갖습니다.
- 고유한 이름(식별자)
- 엔터티 유형(예: "사람", "조직", "이벤트")
- 관찰 목록
- 벡터 임베딩(의미 검색용)
- 전체 버전 기록
예:
지엑스피1
처지
관계는 향상된 속성을 가진 엔터티 간의 방향성 연결을 정의합니다.
- 강도 지표(0.0-1.0)
- 신뢰 수준(0.0-1.0)
- 풍부한 메타데이터(소스, 타임스탬프, 태그)
- 버전 기록을 통한 시간 인식
- 시간 기반 신뢰도 감소
예:
스토리지 백엔드
Memento MCP는 Neo4j를 스토리지 백엔드로 사용하여 그래프 스토리지와 벡터 검색 기능을 위한 통합 솔루션을 제공합니다.
왜 Neo4j인가?
- 통합 스토리지 : 그래프와 벡터 스토리지를 단일 데이터베이스로 통합합니다.
- 네이티브 그래프 작업 : 그래프 탐색 및 쿼리를 위해 특별히 구축됨
- 통합 벡터 검색 : Neo4j에 직접 내장된 임베딩에 대한 벡터 유사성 검색
- 확장성 : 대규모 지식 그래프로 더 나은 성능 제공
- 단순화된 아키텍처 : 모든 작업을 위한 단일 데이터베이스를 갖춘 깔끔한 디자인
필수 조건
- Neo4j 5.13+(벡터 검색 기능에 필요)
Neo4j 데스크톱 설정(권장)
Neo4j를 시작하는 가장 쉬운 방법은 Neo4j Desktop을 사용하는 것입니다.
- https://neo4j.com/download/ 에서 Neo4j Desktop을 다운로드하고 설치하세요.
- 새 프로젝트를 만듭니다
- 새로운 데이터베이스 추가
- 비밀번호를
memento_password
(또는 원하는 비밀번호)로 설정하세요. - 데이터베이스 시작
Neo4j 데이터베이스는 다음 위치에서 사용할 수 있습니다.
- Bolt URI :
bolt://127.0.0.1:7687
(드라이버 연결용) - HTTP :
http://127.0.0.1:7474
(Neo4j 브라우저 UI용) - 기본 자격 증명 : 사용자 이름:
neo4j
, 비밀번호:memento_password
(또는 사용자가 구성한 것)
Docker를 사용한 Neo4j 설정(대안)
또는 Docker Compose를 사용하여 Neo4j를 실행할 수 있습니다.
Docker를 사용하면 Neo4j 데이터베이스를 다음 위치에서 사용할 수 있습니다.
- Bolt URI :
bolt://127.0.0.1:7687
(드라이버 연결용) - HTTP :
http://127.0.0.1:7474
(Neo4j 브라우저 UI용) - 기본 자격 증명 : 사용자 이름:
neo4j
, 비밀번호:memento_password
데이터 지속성 및 관리
docker-compose.yml
파일의 Docker 볼륨 구성으로 인해 컨테이너를 다시 시작하거나 버전을 업그레이드해도 Neo4j 데이터는 그대로 유지됩니다.
이러한 매핑은 다음을 보장합니다.
/data
디렉토리(모든 데이터베이스 파일 포함)는 호스트의./neo4j-data
에 저장됩니다./logs
디렉토리는 호스트의./neo4j-logs
에 저장됩니다./import
디렉토리(데이터 파일을 가져오기 위한)는./neo4j-import
에 저장됩니다.
필요한 경우 docker-compose.yml
파일에서 이러한 경로를 수정하여 다른 위치에 데이터를 저장할 수 있습니다.
Neo4j 버전 업그레이드
데이터 손실 없이 Neo4j 에디션과 버전을 변경할 수 있습니다.
docker-compose.yml
에서 Neo4j 이미지 버전을 업데이트합니다.docker-compose down && docker-compose up -d neo4j
로 컨테이너를 다시 시작합니다.npm run neo4j:init
사용하여 스키마를 다시 초기화합니다.
볼륨 매핑이 동일하게 유지되는 한 이 프로세스에도 데이터가 유지됩니다.
데이터베이스 재설정 완료
Neo4j 데이터베이스를 완전히 재설정해야 하는 경우:
데이터 백업
Neo4j 데이터를 백업하려면 데이터 디렉토리를 복사하기만 하면 됩니다.
Neo4j CLI 유틸리티
Memento MCP에는 Neo4j 작업을 관리하기 위한 명령줄 유틸리티가 포함되어 있습니다.
연결 테스트
Neo4j 데이터베이스에 대한 연결을 테스트하세요.
스키마 초기화
일반적인 작동의 경우, Memento MCP가 데이터베이스에 연결될 때 Neo4j 스키마 초기화가 자동으로 수행됩니다. 일반적인 사용 시에는 수동 명령을 실행할 필요가 없습니다.
다음 명령은 개발, 테스트 또는 고급 사용자 지정 시나리오에만 필요합니다.
고급 기능
의미 검색
키워드만이 아닌 의미를 기반으로 의미적으로 관련된 엔터티를 찾으세요.
- 벡터 임베딩 : 엔터티는 OpenAI의 임베딩 모델을 사용하여 고차원 벡터 공간에 자동으로 인코딩됩니다.
- 코사인 유사성 : 용어가 다르더라도 관련 개념을 찾습니다.
- 구성 가능한 임계값 : 결과 관련성을 제어하기 위한 최소 유사도 점수 설정
- 크로스 모달 검색 : 설명 방식에 관계없이 관련 엔터티를 찾기 위해 텍스트가 포함된 쿼리
- 다중 모델 지원 : 여러 임베딩 모델과 호환(OpenAI text-embedding-3-small/large)
- 문맥적 검색 : 정확한 키워드 일치보다는 의미적 의미에 따라 정보를 검색합니다.
- 최적화된 기본값 : 정밀도와 재현율 간의 균형을 위해 조정된 매개변수(0.6 유사도 임계값, 하이브리드 검색 활성화)
- 하이브리드 검색 : 의미 검색과 키워드 검색을 결합하여 더욱 포괄적인 결과를 제공합니다.
- 적응형 검색 : 시스템은 쿼리 특성과 사용 가능한 데이터를 기반으로 벡터 전용, 키워드 전용 또는 하이브리드 검색 중에서 지능적으로 선택합니다.
- 성능 최적화 : 복원력을 위한 대체 메커니즘을 유지하면서 의미적 이해를 위한 벡터 검색을 우선시합니다.
- 쿼리 인식 처리 : 쿼리 복잡성 및 사용 가능한 엔터티 임베딩을 기반으로 검색 전략을 조정합니다.
시간 인식
특정 시점의 그래프 검색을 통해 엔터티 및 관계의 전체 기록을 추적합니다.
- 전체 버전 기록 : 엔터티 또는 관계에 대한 모든 변경 사항은 타임스탬프와 함께 보존됩니다.
- 특정 시점 쿼리 : 과거 어느 시점의 지식 그래프의 정확한 상태를 검색합니다.
- 변경 추적 : createdAt, updatedAt, validFrom 및 validTo 타임스탬프를 자동으로 기록합니다.
- 시간적 일관성 : 지식이 어떻게 진화했는지에 대한 역사적으로 정확한 관점을 유지합니다.
- 비파괴적 업데이트 : 업데이트는 기존 데이터를 덮어쓰는 대신 새 버전을 생성합니다.
- 시간 기반 필터링 : 시간 기준에 따라 그래프 요소 필터링
- 역사 탐구 : 시간이 지남에 따라 특정 정보가 어떻게 변했는지 조사합니다.
자신감 저하
관계는 구성 가능한 반감기에 따라 시간이 지남에 따라 자동으로 신뢰도가 감소합니다.
- 시간 기반 감소 : 관계에 대한 신뢰는 강화되지 않으면 시간이 지남에 따라 자연스럽게 감소합니다.
- 구성 가능한 반감기 : 정보가 얼마나 빨리 불확실해지는지 정의합니다(기본값: 30일)
- 최소 신뢰 수준 : 중요 정보의 과도한 붕괴를 방지하기 위한 임계값 설정
- 붕괴 메타데이터 : 각 관계에는 자세한 붕괴 계산 정보가 포함되어 있습니다.
- 비파괴적 : 원래 신뢰 값은 감소된 값과 함께 보존됩니다.
- 강화 학습 : 새로운 관찰을 통해 강화되면 관계가 자신감을 회복합니다.
- 참조 시간 유연성 : 과거 분석을 위해 임의의 참조 시간을 기반으로 감소를 계산합니다.
고급 메타데이터
사용자 정의 필드가 있는 엔터티와 관계 모두에 대한 풍부한 메타데이터 지원:
- 소스 추적 : 정보가 어디에서 유래되었는지 기록합니다(사용자 입력, 분석, 외부 소스)
- 신뢰 수준 : 확실성에 따라 관계에 신뢰 점수(0.0-1.0)를 할당합니다.
- 관계 강도 : 관계의 중요성 또는 강도를 나타냅니다(0.0-1.0)
- 시간 메타데이터 : 정보가 추가, 수정 또는 검증된 시점을 추적합니다.
- 사용자 정의 태그 : 분류 및 필터링을 위한 임의의 태그 추가
- 구조화된 데이터 : 메타데이터 필드 내에 복잡한 구조화된 데이터를 저장합니다.
- 쿼리 지원 : 메타데이터 속성을 기반으로 검색 및 필터링
- 확장 가능한 스키마 : 핵심 데이터 모델을 수정하지 않고 필요에 따라 사용자 정의 필드를 추가합니다.
MCP API 도구
다음 도구는 모델 컨텍스트 프로토콜을 통해 LLM 클라이언트 호스트에서 사용할 수 있습니다.
엔티티 관리
- 엔티티 생성
- 지식 그래프에 여러 개의 새 엔터티 만들기
- 입력:
entities
(객체 배열)- 각 객체에는 다음이 포함됩니다.
name
(문자열): 엔터티 식별자entityType
(문자열): 유형 분류observations
(문자열[]): 연관된 관찰
- 각 객체에는 다음이 포함됩니다.
- 관찰 추가
- 기존 엔터티에 새로운 관찰 추가
- 입력:
observations
(객체 배열)- 각 객체에는 다음이 포함됩니다.
entityName
(문자열): 대상 엔티티contents
(문자열[]): 추가할 새로운 관찰
- 각 객체에는 다음이 포함됩니다.
- 엔티티 삭제
- 엔터티와 해당 관계 제거
- 입력:
entityNames
(string[])
- 관찰 삭제
- 엔터티에서 특정 관찰을 제거합니다.
- 입력:
deletions
(객체 배열)- 각 객체에는 다음이 포함됩니다.
entityName
(문자열): 대상 엔티티observations
(string[]): 제거할 관찰
- 각 객체에는 다음이 포함됩니다.
관계 관리
- 관계 생성
- 향상된 속성을 사용하여 엔터티 간에 여러 개의 새로운 관계를 생성합니다.
- 입력:
relations
(객체 배열)- 각 객체에는 다음이 포함됩니다.
from
(문자열): 소스 엔터티 이름to
(문자열): 대상 엔터티 이름relationType
(문자열): 관계 유형strength
(숫자, 선택 사항): 관계 강도(0.0-1.0)confidence
(숫자, 선택 사항): 신뢰 수준(0.0-1.0)metadata
(객체, 선택 사항): 사용자 정의 메타데이터 필드
- 각 객체에는 다음이 포함됩니다.
- get_relation
- 향상된 속성을 통해 특정 관계를 얻으세요
- 입력:
from
(문자열): 소스 엔터티 이름to
(문자열): 대상 엔터티 이름relationType
(문자열): 관계 유형
- 업데이트_관계
- 향상된 속성으로 기존 관계 업데이트
- 입력:
relation
(객체):- 포함 내용:
from
(문자열): 소스 엔터티 이름to
(문자열): 대상 엔터티 이름relationType
(문자열): 관계 유형strength
(숫자, 선택 사항): 관계 강도(0.0-1.0)confidence
(숫자, 선택 사항): 신뢰 수준(0.0-1.0)metadata
(객체, 선택 사항): 사용자 정의 메타데이터 필드
- 포함 내용:
- 관계 삭제
- 그래프에서 특정 관계 제거
- 입력:
relations
(객체 배열)- 각 객체에는 다음이 포함됩니다.
from
(문자열): 소스 엔터티 이름to
(문자열): 대상 엔터티 이름relationType
(문자열): 관계 유형
- 각 객체에는 다음이 포함됩니다.
그래프 연산
- 읽기_그래프
- 지식 그래프 전체를 읽어보세요
- 입력이 필요하지 않습니다
- 검색_노드
- 쿼리 기반 노드 검색
- 입력:
query
(문자열)
- 오픈 노드
- 이름으로 특정 노드 검색
- 입력:
names
(string[])
의미 검색
- 의미론적 검색
- 벡터 임베딩과 유사성을 사용하여 의미적으로 엔터티 검색
- 입력:
query
(문자열): 의미적으로 검색할 텍스트 쿼리limit
(숫자, 선택 사항): 반환할 최대 결과 수(기본값: 10)min_similarity
(숫자, 선택 사항): 최소 유사도 임계값(0.0-1.0, 기본값: 0.6)entity_types
(string[], 선택 사항): 엔티티 유형별로 결과 필터링hybrid_search
(부울, 선택 사항): 키워드 검색과 의미 검색을 결합합니다(기본값: true)semantic_weight
(숫자, 선택 사항): 하이브리드 검색에서 의미적 결과의 가중치(0.0-1.0, 기본값: 0.6)
- 특징:
- 쿼리 컨텍스트에 따라 최적의 검색 방법(벡터, 키워드 또는 하이브리드)을 지능적으로 선택합니다.
- 의미적 일치가 없는 쿼리를 대체 메커니즘을 통해 우아하게 처리합니다.
- 자동 최적화 결정으로 높은 성능 유지
- 엔티티 임베딩 가져오기
- 특정 엔터티에 대한 벡터 임베딩 가져오기
- 입력:
entity_name
(문자열): 임베딩을 가져올 엔티티의 이름
시간적 특징
- 엔티티 히스토리 가져오기
- 엔터티의 전체 버전 기록 가져오기
- 입력:
entityName
(문자열)
- get_relation_history
- 관계의 전체 버전 기록 가져오기
- 입력:
from
(문자열): 소스 엔터티 이름to
(문자열): 대상 엔터티 이름relationType
(문자열): 관계 유형
- 시간에 그래프 가져오기
- 특정 타임스탬프에서 그래프 상태를 가져옵니다.
- 입력:
timestamp
(숫자): Unix 타임스탬프(시대 이후 밀리초)
- 부패된 그래프 얻기
- 시간 감소 신뢰도 값을 사용하여 그래프 가져오기
- 입력:
options
(객체, 선택 사항):reference_time
(숫자): 감쇠 계산을 위한 참조 타임스탬프(epoch 이후 밀리초)decay_factor
(숫자): 선택적 붕괴 인자 재정의
구성
환경 변수
다음 환경 변수를 사용하여 Memento MCP를 구성하세요.
명령줄 옵션
Neo4j CLI 도구는 다음 옵션을 지원합니다.
임베딩 모델
사용 가능한 OpenAI 임베딩 모델:
text-embedding-3-small
: 효율적이고 비용 효율적(1536차원)text-embedding-3-large
: 정확도는 더 높고, 비용은 더 비쌈(3072차원)text-embedding-ada-002
: 레거시 모델(1536차원)
OpenAI API 구성
의미 검색을 사용하려면 OpenAI API 자격 증명을 구성해야 합니다.
- OpenAI 에서 API 키 받기
- 다음을 사용하여 환경을 구성하세요.
참고 : 테스트 환경에서 API 키가 제공되지 않으면 시스템은 임베딩 생성을 모의합니다. 하지만 통합 테스트에는 실제 임베딩을 사용하는 것이 좋습니다.
Claude Desktop과 통합
구성
claude_desktop_config.json
에 다음을 추가하세요:
또는 로컬 개발을 위해 다음을 사용할 수 있습니다.
중요 : 일관된 동작을 보장하려면 Claude Desktop 구성에서 항상 내장 모델을 명시적으로 지정하세요.
권장 시스템 프롬프트
Claude와 최적의 통합을 위해 시스템 프롬프트에 다음 명령문을 추가하세요.
의미 검색 테스트
구성이 완료되면 Claude는 자연어를 통해 의미 검색 기능에 액세스할 수 있습니다.
- 의미적 임베딩을 사용하여 엔터티를 생성하려면:Copy
- 의미적으로 검색하려면:Copy
- 특정 정보를 검색하려면:Copy
이 접근 방식의 장점은 사용자가 자연스럽게 상호 작용할 수 있고, LLM이 적절한 메모리 도구를 선택하고 사용하는 데 따르는 복잡성을 처리한다는 것입니다.
실제 세계 응용 프로그램
Memento의 적응형 검색 기능은 다음과 같은 실질적인 이점을 제공합니다.
- 다양한 쿼리 유형 : 사용자는 질문을 어떻게 표현해야 할지 걱정할 필요가 없습니다. 시스템은 다양한 쿼리 유형에 자동으로 적응합니다.
- 실패 회복력 : 의미적 일치가 사용 가능하지 않더라도 시스템은 사용자 개입 없이 대체 방법으로 대체될 수 있습니다.
- 성능 효율성 : 최적의 검색 방법을 지능적으로 선택함으로써 시스템은 각 쿼리에 대한 성능과 관련성의 균형을 맞춥니다.
- 향상된 컨텍스트 검색 : LLM 대화는 시스템이 복잡한 지식 그래프에서 관련 정보를 찾을 수 있으므로 더 나은 컨텍스트 검색의 이점을 얻습니다.
예를 들어, 사용자가 "머신러닝에 대해 무엇을 알고 계십니까?"라고 질문하면 시스템은 "머신러닝"을 명시적으로 언급하지 않더라도 개념적으로 관련된 항목(예: 신경망, 데이터 과학 또는 특정 알고리즘 관련 항목)을 검색할 수 있습니다. 하지만 의미 검색에서 충분한 결과가 나오지 않으면 시스템은 자동으로 접근 방식을 조정하여 유용한 정보가 계속 반환되도록 합니다.
문제 해결
벡터 검색 진단
Memento MCP에는 벡터 검색 문제를 해결하는 데 도움이 되는 내장 진단 기능이 포함되어 있습니다.
- 임베딩 검증 : 시스템은 엔터티에 유효한 임베딩이 있는지 확인하고 누락된 경우 자동으로 생성합니다.
- 벡터 인덱스 상태 : 벡터 인덱스가 존재하고 온라인 상태인지 확인합니다.
- 대체 검색 : 벡터 검색이 실패하면 시스템은 텍스트 기반 검색으로 대체됩니다.
- 상세 로깅 : 문제 해결을 위한 벡터 검색 작업의 포괄적 로깅
디버그 도구(DEBUG=true인 경우)
디버그 모드가 활성화되면 추가 진단 도구를 사용할 수 있습니다.
- diagnose_vector_search : Neo4j 벡터 인덱스, 임베딩 카운트 및 검색 기능에 대한 정보
- force_generate_embedding : 특정 엔터티에 대한 임베딩을 강제로 생성합니다.
- debug_embedding_config : 현재 임베딩 서비스 구성에 대한 정보
개발자 재설정
개발 중에 Neo4j 데이터베이스를 완전히 재설정하려면:
건물 및 개발
설치
Smithery를 통해 설치
Smithery를 통해 Claude Desktop용 memento-mcp를 자동으로 설치하려면:
npx를 사용한 글로벌 설치
npx를 사용하여 전역적으로 설치하지 않고도 Memento MCP를 직접 실행할 수 있습니다.
이 방법은 Claude Desktop 및 기타 MCP 호환 클라이언트와 함께 사용하는 것이 좋습니다.
로컬 설치
프로젝트 개발 또는 참여를 위해:
특허
MIT
You must be authenticated.
Tools
의미 검색, 시간 인식, 고급 관계 관리 기능을 갖춘 확장 가능하고 고성능의 지식 그래프 메모리 시스템입니다.
- Core Concepts
- Storage Backend
- Advanced Features
- MCP API Tools
- Configuration
- Integration with Claude Desktop
- Troubleshooting
- Building and Development
- Installation
- License