YAMS 소개
YAMS(Yet Another Memory System)는 대규모 언어 모델(LLM)과 다양한 애플리케이션을 위한 영구 메모리 시스템입니다. 단순한 데이터 저장소가 아니라, 콘텐츠 주소 기반 저장(content-addressed storage), 중복 제거(deduplication), 의미 기반 검색(semantic search), 그리고 전체 텍스트 인덱싱(full-text indexing) 기능을 통합적으로 제공합니다. 이를 통해 LLM이 세션 간에 맥락을 유지하거나, 개발자가 프로젝트별 지식 베이스를 구성하는 데 최적화되어 있습니다.
YAMS의 핵심은 SHA-256 기반 콘텐츠 주소화를 통해 데이터 무결성을 보장하고, Rabin fingerprinting으로 블록 단위 중복 제거를 수행하며, Zstandard와 LZMA 압축 방식을 지능적으로 적용하여 저장 효율을 극대화하는 데 있습니다. 검색 기능은 SQLite FTS5를 통한 전체 텍스트 검색과 벡터 임베딩을 활용한 의미 기반 검색을 모두 지원하여 단순 키워드 매칭 이상의 결과를 제공합니다. 또한 쓰기 전 로그(write-ahead logging)를 통해 장애 상황에서도 안정적으로 복구 가능하며, 멀티스레드 환경에서도 100MB/s 이상의 고성능 처리를 구현합니다.
특히 YAMS는 LLM 환경에서의 문맥 기억 및 데이터 재활용을 염두에 두고 설계되었습니다. 예를 들어, 개발자가 이전 코드 변경 내역, 대화 맥락, 외부 문서 등을 저장해두고 필요할 때 즉시 검색·활용할 수 있습니다. 이러한 특성은 대규모 AI 모델을 활용한 개발 워크플로우에서 매우 유용합니다.
YAMS는 Git이나 일반 문서 검색 시스템과 비교했을 때 다음과 같은 차별성이 있습니다:
- Git과 비교: Git은 소스 코드 버전 관리에 특화되어 있으며, 주로 텍스트 파일의 변경 이력을 추적합니다. 반면 YAMS는 다양한 형식의 데이터를 저장할 수 있으며, 의미 기반 검색과 중복 제거, 압축, PDF 텍스트 추출 등 데이터 관리에 필요한 다양한 기능을 제공합니다.
- 일반 검색 엔진과 비교: Elasticsearch, Lucene 같은 검색 시스템은 강력한 검색 기능을 제공하지만, 콘텐츠 주소 기반 저장과 블록 단위 중복 제거, LLM 친화적 CLI 및 파이프라인 통합 기능은 기본적으로 제공하지 않습니다.
- 기존 파일 저장소와 비교: 단순한 파일 서버나 클라우드 스토리지와 달리 YAMS는 검색·저장·관리·통합까지 하나의 CLI/TUI 및 API에서 모두 수행할 수 있습니다.
YAMS의 주요 특징
기본 사용법
- 저장: 표준 입력(stdin)이나 파일을 받아 SHA-256 해시 기반으로 저장
- 검색: 키워드 검색, 의미 검색, 퍼지(fuzzy) 매칭 지원
- 목록 출력: JSON, 테이블, 최소 출력 포맷 지원
- 문서 조회: 해시 기반 즉시 조회, 파일로 저장 또는 파이프 처리 가능
- TUI 브라우저:
yams browse
명령어로 인터랙티브 탐색 지원
LLM 통합
LLM 환경에서는 대화 맥락, 코드 변경, 연구 자료, 외부 문서 등을 YAMS에 저장하고 필요 시 검색·재사용할 수 있습니다. 특히 Claude Desktop과 같은 MCP(Model Context Protocol) 호환 클라이언트와의 통합 기능을 제공합니다.
성능 최적화
환경 변수를 통해 청크 크기(YAMS_CHUNK_SIZE
), 캐시 크기(YAMS_CACHE_SIZE
), 압축 방식(YAMS_COMPRESSION
) 등을 조정할 수 있어 대용량 파일 처리와 메모리 사용량을 상황에 맞게 최적화할 수 있습니다.
라이선스
YAMS 프로젝트는 Apache-2.0 라이선스로 공개 및 배포되고 있습니다. 상업적 사용에 제한이 없습니다.
YAMS 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~