
지난 글에서 제 노트 4만여 개를 5.5배 빠르게 검색한 과정을 공유했습니다. 그 글의 마지막 조각 — “글자는 달라도 뜻이 같은 노트”를 잡아내는 헤드리스 하이브리드 임베더 — 를 다듬어 오픈소스로 공개합니다.
이름은 byeori(벼리). 앱도, GPU도, 클라우드도 없이 마크다운 노트 폴더를 로컬에서 검색하는 명령줄 도구입니다. 정확매칭(ripgrep)과 의미검색(벡터)을 한 번에 묶어 순위를 매깁니다. 한국어·교차언어를 지원하고, 라이선스는 Apache-2.0입니다.
Claude Code 사용 분석 시리즈 — 공개에 앞서, 제가 앞세운 강점이 사실인지부터 직접 검증한 결과까지 정직하게 적었습니다(과장 없음).
① byeori는 “앱 안에 사는” 의미검색의 반대입니다 — 앱을 안 켜도, GPU 없이, 데이터를 기기 밖으로 보내지 않고, 어디서든(크론·CI·노트북) 돕니다.
② 제가 앞세운 강점을 직접 검증했습니다. 한국어·교차언어는 사실(다만 특화 최고는 아님), 중소기업·1인 맞춤은 강점, 속도도 사실, 정확성은 “회수율은 오르되 정밀도는 보통”으로 정직하게 적었습니다. 공개 예제에서 영어 질의가 한국어 노트를 1순위(0.43)로 찾았습니다.
③ 저장소는 이미 공개되어 있습니다 — github.com/peterkimpmp/byeori (Apache-2.0, 테스트 통과). 5분이면 설치·색인·검색까지 됩니다.
의미검색만 ‘앱 안에’ 갇혀 있었습니다
“글자 검색은 앱 없이도 잘 됩니다. 그런데 ‘비슷한 뜻’까지 찾으려는 순간, 대부분 노트 앱의 플러그인에 손이 갑니다. 앱이 켜져 있어야 하고, 스크립트로 부를 수도 없죠. 그 마지막 한 층만 떼어내면, 완전히 앱 없는 검색이 됩니다.”
— 지난 글(벤치마크)이 남긴 숙제
지난 글의 결론은 “외부 도구로 갈아타지 말고, 내 직접 읽기 방식의 낭비만 고치면 더 빠르고 튼튼하다”였습니다. 다만 한 가지가 남았습니다 — 의미(임베딩) 검색입니다. 글자가 일치하지 않아도 뜻이 같은 노트를 찾는 이 기능은, 흔히 노트 앱의 플러그인에 묶여 있습니다.
그래서 그 한 층을 앱 없이 돌아가는 작은 도구로 직접 만들었고, 쓸 만하다고 판단해 오픈소스로 공개합니다. 이름은 byeori입니다.
- byeori가 무엇인가 — 그리고 왜 또 하나의 검색 도구인가
- 강점이 진짜인가 — 제 주장(한국어/맞춤/속도·정확성)을 직접 검증한 결과
- 어떻게 동작하나 — 5단계, 그리고 5분이면 시작하는 법
- 정직한 한계 — 무엇을 못 하는지, 어디에 안 맞는지
‘그물의 머리줄’을 당기면, 맞는 노트가 딸려 옵니다
벼리는 그물의 위쪽을 꿰어 잡아당기는 한 가닥 줄입니다. 그 줄을 당기면 그물 전체가 따라 올라오죠. 검색이 해야 할 일이 정확히 그것입니다 — 맞는 한 가닥을 당기면 나머지가 딸려 온다.
한 줄로 정의하면 — 앱도, GPU도, 클라우드도 없이 마크다운 노트 폴더를 로컬에서 검색하는 명령줄 도구입니다. “Obsidian 의미검색” 도구들은 대개 앱 안에 살지만, byeori는 그 반대로 어디에든 둘 수 있는 도구입니다.
제가 앞세운 강점을 직접 검증했습니다 (과장 없이)
오픈소스로 내면서, 제가 앞세웠던 강점 세 가지가 사실인지부터 확인했습니다. 마케팅 문구가 아니라 실측과 한계를 같이 적습니다.
제가 처음 강조하지 못했지만, 실제로 가장 큰 차이는 헤드리스라는 점입니다. 크론·CI·에어갭 어디서나 돌고, 임베더가 없으면 글자 검색으로 우아하게 강등되며, 저장 형식이 numpy/json이라 들여다볼 수 있습니다(블랙박스 아님).
있을 때와 없을 때, 그리고 숫자
“하이브리드가 좋다”는 말보다 숫자가 정직합니다. byeori가 있을 때(어휘+시맨틱)와 없을 때(어휘 단독)를 같은 쿼리로 비교했습니다.
질문의 단어가 노트에 글자 그대로 없으면 놓칩니다. “직원 번아웃”으로 찾으면 “소진·탈진”이라 쓴 노트, 같은 주제를 영어로 적은 노트는 회수되지 않습니다.
뜻이 같으면 표현·언어가 달라도 끌어옵니다. 같은 6개 패러프레이즈·교차언어 쿼리에서, 어휘가 못 띄운 관련 노트를 합계 37건 추가 회수했고, 영어 질의는 어휘 0건 → byeori가 한국어 노트를 1순위로 찾았습니다.
속도도 숫자로 옮기면 — byeori의 엔진을 제 실제 vault(노트 약 1.5만 개)에 돌린 실측입니다.
※ 제 실제 vault(노트 약 1.5만·청크 11.7만, 맥) 실측과 공개 예제 기준입니다. 절대값은 노트 규모·하드웨어·모델에 따라 달라지며, 핵심은 비율과 패턴입니다 — 병목은 검색이 아니라 모델 로드이고, 그래서 상주 서버가 답입니다.
다섯 단계로 동작합니다
제목(#·##·###) 경계로 노트를 나누고, 각 조각 앞에 머리말 맥락(제목·태그)을 붙여 조각이 스스로 문맥을 갖게 합니다.
정적 임베딩(numpy만, torch/GPU 없음). 기본은 다국어 모델, 환경변수로 더 강한 모델로 교체할 수 있습니다.
numpy 평면 행렬 한 파일. 조각마다 내용 해시로 키를 매겨, 다시 색인할 때 바뀐 것만 임베딩합니다.
어휘(ripgrep)와 의미(코사인 상위)를 상호 순위 융합(RRF)으로 병합. 색인·임베더가 없으면 글자 검색으로 강등됩니다.
모델과 색인을 작은 통로(소켓) 뒤에 상주시켜 질의를 데워 둡니다(차가운 1초 → 따뜻한 수십 ms).
아키텍처 — byeori는 ‘vault’와 ‘LLM’ 사이에 있습니다
byeori는 그 자체로 답하지 않습니다. 노트 폴더(vault)와 LLM(Claude·Codex) 사이에 앉아, “맞는 노트를 찾아 순위 매겨 건네는” 검색 레이어 역할만 합니다.
직접 읽기 (앱·GPU·클라우드 없음)
.byeori/serve · 모델+인덱스 상주(warm)
search · 어휘(ripgrep) + 시맨틱(cosine) → RRF 병합
순위 매긴 관련 노트 (top-k)
시퀀스 — 질문 하나가 흐르는 길
search("___", --mode hybrid) 호출설치 → 색인 → 검색
파이썬만 있으면 됩니다. 첫 실행 때 작은 모델(수십 MB)을 한 번 내려받고, 이후엔 전부 로컬입니다.
# 설치
pip install git+https://github.com/peterkimpmp/byeori
# 1) 색인 (이후엔 바뀐 것만 다시 임베딩)
byeori index ~/notes
# 2) (선택) 데운 서버 — 질의가 수십 ms
byeori serve ~/notes &
# 3) 검색 — 기본은 하이브리드
byeori search ~/notes "회의 후 결정된 액션 아이템 정리"
byeori search ~/notes "model evaluation" --mode semantic --top-k 5
빠른 글자 검색을 함께 쓰려면 ripgrep을 설치해 두면 좋습니다(brew install ripgrep). 없으면 의미검색만으로도 동작합니다.
작은 팀·1인을 위한, 사적이고 저렴한 검색
내 지식베이스를 사적으로(클라우드에 안 올리고), 저렴하게(인프라 없이), 커스터마이즈해서 검색하고 싶은 소규모 팀·1인 컨설턴트·지식근로자에게 맞습니다. 특히 한국어·혼합언어 노트를 쓰는 분에게요.
특허 부여 + 자유로운 재사용으로 상업·엔터프라이즈 환경에 적합합니다. byeori는 의도적으로 작고 독립적인, 공개·무료 검색 레이어입니다. 마음껏 쓰고, 고치고, 회사 안에 넣으셔도 됩니다.
무엇을 못 하는지도 적습니다
- 정적 임베딩은 빠르지만 최고 정밀도는 아닙니다. 속도·무GPU를 위해 정밀도를 일부 양보합니다. 더 강한 모델로 교체하거나, 원격(클라우드) 임베딩을 옵션으로 켤 수 있습니다.
- numpy 평면 저장은 수십만 조각까지 적합합니다. 그 이상 규모는 전용 벡터 저장소(예정)가 정답입니다.
- v1엔 재랭킹(reranking)이 없습니다 — 자연스러운 다음 단계입니다.
- 이건 풀 RAG(검색 증강 생성·Retrieval-Augmented Generation) 프레임워크가 아니라 초점을 좁힌 검색 도구입니다.
필요한 한 층만, 작게 — 그리고 공개
큰 프레임워크나 무거운 인프라가 답이 아닐 때가 많습니다. 제겐 “앱 없이 도는 의미검색 한 층”이 필요했고, 그래서 딱 그만큼만 작게 만들었습니다. 쓸 만하다고 판단해 오픈소스로 공개합니다 — 같은 고민을 하는 분께 그대로 쓸모가 있기를 바랍니다.
→ github.com/peterkimpmp/byeori (Apache-2.0)
※ 본 글의 수치(교차언어 1순위 0.43 등)는 공개 저장소의 합성 예제에서의 실측이며, 노트 규모·하드웨어·모델에 따라 달라집니다. byeori는 제 운영 하네스에서 쓰던 헤드리스 임베더를 독립 도구로 추출·일반화한 것입니다.
「Karpathy의 LLM과 Obsidian 지식 결합」
「llm-wiki vs 10년 obsidian-vault — 30시간 RAG 실측 회고」
「RAG 지식관리와 PM — PO·PM·PL의 조직 자산화」
「Fable 5 첫 하루 — 모델 × 하네스 × RAG」
「구글 OKF·Obsidian Vault·llm-wiki — 무엇을 어떻게 시작할까」
「내 노트 4만 개 검색 — 직접 읽기 vs 전용 CLI, 하이브리드 5.5배」
- X-1 AI/AX 2030 전략: McKinsey, BCG, Accenture, Deloitte, Gartner 교차 분석
- X-2 빅테크 리더십 격변과 AX 전략
- X-3 2026년 GitHub에서 주목할 프로젝트와 AI 전환 신호
- X-4 AI 에이전트 2026 상반기 대해부 — 지금 무슨 일이, 리더는 무엇을
- E-1 AI 네이티브 기업 전환 — CHO·PMO 재정의
- E-2 한국 기업 AX 2030 (Capstone)
- E-3 NH농협은행 SAFe 애자일 3년 — 페이스메이킹의 기록
- E-4 하나은행 × BCG 애자일 전환 — 두 개의 리듬으로
- E-5 네이버랩스 AKI — 하이브리드 애자일 PMO로 7개 제품을 한 박자로
- E-6 일곱 도메인 업무 흐름 지도 — 내 도메인의 게이트는 어디에 걸려 있나
- EO-1 우리 회사 업무, 어디까지 Agent에 맡길까
- EO-2 사내 RAG의 진짜 테스트: 부서 이동과 문서 개정을 견디는가
- EO-3 회의록에서 업무 등록까지: 중복 실행을 막는 Agent
- EO-4 Agent 성적표: 답변·업무 완료·재작업을 함께 재기
- EO-5 전문가의 지식은 어떻게 다음 프로젝트의 근거가 되는가
- EO-6 Agent 도입 30일, PMO는 무엇을 보고 계속할지 결정할까
- EO-7 Sillok × Astra/ultra: 시너지를 판정하는 업무 실험
- EO-8 공공 SI와 제조 SCM, 같은 Agent에서 달라지는 경계
- K-1 Agentic 시대, PM의 온톨로지맵 — Obsidian을 통해 나만의 RAG를 만드는 법
- K-2 Karpathy의 LLM과 Obsidian 지식 결합
- K-3 Karpathy의 autoresearch: PM에서의 적용 사례
- K-5 Karpathy LLM OS 시각으로 본 AX PM/PL 역량 — Claude Code 소스 교차 분석
- K-6 30시간 RAG 실측 — Karpathy llm-wiki vs obsidian-vault 양강 비교
- K-7 구글 OKF·Obsidian Vault·llm-wiki — 무엇을 어떻게 시작할까
- K-8 Obsidian × LLM 4만 노트 — 개인 RAG 최종 아키텍처 5층
- K-9 PM 온톨로지맵 템플릿 배포판 — 30분에 채우는 5칸
- G-1 삼성전자 GAUSS PM Agent: 효과적 설계로 주니어 PM 지원하기
- G-2 주니어 PM 위한 AI 하네스 구축 가이드
- G-4 삼성 DX 엔지니어를 위한 Codex 온보딩 — 하네스 & 개인 RAG
- G-5 나의 Agent 비서, 블록 12개로 조립한다 — 재사용 블록과 77%의 법칙
- G-6 내 업무를 맡길 AI 에이전트 — 6블록 설계와 PROFILE BIND
- CC-4 내 노트 4만 개 검색 — LLM 직접 읽기 vs 전용 CLI, 하이브리드 5.5배
- CC-5 Obsidian 노트를 앱 없이 검색 — 오픈소스 byeori(벼리)
- CC-6 사내 지식을 RAG로 — 망분리·토큰0 6단계
- G-8 4.5TB 클라우드 단일화 — Mac × 클라우드 × Agentic 업무환경
- A-5 Fable 5와 보낸 첫 하루 — 모델 × 하네스 × RAG 실측 회고
- A-6 맥은 이미 AI 워크스테이션 — 사진·노트·인박스 0원 정리
- A-7 Mac@Work 2026 — 맥 20년차의 도구 모음과 Agentic 카테고리
- A-8 좋은 엔진은 없다, 맞는 엔진이 있다 — Codex/Sol vs Claude/Fable 5대 실전 비교
- A-9 프롬프트는 형식을, 사내 RAG는 판단을 채웠습니다 — PMO 문서 2×2 실험
- CC-3 Opus xhigh 솔로 vs ultracode 멀티에이전트 — 작업유형별 A/B 실측
- G-3 대기업 직장인을 위한 AI Agent & Skill 추천 가이드 2026
- G-7 녹취 엔진 두 레인 — SpeechAnalyzer와 Alt, 코칭·컨설팅 6장면 판단표
- CC-7 Claude Code × GPT-5.6 Sol — CCR vs 순정 Codex 7시나리오 실측
- P-0 7인의 사고 체계 종합 프레임워크
- P-1 PM 코치가 바라보는 AI 전문가 탐구 1편: Andrej Karpathy
- P-2 Sutskever: 압축이 곧 지능이다
- P-3 Hassabis: 제1원리 분해
- P-4 LeCun: 세계 모델 + 예측
- P-5 Hinton: 거버넌스 + 자기부정
- P-6 Ng: AI 전환 플레이북
- P-7 Fei-Fei Li: 인간중심 설계
- P-8 Builders 종합: Boris·Cat·Truell·Masad·Murati·Brockman
- P-9 Operators 종합: Altman·Amodei·Nadella·Pichai·Zuckerberg·Suleyman
- P-10 Hardware 양강: Jensen Huang · Lisa Su
- P-11 DeepSeek 량원펑 — 연속 학습의 공백과 하네스
- S-1 Agentic PM의 시대가 열리다 — LG전자 SW PM 워크숍을 마치며
- S-2 삼성전자 PMC: AI와 함께하는 PM 교육 혁신
- S-3 SKT Agent 도출을 위한 AI 퍼실리테이션 기법
- S-4 리스크는 그릇이었다 — LG전자 SW공학연구소 GenAI RISK 워크숍
- S-5 코드 한 줄 없이 손익관리팀이 만든 에이전트 — 신한EZ손해보험
- S-6 “어디까지 입력해도 되나요?” — 삼성 구매 현장의 Agentic 각성
- S-8 ‘바이브 프로젝트 매니징’을 스스로 이름 붙였습니다 — 현대모비스 편
- S-9 “대충 시키면 다 해줄 줄 알았는데” — SK쉴더스 보안 PM들의 이틀
- S-16 “완료했습니다”가 서로 다른 뜻이었다 — 다섯 차수 종료 회고 NEW
- PS-2 공공 PM이 ‘AI 이용자’에서 ‘AI 활용자’로 — 아이티센 편
- M-1 Agentic PM 시리즈 진입 가이드 — 전체를 한 장으로
- Z-1 실록(Sillok) — 5세기 Audit-Grade 거버넌스를 LLM 운영에 빌려온 한국형 LLMOS 하네스
- Z-2 실록(Sillok) 2026 상반기 결산 — RAG·고객사·지능화 루프·오픈소스
- Z-3 하네스×RAG 기업 컨설팅 — 네 현장·환각 방지·TOP10 자가진단·진화 루프
- Z-4 하네스 엔지니어링 백서 — Weng 하네스론×실록 구조 매핑·자기개선 루프·정직한 결산
- Z-5 에이전트 스킬 수명주기 백서 — Dynamic Agent Skills 8단×실록 매핑(7 온전+1 갭)·분기 12문항 레퍼런스·PO/PM/PL 컨설팅 직역
- Z-6 AX 시리즈 100편 기념 특집 — 실록·3층 RAG 운영 실측: 대시보드 5장 해설·구조 도식 2장·지식 구조 7층·강의/프로젝트/발행 3사례·응용분야·정지 사고 공개
- W-1 Agentic 월간 관전포인트 2026-05 — 가우스+빅테크 듀얼 모델 시대
- W-2 Agentic 2026 상반기 총결산 — 다섯 축 6개월
- Z-7 100편 기념 특집 2편 — 배치 사다리 6단·수명주기 22일/90일·계측 3지표 (팩 119 중 16개가 라우팅 80% 실측)
- Z-8 100편 기념 특집 3편 — 위임 경계=비가역성·88스텝 중 45개(51%) 사람 확정·비가역 6갈래·4칸 표 템플릿