YAMS: LLM 워크플로우를 위한 영구 메모리 저장·검색·재활용

YAMS: LLM 워크플로우를 위한 영구 메모리 저장·검색·재활용

3줄 요약 - YAMS는 LLM과 다양한 앱을 위한 영구 메모리 시스템으로, 콘텐츠 주소화(SHA-256), 중복 제거(Rabin), 압축(Zstandard/LZMA), 텍스트·의미 검색(FTS5/벡터)을 한 번에 제공합니다. - 개발 워크플로우에서 대화 맥락·코드 변경·문서 자료를 저장·검색·재활용하도록 설계되었고, CLI/TUI, MCP(Claude Desktop 등) 통합을 지원합니다. - 기능 검증과 성능 재현을 위한 체크리스트와 벤치마크 절차, Apache-2.0 라이선스 확인 및 컴플라이언스 팁까지 함께 정리합니다. 서론 지금 쓰는 프롬프트, 어제 고친 코드, 한 달 전 읽어둔 PDF. 이런 조각들이 끊기지 않고 이어진다면 LLM과 일하는 손맛이 달라집니다. YAMS(Yet Another Memory System)는 그 빈틈을 메우는 “영구 메모리”입니다. 단순 저장소가 아니라, 무결성 보장 콘텐츠 주소화와 블록 단위 중복 제거, 고효율 압축, 그리고 전체 텍스트·의미 기반 검색을 하나로 묶어 LLM과 사람 모두가 꺼내 쓰기 쉬운 지식 베이스를 만들게 해줍니다. 이 글에서는 YAMS가 왜 필요한지, 내부가 어떻게 돌아가는지, 실제로 어떻게 쓰고 검증·벤치마크할지까지 핵심만 콕 집어 안내합니다. ## YAMS 한눈에 보기: 왜 필요한가, 무엇이 다른가 - 목적: 세션을 넘어 축적되는 “문맥”과 “작업 산출물”을 안전하게 저장·검색·재활용. - 핵심 기능 올인원: - 콘텐츠 주소화(SHA-256)로 데이터 무결성·참조 일관성 확보 - Rabin fingerprinting 기반 블록 청킹(chunking)·중복 제거로 저장 공간 절감 - Zstandard/LZMA 압축으로 저장 효율 최적화 - SQLite FTS5 전체 텍스트 인덱싱 + 벡터 임베딩 의미 검색 - WAL(Write-Ahead Logging)로 장애 시 안정적 복구 - CLI/TUI, API, MCP 클라이언트(예: Claude Desktop) 통합 - 기존 도구와의 차이 - Git: 버전 관리 특화 vs YAMS: 이질적 데이터 형식, 의미 검색, 중복 제거·압축, PDF 텍스트 추출 등 데이터 관리 전반 지원 - 일반 검색엔진: 강력한 검색 vs YAMS: 검색+콘텐츠 주소 저장+중복 제거+LLM 친화적 파이프라인을 단일 인터페이스로 - 파일 스토리지: 저장 중심 vs YAMS: 저장·인덱스·검색·통합을 하나의 도구로 ## 내부 동작 이해하기: 무결성, 절감, 성능을 동시에 ### 콘텐츠 주소화와 무결성 - 입력 데이터 → SHA-256 해시 → 주소로 사용. 동일 콘텐츠는 동일 주소, 변조 시 해시가 달라져 즉시 검출. - 해시 참조는 재현 가능하고 충돌 위험이 극히 낮아 장기 보관·공유에 적합. ### 중복 제거와 압축 - Rabin fingerprinting으로 가변 길이 블록 분할 → 동일 청크 재사용 → 저장 공간 절감. - 압축은 Zstandard(속도·균형)와 LZMA(높은 압축률)를 상황에 따라 적용. - 환경 변수로 조정: - YAMS_CHUNK_SIZE: 청크 크기 튜닝(중복 제거율·인덱싱 비용 균형) - YAMS_CACHE_SIZE: 캐시 메모리 사용량 - YAMS_COMPRESSION: 알고리즘 선택/수준 ### 검색 엔진 콤보 - 전체 텍스트 검색: SQLite FTS5 기반. 대량 문서에서 일반 LIKE 대비 수십~수백 배 빠른 사례가 보고되어 있음(예: 수십만 문서에서 0.03초 수준 쿼리 지연). - 의미 기반 검색: 임베딩 벡터 유사도. 3k 차원대 벡터에서 수 ms~수십 ms 단위 응답 사례가 있으며, 100만 벡터 규모에서는 1초 이상 소요될 수 있어 양자화 등 최적화 권장. - 하이브리드 검색: BM25(텍스트)와 벡터 유사도 결합으로 정확도·회수율 향상. ### 안정성과 처리 성능 - WAL(쓰기 전 로그): 변경을 로그에 먼저 기록, 장애 시 로그 재생으로 일관성 복구. - 멀티스레드 처리로 고처리량을 지향(100MB/s+ 수준이 보고되나, 재현 벤치마크 권장). ## 실제 사용 시나리오: LLM 워크플로우가 편해진다 - 대화 맥락 기억: 프롬프트, 모델 응답, 결론 정리 메모를 YAMS에 저장 → 다음 세션에서 키워드/의미 검색으로 즉시 재호출. - 코드·리서치 아카이브: 커밋 메시지, 변경된 코드 스니펫, 관련 이슈·문서 PDF를 함께 보관. 해시로 정확히 동일 내용 재사용, 중복 제거로 저장 비용 절감. - MCP 통합(예: Claude Desktop): 에이전트가 YAMS에 접근해 “이전 대화에서 XXX 찾기”, “프로젝트 Y의 설계 문서 검색” 같은 행동을 자동화. - 탐색과 파이프라인: - yams browse로 TUI 탐색 - stdin/file → 저장 → 해시 반환 → 파이프 연결로 후속 처리(예: 변환·요약·태깅) ## 빠른 시작: 키 명령과 튜닝 포인트 - 저장: 파일 또는 stdin을 받아 SHA-256 주소로 저장 - 예) cat notes.md | yams put → 해시 출력 → 이 해시로 어디서든 참조 - 검색: - 키워드: yams search "vector index" - 의미 검색: yams search --semantic "최근 회의 요약" - 퍼지 매칭: 철자 변형, 유사 문자열 대응 - 조회/내보내기: - yams get <hash> → 표준 출력 또는 파일로 저장, 다른 도구와 파이프 연결 - 출력 포맷: - JSON/테이블/미니멀 출력 선택으로 스크립트 친화성 확보 - 성능 튜닝(대용량 처리 시 권장): - YAMS_CHUNK_SIZE로 중복 제거율 vs 인덱싱 비용 균형 맞추기 - YAMS_CACHE_SIZE로 캐시 적중률 개선 - YAMS_COMPRESSION=zstd|lzma로 속도·압축률 트레이드오프 조정 ## 믿고 쓰기: 기능 검증과 재현 가능한 벤치마크 절차 ### 기능 구현 확인 체크리스트 - 문서/README/Wiki에서 키워드 탐색: “SHA-256”, “Rabin”, “Zstandard”, “LZMA”, “FTS5”, “WAL” - 소스 코드 검색: - 해시: sha256 - 중복 제거: rabin, chunk, fingerprint - 압축: zstd, lzma - 테스트: tests 디렉터리 내 단위/통합 테스트 - 설정 파일에서 옵션 노출 여부 확인(YAMS_* 환경 변수 등) ### 중복 제거·압축률 테스트 - 데이터셋: 중복이 많은 파일 묶음(유사 문서·버전이 다른 코드·중복 이미지 등) - 절차: 1) 데이터 입력 → 저장 전후 용량 비교(절감률) 2) 청크/중복 청크 카운트 확인 3) zstd vs lzma 압축률·복원 무결성(해시 비교) 검사 4) 반복 실행으로 일관성 확인 ### 검색·성능 벤치마크 - 환경 명시: CPU/메모리/스토리지 종류, SQLite/확장 버전, WAL 설정 - 지표: - 텍스트 검색 지연시간(MATCH 쿼리, 상이한 키워드 난이도) - 벡터 유사도 쿼리 지연시간/처리량(차원·개수·양자화 여부별) - 동시 읽기/쓰기 처리량(MB/s), CPU/메모리/I/O 사용률 - 장애 유도 후 WAL 복구 시간 및 무결성 - 주의: 100MB/s+ 처리량 등 수치 주장은 환경·데이터에 좌우되므로 동일 조건으로 재현 시험 권장. ## 라이선스와 컴플라이언스: 상업적 사용 체크포인트 - 라이선스 확인: - 저장소 루트의 LICENSE 파일에서 Apache-2.0 명시 확인 - README/소스 파일 헤더의 라이선스 표기 일치 여부 점검 - 상업적 활용 시 유의: - 원저작자·라이선스 고지 포함, 수정 시 변경 내역 명시 - 로고·상표는 별도 허가 없이 사용하지 않기 - 서드파티 의존성: - 각 라이브러리 LICENSE 확인 및 호환성 검토(예: MIT, Apache-2.0은 대체로 호환, GPL은 주의) - 오픈소스 스캐너로 자동 점검 병행 - 개인정보·보안: - 문서·로그에 개인정보가 포함될 수 있음 → 수집·저장·파기 정책 수립 - 관련 법규(GDPR/개인정보보호법 등) 준수와 내부 접근통제·암호화 정책 적용 마무리 YAMS는 “잘 저장하고, 잘 찾고, 안전하게 이어 쓰는” 데 초점을 맞춘 실용적인 영구 메모리 시스템입니다. LLM 기반 업무가 늘어날수록 문맥 보존과 지식 재활용의 가치가 커지고, 그럴수록 콘텐츠 주소화·중복 제거·텍스트+의미 검색의 결합 효과는 분명해집니다. 위 체크리스트로 기능을 검증하고, 벤치마크 절차로 성능을 재현해보세요. 여러분의 워크플로우에 맞춘 튜닝까지 끝내면, YAMS는 일상의 “두 번째 뇌”가 되어 줄 것입니다.

©YozmBlog
koenjaesfr