SITE SEARCH

검색

사이트 전체 글을 빠르게 찾을 수 있습니다.

RSS FEED

RSS 구독

RSS 리더에서 Project Research의 새 글을 바로 받아볼 수 있습니다.

EMAIL SUBSCRIBE

이메일 구독

새 글을 이메일로 받아봅니다. RSS는 별도 RSS 아이콘을 눌러 동일한 크기의 패널에서 열 수 있습니다.

이메일로 블로그 구독하기

이 블로그를 구독하고 이메일로 새글의 알림을 받으려면 이메일 주소를 입력하세요







LLM이 내 노트 4만 개를 검색하는 두 가지 방법 — ‘직접 읽기’ vs ‘전용 CLI’ 실측, 그리고 둘을 합쳐 5.5배 당긴 하이브리드

시리즈

AI에게 “내 노트들 뒤져서 답해 줘”라고 시키는 시대입니다. 그런데 그 ‘뒤지기’를 누가, 어떻게 하느냐는 생각보다 큰 차이를 만듭니다. 저는 노트 46,579개가 든 지식 창고(Obsidian vault)를 두 가지 방법으로 검색해 봤습니다.

하나는 LLM(대규모 언어모델)이 파일을 직접 읽어 뒤지는 방식(제 운영 하네스 ‘Sillok’의 기본기), 다른 하나는 Obsidian 전용 명령줄 도구(CLI)를 거치는 방식입니다. 질문은 단순합니다 — “무엇이 더 빠르고, 무엇이 더 정확한가?” 그리고 답을 낸 뒤, 저는 둘 중 하나를 고르지 않았습니다.

Claude Code 사용 분석 시리즈 — 추측이 아니라 실측입니다. 같은 vault·같은 쿼리 10종을 양쪽에 똑같이 던지고, 3회 평균으로 시간을 재고, 결과의 적합도까지 따져 본 기록입니다.

바쁜 분을 위한 3줄 요약

처음엔 전용 CLI가 4.5배 빨랐습니다(중앙값 533ms 대 2,397ms). 그런데 그 차이의 정체는 직접 읽기 방식이 호출할 때마다 노트 1.5만 개의 인덱스를 통째로 다시 만드는 낭비였습니다 — 느린 시간의 90%가 거기였습니다.
정확도는 한쪽이 이기지 않았습니다. 직접 읽기는 큐레이션·순위매김이 강했고(한 고객사 검색에서 21건 대 4건), CLI는 창고 전체 커버리지가 강했습니다. 다만 CLI는 Obsidian 앱이 꺼지면 아예 작동하지 않습니다(무인 자동화 불가).
③ 그래서 저는 교체가 아니라 결합을 택했습니다 — 인덱스 캐시 + 검색 묶기 + 전체조회 옵션. 결과는 직접 읽기 2,397ms → 433ms (5.5배), 까다로운 쿼리는 6.9배. CLI보다 빨라지면서, 순위·커버리지·무인운영 강점은 그대로 지켰습니다.

들어가며

“검색이 느리면, 똑똑한 AI도 느립니다”

“AI가 내 자료를 근거로 답하게 하려면, 먼저 그 자료를 빠르고 정확하게 찾아와야 한다. 그 ‘찾아오기’가 매번 2~4초 걸린다면, 대화 한 번에 그 비용이 몇 번씩 쌓인다.”

— 지식베이스 + AI를 붙여 써 본 사람이라면 체감하는 병목

요즘 AI 작업의 절반은 ‘검색 증강 생성(RAG·Retrieval-Augmented Generation)’입니다. 모델이 똑똑한 것과 별개로, 내 노트·문서에서 맞는 자료를 꺼내 오는 단계가 빠르고 정확해야 답이 좋아집니다. 이 꺼내 오기를 저는 두 갈래로 할 수 있었습니다. 하나는 AI(정확히는 제 하네스)가 파일 시스템을 직접 읽어 뒤지는 길, 다른 하나는 Obsidian이라는 노트 앱의 전용 CLI에게 시키는 길입니다.

둘 다 “vault를 검색한다”는 같은 일을 하지만, 작동 원리가 완전히 다릅니다. 그래서 머리로 “이게 빠를 것이다” 단정하지 않고, 같은 창고·같은 질문으로 실제로 재 봤습니다. 그리고 그 결과는 제 예상과 절반만 맞았습니다.

이 글이 답하는 네 가지

  1. 무엇이 더 빠른가 — 그리고 그 속도 차이의 ‘진짜 원인’은 무엇인가
  2. 무엇이 더 정확한가 — 정확도는 한 단어로 답할 수 없습니다
  3. 운영에서 무엇이 더 튼튼한가 — 무인 자동화에서 갈리는 결정적 차이
  4. 그래서 어떻게 했나 — 교체가 아니라 둘을 합쳐 5.5배 당긴 하이브리드
Part 1 · 두 가지 방식

‘직접 읽기’와 ‘전용 CLI’는 출발점부터 다릅니다

먼저 두 선수를 소개합니다. 같은 결승선을 향하지만, 달리는 방법이 다릅니다.

A · LLM 직접 읽기

파일을 곧장 뒤진다

하네스가 노트 파일을 직접 읽어, 머리말(frontmatter) 정보로 거르고 ripgrep(아주 빠른 텍스트 검색 도구)으로 본문을 뒤집니다. 결과를 중요도 순위(tier)·관련도로 정렬해 돌려줍니다. 앱이 없어도, 백그라운드에서도 돕니다.

B · Obsidian 전용 CLI

앱에게 물어본다

켜져 있는 Obsidian 앱에 작은 통로(unix 소켓)로 질문을 넘겨, 앱이 검색해 돌려줍니다. 창고 전체를 가볍게 훑어 빠릅니다. 대신 앱이 반드시 실행 중이어야 합니다.

핵심 차이 한 줄 — A(직접 읽기)는 “내가 정리한 지식을 똑똑하게 순위 매겨” 찾고, B(CLI)는 “창고에 있는 건 다, 그러나 평면적으로” 찾습니다. 이 성격 차이가 뒤의 모든 결과를 설명합니다.
Part 2 · 벤치마크 설계

변수를 줄이려 같은 창고에 같은 질문을 던졌습니다

공정하게 재려면 조건을 맞춰야 합니다. 같은 vault(노트 46,579개)에, 제가 실제로 자주 쓰는 쿼리 10종을 양쪽에 똑같이 던졌습니다. 한 번의 운으로 갈리지 않도록 각 쿼리를 3번 실행해 중앙값을 취했고, 캐시가 데워진 정상 상태(warm)에서 쟀습니다.

쿼리는 성격을 일부러 섞었습니다 — 넓은 주제어(“리더십”), 동의어가 많은 운영어(“RAG 검색”), 특정 고객사(“신한EZ 손해보험”), 그리고 일부러 제 직접 읽기 방식의 ‘사각지대’에 있는 주제(개인 기록·받은편지함 쪽 노트)까지 넣었습니다. 한쪽에 유리한 질문만 고르면 벤치마크가 거짓말을 하기 때문입니다.

측정한 세 가지

  • 속도 — 질문을 던지고 결과가 올 때까지의 실제 시간(밀리초)
  • 적합도 — 상위 결과가 정말 쓸모 있는가(순위·관련도), 그리고 놓친 노트는 없는가(커버리지)
  • 운영 견고성 — 사람이 안 보는 자동화·백그라운드에서도 작동하는가
Part 3 · 속도

CLI가 4.5배 빨랐습니다 — 그런데 원인이 허무했습니다

먼저 시간입니다. 결과는 분명했습니다.

쿼리 예시 A · 직접 읽기 B · 전용 CLI 더 빠른 쪽
“리더십” (넓은 주제) 2,458ms 557ms CLI
“RAG 검색” (동의어 많음) 4,224ms 833ms CLI
중앙값 (쿼리 10종) 2,397ms 533ms CLI 4.5배 빠름

CLI의 압승처럼 보입니다. 그런데 직접 읽기 방식이 느린지 뜯어보자, 결과가 뒤집혔습니다. 검색 한 번을 시간 단위로 쪼개 보니 —

직접 읽기 2,397ms의 정체 — 검색이 아니라 ‘준비’였다

  • 인덱스 다시 만들기: 2,614ms — 노트 14,879개를 매번 처음부터 읽고 머리말을 다시 해석. 전체 시간의 약 90%.
  • 실제 검색(ripgrep): 단순 쿼리 229ms — 검색 자체는 원래 빨랐습니다.

→ 매번 똑같은 인덱스를 처음부터 다시 만들고 있었습니다. 도서관에 갈 때마다 장서 목록을 전권 다시 타이핑한 뒤 책을 찾은 셈입니다.

“CLI가 빠른 것”이 아니라 “직접 읽기가 매번 헛수고를 하고 있던 것”이었습니다. 이 한 줄이 이 글의 전환점입니다. 느림의 원인이 검색이 아니라 매 호출 반복되는, 늘 똑같은 준비 작업이라면 — 그건 한 번만 만들어 두고 재사용하면 되는, 고치기 쉬운 낭비입니다.

Part 4 · 정확도

정확도는 ‘코퍼스에 따라’ 갈렸습니다 — 한쪽의 압승이 아닙니다

속도는 한쪽이 이겼지만, 정확도는 단순하지 않았습니다. 어떤 노트를 찾느냐에 따라 승자가 바뀌었습니다.

평가 축 승자 근거
순위·정밀도 A · 직접 읽기 중요도·관련도로 정렬. 상위에 큐레이션된 핵심 노트가 옴. CLI는 일치한 줄을 평면적으로 나열(잡음 섞임).
정리된 지식 회수 A · 직접 읽기 “신한EZ 손해보험” 검색 시 21건 회수(머리말·동의어 활용) 대 CLI 4건.
전체 창고 커버리지 B · 전용 CLI 직접 읽기는 정리된 12개 폴더만 색인(전체의 약 31%). 개인기록·받은편지함 등은 구조적 사각지대. CLI는 전부 본다.
의미(동의어) 검색 무승부 둘 다 글자 일치 기반. 진짜 ‘의미’ 검색은 별도의 임베딩 방식 몫(이 비교의 범위 밖).

“직접 읽기는 ‘내가 잘 정리해 둔 지식’을 똑똑하게 찾고, CLI는 ‘정리 안 된 것까지 전부’ 찾습니다. 컨설팅 자료처럼 큐레이션된 지식엔 전자가, 개인 기록까지 훑는 전수 검색엔 후자가 정확합니다. 둘은 다른 창고를 보고 있었습니다.

Part 5 · 운영 견고성

결정타는 속도도 정확도도 아닌 ‘앱 의존’이었습니다

여기서 승부가 갈립니다. CLI가 빠른 비결은 켜져 있는 Obsidian 앱에 일을 시키는 것입니다. 바꿔 말하면 — 앱이 꺼지면 아무것도 못 합니다. CLI는 앱이 만들어 둔 작은 통로(unix 소켓)에 붙는데, 앱을 끄면 그 통로가 사라집니다.

항목 A · 직접 읽기 B · 전용 CLI
의존성 없음 (파일만 있으면 됨) 앱 + 플러그인 + 소켓 필수
무인 자동화(예약·백그라운드) 가능 불가
결과의 재현성 결정적 앱 상태에 의존

제 하네스는 예약 작업·백그라운드 에이전트·규칙 자동 적용에서 검색을 부릅니다. 전부 사람이 안 보는 곳, 앱이 떠 있다는 보장이 없는 곳입니다. 그러니 CLI는 — 아무리 빨라도 — 제 검색의 주력이 될 수 없었습니다. 빠른 차가 있어도, 시동이 사람 손에만 걸린다면 무인 운행에는 못 쓰는 것과 같습니다.

흔한 오해 — “RAG 하려면 Obsidian 앱(또는 Obsidian CLI)이 필요하다”

아닙니다. Obsidian vault는 결국 마크다운 파일이 든 폴더일 뿐입니다. AI가 그 파일만 직접 읽으면 되지, Obsidian 앱이나 ‘Obsidian CLI’를 거칠 이유가 없습니다. 이름에 ‘Obsidian’이 붙은 명령줄 도구들은 사실 GUI 앱을 조종하려고 만든 것이라 앱에 묶입니다. 헤드리스 RAG에 맞는 건 ‘직접 읽기’처럼 파일을 곧장 읽는 도구이고, 그건 앱 없이 어디서든 돕니다.

→ 딱 하나, 의미(임베딩) 검색만은 흔히 앱 플러그인에 기댑니다. 글자 검색까지가 아니라 ‘비슷한 뜻’까지 앱 없이 하려면, 그 한 층만 헤드리스 임베더(임베딩을 직접 돌려 벡터 인덱스를 파일로 쌓는 도구)로 바꾸면 완전한 CLI-only RAG가 됩니다.

여기까지의 중간 결론
CLI는 빠르고 커버리지가 넓지만 앱에 묶여 주력이 못 됩니다. 직접 읽기는 순위·무인운영이 강하지만 느리고 사각지대가 있습니다. 그렇다면 답은 “둘 중 하나 고르기”가 아니라 — “직접 읽기의 느림·사각지대만 고쳐, CLI의 장점까지 흡수하기”입니다.
Part 6 · 하이브리드

교체가 아니라 결합 — 세 가지 손질로 5.5배 당겼습니다

앞의 진단이 처방을 정해 줬습니다. 직접 읽기 방식에 세 가지를 더했습니다. 외부 도구로 갈아타지 않고, 약점만 도려내고 상대의 강점을 흡수하는 손질입니다.

① 속도 — 인덱스 캐시

한 번 만든 장서 목록을 저장해 두고, 노트가 바뀐 게 없으면 그대로 재사용합니다. 파일별 수정시각으로 변경을 감지하니, 노트를 고치면 그 부분만 다시 읽습니다.

② 속도 — 검색 묶기

동의어가 많은 쿼리는 검색을 수십 번 따로 돌리던 것을 한 번에 묶어 던집니다. 검색 도구를 부르는 횟수를 132번에서 12번으로 줄였습니다.

③ 커버리지 — 전체조회 옵션

필요할 때만 켜는 ‘전체조회’ 스위치를 더했습니다. 평소엔 정리된 지식만(빠르고 깔끔), 켜면 사각지대까지 전부 — CLI의 강점을 옵션으로 흡수했습니다.

결과입니다. 같은 벤치마크를 손질 전후로 다시 돌렸습니다.

항목 손질 전 손질 후 개선
직접 읽기 중앙값 2,397ms 433ms 5.5배
까다로운 쿼리 (“RAG 검색”) 4,224ms 614ms 6.9배
전용 CLI 대비 (533ms) 4.5배 느림 1.23배 빠름 열세 → 우위 역전

직접 읽기가 전용 CLI보다 빨라졌습니다. 그러면서 순위·큐레이션·무인운영이라는 원래의 강점은 그대로입니다(“신한EZ” 21건 회수, 순위 정렬 변함없음). 그리고 ‘전체조회’를 켜면 같은 질문에 1,130건 → 1,422건으로, 그동안 못 보던 개인기록·받은편지함 노트까지 292건 더 잡아냅니다 — CLI만의 강점이던 전수 커버리지를, 필요할 때 골라 쓰는 옵션으로 가졌습니다.

왜 이렇게 싸게 끝났나 — 약점이 ‘낭비’였기 때문

진짜 약점이 ‘검색 알고리즘’이었다면 큰 수술이 필요했을 겁니다. 그런데 약점은 매번 반복하던 헛수고(인덱스 재생성)였습니다. 헛수고는 없애면 그만입니다. 그래서 외부 도구 도입·앱 의존 같은 큰 대가 없이, 코드 한 파일 손질로 5.5배가 났습니다.

Part 7 · 판단표

그래서 언제 직접 읽기, 언제 CLI, 언제 하이브리드인가

같은 고민을 하시는 분을 위해, 상황별로 정리했습니다. 핵심 질문은 하나입니다 — “사람이 보고 있나, 그리고 무엇을 찾나?”

상황 대표 예시 추천 한 줄 이유
AI·자동화가 검색 에이전트, 예약 작업, 규칙 자동 적용, 백그라운드 직접 읽기(캐시) 앱 없이 돌고, 순위까지 매긴다. 캐시로 CLI보다 빠르다.
정리된 지식 회수 고객사·도메인 자료, 컨설팅 노트, 보고서 근거 직접 읽기 머리말·순위로 핵심부터 회수. 회수율도 더 높다.
전수 훑기 (사람이 보며) 개인 기록·받은편지함까지, 어디 적었더라 식 탐색 CLI 또는 전체조회 앱이 떠 있다면 CLI가 즉답. 자동화면 ‘전체조회’ 옵션.
의미·개념 검색 “비슷한 생각의 노트”, 표현이 달라도 같은 주제 🟡 임베딩 방식 글자 일치로는 한계. 별도 의미 검색 도구의 몫.
3초 판단 규칙

  1. AI·자동화가 검색하나?직접 읽기(캐시). 앱 의존은 무인운영에서 깨진다.
  2. 잘 정리된 지식에서 핵심을 뽑나?직접 읽기. 순위·회수율이 이긴다.
  3. 사람이 보며 창고 전체를 훑나?CLI(앱 켬) 또는 전체조회 옵션.
마무리

외부 도구가 빨라 보여도, 내 도구의 ‘낭비’부터 의심하세요

이번 벤치마크의 한 줄 교훈은 이것입니다 — “느린 외부 비교에 놀라 갈아타기 전에, 내 쪽이 매번 무슨 헛수고를 하고 있는지부터 보라.” 전용 CLI는 빨랐지만, 그 4.5배는 제 직접 읽기 방식이 매 호출 인덱스를 다시 만드는 낭비가 만든 거품이었습니다. 그 낭비를 걷어내자, 외부 도구의 앱 의존이라는 큰 대가를 치르지 않고도 더 빠르고, 더 정확하고, 더 튼튼한 검색을 가졌습니다.

가장 좋은 답은 ‘둘 중 하나’가 아니라 ‘강점의 결합’일 때가 많습니다. 직접 읽기의 순위·무인운영에, CLI의 속도·커버리지를 옵션으로 합친 하이브리드 — 그게 제가 내린 결론입니다.

※ 본 글의 수치는 필자 환경(노트 46,579개·맥)에서의 단일 실측치이며, 창고 규모·하드웨어·쿼리에 따라 달라질 수 있습니다. ‘직접 읽기’는 필자의 운영 하네스(Sillok) 기준이며, 일반적인 ‘AI가 파일을 읽는 방식’의 한 구현입니다. 핵심은 절대값이 아니라 ‘속도 차이의 원인을 분해하면 싸게 역전된다’는 패턴입니다.

후속 — 이 글의 ‘시맨틱’ 부품을 오픈소스로 공개했습니다

여기서 5.5배 당긴 하이브리드의 마지막 한 층(앱 없이 도는 의미검색)을 독립 도구로 추출해 공개했습니다. → Obsidian 노트를 앱 없이 검색한다 — 오픈소스 byeori(벼리)

Obsidian
지식베이스 검색
RAG
Claude Code
캐시
벤치마크
Agentic PM

Project Research에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기