TIL: 로컬 임베딩으로 AI 기억력 향상시키기
오늘 OpenClaw에 메모리 임베딩(Memory Embedding) 시스템을 적용했다!
🧠 기존 메모리 시스템의 한계
기존에는 AI 에이전트가 메모리를 텍스트 파일로만 저장하고 있었다.
memory/2026-02-01.md
memory/2026-01-31.md
MEMORY.md
문제는 검색이었다. 정확한 키워드를 알아야만 찾을 수 있었고, 비슷한 상황이나 관련된 내용을 찾기 어려웠다.
💡 해결책: Vector Embedding + 시맨틱 검색
메모리 파일들을 벡터 임베딩으로 변환하고, 의미 기반 검색이 가능하도록 개선했다!
사용한 모델
hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf- 300M 파라미터 (Q8 양자화)
- 로컬 실행 (외부 API 불필요!)
🧪 테스트 결과
다양한 주제로 검색 테스트를 진행했다
| 검색어 | 결과 | 점수 |
|---|---|---|
| “크론잡 멀티봇” | ✅ 완벽 | 0.46 |
| “Gmail 10분 긴급 체크” | ✅ 완벽 | 0.46 |
| “Proxmox LXC 브라우저” | ✅ 완벽 | 0.67 |
| “ㅁㅁㅁ(에이전트 이름) 칭찬 감사” | ✅ 양호 | 0.47 |
정확한 키워드를 쓰지 않아도, 의미만으로 에이전트는 과거의 맥락을 찾아 낼 수 있었다.
🎯 장점
- 시맨틱 검색: 정확한 단어 없이도 의미로 검색 가능
- 과거 메모리 검색: 여러 날의 메모리를 한 번에 검색
- 관련도 점수: score로 정확도 판단
- 로컬 실행: API 비용 없음
💭 느낀 점
AI 에이전트가 기억을 잘한다는 것의 핵심은 단순히 저장하는 게 아니라, 필요할 때 꺼낼 수 있어야 한다는 것!
벡터 임베딩이 그 해결책이었다.
이제 에이전트는
- “오늘 뭐 했더라?” ❌
- “비슷한 상황이 언제였지?” ✅
이렇게 질문할 수 있게 되었다!
⚙️ 세팅 방법
OpenClaw에서 메모리 임베딩을 활성화하는 방법은 매우 간단하다!
1. OpenClaw 설정 파일 수정
~/.openclaw/openclaw.json 파일을 열어서 다음 설정을 추가
{
"agents": {
"defaults": {
"memorySearch": {
"enabled": true,
"provider": "local",
"local": {
"modelPath": "hf:ggml-org/embeddinggemma-300M-GGUF/embeddinggemma-300M-Q8_0.gguf"
},
"query": {
"hybrid": {
"enabled": true,
"vectorWeight": 0.7,
"textWeight": 0.3
}
},
"cache": {
"enabled": true,
"maxEntries": 50000
},
"watch": true
}
}
}
}
주요 옵션:
enabled: true- 메모리 검색 활성화provider: "local"- 로컬 임베딩 모델 사용 (무료!)local.modelPath- 사용할 임베딩 모델 경로 (HuggingFace GGUF)query.hybrid- 하이브리드 검색 설정 (Vector + BM25)vectorWeight: 0.7- 의미 검색 가중치 70%textWeight: 0.3- 키워드 검색 가중치 30%cache.enabled- 임베딩 캐시 활성화 (성능 향상)watch: true- 파일 변경 자동 감지
2. Gateway 재시작
설정 변경 후 OpenClaw Gateway를 재시작
openclaw gateway restart
3. 임베딩 모델 다운로드
처음 실행 시 자동으로 모델이 다운로드됩니다. (약 300MB)
# 각 에이전트별 메모리 상태 확인 (모델 자동 다운로드)
openclaw memory status --deep --agent main
openclaw memory status --deep --agent worker
# 인덱싱 실행
openclaw memory index --agent main --verbose
openclaw memory index --agent worker --verbose
4. 테스트
이후 에이전트에 의뢰해서 memory_search 도구를 사용하여 검색 테스트
// 에이전트에서 사용
memory_search({
query: "크론잡 설정",
maxResults: 5,
});
사실 이러한 설정내용을 사용자가 모르더라도 AI들한테 해달라고하면 대부분은 해준다
해야하는 내용은 위의 메모리 다운로드와 인덱싱 정도
댓글남기기