semantic-memory: Candle 임베딩(Ollama 선택 가능), MCP 서버 및 타입 지정 그래프 에지를 갖춘 Rust 기반 로컬
요약
Rust 기반의 로컬 우선 시맨틱 메모리 시스템인 semantic-memory가 출시되었습니다. SQLite를 활용한 하이브리드 검색과 타입 지정 그래프 에지를 통해 AI 에이전트 및 RAG 애플리케이션에 지속적인 메모리를 제공합니다.
핵심 포인트
- Candle 및 Ollama를 지원하는 로컬 임베딩 백엔드 제공
- 단순 벡터 검색을 넘어선 타입 지정 그래프 에지 탐색 기능
- MCP 서버 지원으로 Claude Desktop, Cursor 등과 연동 가능
- 쿼리 복잡도에 따른 적응형 라우팅 및 출처(Provenance) 관리
지난 몇 달 동안 Rust로 로컬 우선(local-first) 시맨틱 메모리(semantic memory) 시스템을 구축해 왔으며, 방금 crates.io에 게시했습니다. 이 시스템은 클라우드로 아무것도 전송하지 않고도 지속적인 메모리가 필요한 AI 에이전트 및 RAG 애플리케이션을 위해 설계되었습니다.
이것은 무엇인가:
semantic-memory는 SQLite를 기반으로 하는 하이브리드 검색 엔진(BM25 + 벡터(vector) + 상호 순위 융합(reciprocal rank fusion))입니다. 사실(facts), 문서(documents), 청크(chunks)를 저장하며 이들 사이에는 타입이 지정된 그래프 에지(typed graph edges)가 존재합니다. 또한 Hermes, Claude Desktop, Cursor와 함께 작동하는 MCP 서버(18개 도구)도 포함되어 있습니다.
임베딩 백엔드(Embedding backends):
- Candle (candle-embedder 기능 사용 시 기본값): 순수 Rust, CPU 전용, 인프로세스(in-process) 방식입니다. 기본적으로 nomic-embed-text-v1.5 (768d)를 사용합니다. 외부 서비스, 데몬, API 키가 필요 없습니다. 첫 실행 시 HuggingFace에서 모델을 다운로드합니다.
- Ollama (명시적 생성 시 또는 candle-embedder가 활성화되지 않았을 때 사용 가능): 이미 Ollama를 실행 중이며 이를 임베딩에 사용하고자 하는 사람들을 위한 옵션입니다. Ollama 인스턴스를 지정하면 바로 작동합니다.
- Mock: 테스트를 위한 결정론적(deterministic) 방식입니다.
핵심은 다음과 같습니다: 모든 사람에게 작동한다는 점입니다. 설치된 것이 없다면 Candle을 사용하세요. 이미 Ollama를 실행 중이라면 그것을 사용하면 됩니다. 클라우드, API 키, 텔레메트리(telemetry)는 없습니다.
설치:
cargo add semantic-memory
cargo install semantic-memory-mcp
벡터 데이터베이스(vector database)와 차별화되는 점:
-
타입 지정 그래프 에지(Typed graph edges): 단순한 벡터 유사성만이 아닙니다. 인과 관계 에지(causal edges, 신뢰도 포함), 시간적 에지(temporal edges, 시간 차이 포함), 엔티티 에지(entity edges, 관계 이름 포함), 시맨틱 에지(semantic edges, 코사인 유사도 포함)를 추가할 수 있습니다. 그래프 도구들은 최단 경로(shortest path), 2차 발견(second-order discovery, discord search), 이종 에지(heterogeneous edges)에 대한 신념 전파(belief propagation) 등을 통해 이러한 에지들을 탐색합니다.
-
출처(Provenance): 모든 사실은 신뢰도 점수(confidence score)와 지원 횟수(support count)를 가질 수 있습니다. 검색 결과에는 출처 메타데이터가 포함됩니다.
-
이중 시간성(Bitemporal): 하드 삭제(hard delete)가 아닌 추가 및 대체(append-plus-supersession) 방식입니다. 오래된 사실은 제거되는 것이 아니라 대체됩니다.
-
적응형 라우팅 (Adaptive routing): 쿼리 프로파일러(query profiler)가 쿼리를 6가지 복잡도 클래스(단순 조회 (simple lookup), 멀티홉 (multi-hop), 모순 (contradiction), 합성 (synthesis), 시계열 (temporal), 창의적 (creative))로 분류하고 그에 따라 도구를 선택합니다. 그래프 도구는 멀티홉 및 합성 쿼리에 대해서만 활성화됩니다. 그래프 도구는 단순 조회 성능을 저하시킵니다 (이는 GraphRAG-Bench, arxiv 2506.05690에 의해 뒷받침됩니다).
-
18개의 MCP 도구: 검색 (search), 라우팅 포함 검색 (search-with-routing), 그래프 경로 (graph path), Discord 검색 (discord search), 인자 그래프 (factor graph), 디코더/모순 분석 (decoder/contradiction analysis), 커뮤니티 탐지 (community detection), 위상/베티 수 (topology/Betti numbers), 출처 설정 (provenance setting), 라이프사이클 관리 (lifecycle management), 문서 수집 (document ingestion) 등이 포함됩니다.
기능 플래그 (Feature flags) (벡터 백엔드를 제외한 모든 기능은 선택 사항 (opt-in)입니다):
기본값: usearch 2.25 사용 (고성능 단일 파일 벡터 검색). 선택 사항: hnsw_rs, 브루트 포스 (brute-force), 출처 (provenance), 시계열 (temporal), discord, 디코더 (decoder), 차감 (subtraction), 압축 제어기 (compression-governor), 라우팅 (routing), 벤치마크 (benchmark), 위상 (topology), 커뮤니티 (community), 서브그래프 가지치기 (subgraph-pruning), 마트료시카 (matryoshka), 후기 상호작용 (late-interaction), turbo-quant-codec, candle-embedder.
통계: -
165개 테스트 통과 (lib, 모든 기능 포함)
-
0개의 클라우드 의존성 — 모든 것이 로컬에서 실행됨
-
SQLite + usearch 사용, 외부 데이터베이스 없음
-
crates.io에 게시됨: semantic-memory 0.5.2, semantic-memory-mcp 0.1.0
-
GitHub: https://github.com/RecursiveIntell/semantic-memory 및 https://github.com/RecursiveIntell/semantic-memory-mcp
이것이 아닌 것: -
벡터 데이터베이스가 아닙니다. 벡터 검색을 하나의 검색 모드로 사용하는 지식 베이스입니다.
-
프로덕션 검증이 완료되지 않았습니다. 저는 개인적인 Hermes 에이전트 설정과 함께 매일 사용하고 있지만, 대규모로 배포된 적은 없습니다.
-
벤치마크 우월성을 주장하지 않습니다. 아키텍처는 단순한 ANN 속도가 아니라 적응형 라우팅 (adaptive routing), 변이 견고성 (mutation robustness), 그리고 출처 (provenance)를 중심으로 설계되었습니다.
대상 독자:
"모든 것을 벡터 저장소(vector store)에 쏟아붓고 코사인 유사도(cosine similarity)가 찾아내길 기도하는 방식"보다 더 구조화된 영구 메모리(persistent memory)를 원하는 로컬 AI 에이전트 개발자.
만약 Ollama를 로컬에서 실행 중이며, 사실(facts) 간의 타입이 지정된 관계(typed relationships)를 통해 에이전트가 세션 전반에 걸쳐 무언가를 기억하기를 원한다면, 이 프로젝트는 바로 그 용도를 위해 설계되었습니다.
아키텍처, 라우팅 로직(routing logic), 또는 Candle 통합에 관한 질문이 있다면 기꺼이 답변해 드리겠습니다.
제출자: /u/RudeChocolate9217
[link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기