개인 AI 에이전트를 운영하다 보면, 의외로 한국어 처리에서 계속 벽에 부딪힌다. LLM 자체는 한국어를 잘하는 편이지만, “기억”을 검색하는 단계—즉 RAG(Retrieval-Augmented Generation)의 임베딩 품질이 한국어에서 현저히 떨어지는 문제다.
내 시스템에서는 Ollama의 nomic-embed-text를 쓰고 있었다. 가볍고 빠르지만 영어 중심 모델이라, 한국어 메모리 검색 품질이 아쉬웠다.
그러던 중, 카카오가 오픈소스로 공개한 Kanana-Nano-2.1b-Embedding 모델을 발견했다.
왜 Kanana인가
- 파라미터: 2.1B
- 임베딩 차원: 1792
- 한국어 임베딩 벤치마크: 65.0점 (동급 최고 수준)
카카오가 이런 품질의 모델을 오픈소스로 공개한 건, 한국어 AI 생태계에 상당한 기여다. 감사한 일이다.
구축 과정: Ollama가 안 되면 직접 만들면 된다
Kanana는 Ollama에 공식 지원되지 않는다. ollama pull 한 방으로는 안 된다는 뜻.
선택한 아키텍처:
FastAPI 서버 (localhost:11435)
└─ Hugging Face transformers
└─ Kanana-Nano-2.1b-Embedding
└─ Apple Silicon MPS (GPU 가속)
핵심 포인트는 Ollama 호환 API 엔드포인트 구현이었다. 기존 시스템이 Ollama의 /api/embeddings를 호출하는 구조라, 새 서버도 같은 스펙으로 응답하도록 만들었다. 덕분에 기존 코드를 단 한 줄도 수정하지 않고 연동 완료. 포트만 11434 → 11435로 바꾸는 것으로 끝.
Apple Silicon에서의 구동
맥미니(M1, 24GB) 환경에서 device="mps" 설정으로 GPU 가속을 적용했다. MPS 디버그 로그가 쏟아지는 삽질이 있었지만, 한 번 올라가면 추론 속도는 쓸만했다.
macOS LaunchAgent + KeepAlive 설정으로 재부팅 시 자동 시작/복구도 구현. 이걸 안 해놓으면 재부팅 후에 “왜 한국어 검색이 안 되지?” 하고 한참 헤매게 된다. 경험담이다.
메모리 문제, 그리고 결국 붙인 이유
솔직히 말하면, Kanana가 약 4GB를 점유하는 게 부담이었다. 맥미니 24GB 환경에서 Ollama, 다른 백그라운드 프로세스들과 함께 돌리니 스왑이 늘고 시스템 전체가 느려졌다.
잠깐 비활성화를 고민했지만—결국 다시 켰다. 한국어 메모리 검색 품질 차이가 확실히 느껴지니까. 4GB가 아깝긴 해도, 에이전트가 한국어를 제대로 이해하는 게 더 중요했다.
정리
| 항목 | 내용 |
|---|---|
| 모델 | Kanana-Nano-2.1b-Embedding (카카오 오픈소스) |
| 구동 환경 | 맥미니 M1, Apple Silicon MPS |
| 서버 | FastAPI + transformers, localhost:11435 |
| 연동 | Ollama 호환 API, 기존 코드 무수정 |
| 자동화 | LaunchAgent + KeepAlive |
| 현재 운영 | ✅ Kanana 실제 사용 중 |
좋은 모델이 있어도 하드웨어가 받쳐줘야 한다는 걸 느꼈지만, 결국 한국어 품질을 택했다. 카카오 AI팀 덕분에 이 선택지가 생겼고, 오늘도 에이전트는 한국어로 잘 기억하고 있다. 🦞