jaysnote
4분

[LLM Wiki 6] qmd와 자연어 검색: BM25, Vector Search, Reranker

qmd가 BM25, 벡터 검색, query expansion, reranking으로 자연어 검색을 처리하는 방식을 설명한다.

BM25, Vector Search, Reranker가 결합되는 qmd 검색 흐름

키워드 검색과 의미 검색의 차이

qmd의 search, vsearch, query 모드

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도 완벽하지 않다. “비용 문제”를 검색했을 때 고객 가격 불만이 아니라 서버 비용 최적화 회의가 잡힐 수 있다.

BM25, Vector Search, Reranker가 결합되는 비용과 품질 구조

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 전체가 아니라 검색 레이어다. 회의록을 카드로 만드는 일, 액션 상태를 관리하는 일, 권한을 통제하는 일은 별도 설계가 필요하다.

관련 글

← 목록으로