[LLM Wiki 6] qmd와 자연어 검색: BM25, Vector Search, Reranker
qmd가 BM25, 벡터 검색, query expansion, reranking으로 자연어 검색을 처리하는 방식을 설명한다.



qmd는 markdown 문서, 회의록, 지식베이스를 로컬에서 검색하기 위한 도구다. LLM Wiki가 커졌을 때 LLM이 모든 파일을 직접 뒤지지 않도록, qmd가 관련 문서 후보를 찾아준다. Karpathy가 LLM Wiki 글에서 qmd를 언급한 이유도 여기에 있다.
qmd는 무엇인가
qmd는 다음과 같은 자료를 색인할 수 있다.
- markdown notes
- meeting transcripts
- documentation
- knowledge bases
검색 방식은 세 가지를 결합한다.
- BM25 full-text search
- Vector semantic search
- LLM reranking
명령도 역할별로 나뉜다.
qmd search: 빠른 키워드 검색qmd vsearch: 의미 기반 벡터 검색qmd query: BM25, 벡터 검색, query expansion, reranking을 결합한 고품질 검색
회의록 LLM Wiki에서는 qmd가 검색 레이어가 된다.
BM25란 무엇인가
BM25는 전통적인 키워드 검색 알고리즘이다. 문서 안에 검색어가 얼마나 잘 등장하는지를 계산한다.
예를 들어 검색어가 다음과 같다고 하자.
- SSO pricing objection
BM25는 SSO, pricing, objection 같은 단어가 문서에 등장하는지, 얼마나 중요한 단어인지, 문서 길이에 비해 얼마나 의미 있게 등장하는지 본다.
BM25가 강한 영역은 다음과 같다.
- 고유명사
- 프로젝트명
- 고객명
- 약어
- 정확한 제품명
- 날짜나 코드
하지만 BM25는 같은 의미의 다른 표현에 약하다.
- 가격 부담
- budget concern
- too expensive
- cost is a blocker
이 표현들은 의미가 비슷하지만 단어가 다르다. BM25만으로는 놓칠 수 있다.
Vector Search란 무엇인가
Vector search는 문장을 숫자 벡터로 바꿔 의미적으로 가까운 문서를 찾는 방식이다.
- “가격 부담이 크다”
- “budget concern”
- “too expensive”
- “도입 비용이 높다”
이 문장들은 단어가 달라도 의미가 비슷하다. embedding 모델은 이 문장들을 비슷한 위치의 벡터로 만든다.
Vector search가 강한 영역은 다음과 같다.
- 자연어 질문
- 의미가 비슷한 표현
- 한국어와 영어가 섞인 표현
- 주제 기반 검색
하지만 vector search도 완벽하지 않다. “비용 문제”를 검색했을 때 고객 가격 불만이 아니라 서버 비용 최적화 회의가 잡힐 수 있다.

Hybrid Search가 필요한 이유
BM25와 vector search는 서로 보완한다.
BM25: 정확한 단어에 강함Vector Search: 의미 유사성에 강함
그래서 큰 회의록 검색에는 둘을 함께 쓰는 hybrid search가 좋다.
Query Expansion
사용자의 질문은 검색어로 바로 쓰기에는 짧거나 모호할 수 있다.
예를 들어 질문이 다음과 같다고 하자.
- 가격 때문에 막힌 고객 미팅
qmd는 LLM을 사용해 검색용 변형을 만들 수 있다.
- pricing objection
- budget concern
- cost blocker
- too expensive
- purchase delayed due to price
이렇게 확장하면 한국어 표현과 영어 표현이 섞인 회의록에서도 검색 품질이 좋아질 수 있다.
Reranker는 무엇을 하나
BM25와 vector search가 후보를 찾으면, 관련 없는 문서도 섞인다. Reranker는 후보들을 다시 읽고 질문에 더 잘 맞는 순서로 정렬한다.
중요한 점은 reranker가 최종 답변을 쓰는 모델이 아니라는 것이다.
qmd reranker: 후보 문서 정렬 담당메인 LLM: 선택된 문서를 읽고 요약, 분석, 답변 담당
한국어 회의록과 embedding 모델
한국어 회의록에서는 embedding 모델 선택이 중요하다. 기본 모델이 영어 중심이면 다음 표현들을 잘 연결하지 못할 수 있다.
- 가격 부담
- 예산 문제
- 도입 비용이 높다
- budget concern
- too expensive
qmd는 embedding 모델을 바꿀 수 있다. 다국어, 한국어 성능이 좋은 모델을 쓰는 것이 유리할 수 있다. 모델을 바꾸면 반드시 재임베딩해야 한다.
qmd는 LLM Wiki 전체가 아니라 검색 레이어다. 회의록을 카드로 만드는 일, 액션 상태를 관리하는 일, 권한을 통제하는 일은 별도 설계가 필요하다.