본문으로 이동
AI에게 도메인을 가르치다 두 번 갈아엎은 이야기 — LLM Wiki + RAG 혼합기
문서

AI에게 도메인을 가르치다 두 번 갈아엎은 이야기 — LLM Wiki + RAG 혼합기

김태훈 · 컬리 · 컬리 기술 블로그

원본 보기

소개

도메인 지식을 LLM에게 먹이는 방법 — Inverted Index, 본문 임베딩, 요약 임베딩+FTS 세 가지 시도와 두 번의 갈아엎기

AI 핵심 요약

사내 도메인 지식을 LLM에 제공하기 위해 LLM Wiki를 구축했지만, 문서가 늘면서 컨텍스트 비용과 정보 누락 문제가 생겨 검색 구조를 두 차례 바꿨습니다. 먼저 Inverted Index를 시도했으나 동의어를 놓치고 같은 키워드가 든 무관한 문서까지 불러왔고, 본문 임베딩은 의미 검색을 개선했지만 다주제 문서의 의미가 평균화되고 약어·티켓 ID 검색에 약했습니다. 최종적으로 문서를 한 주제씩 분리하고, 사람이 검토한 짧은 요약은 multilingual-e5-small과 sqlite-vec으로 의미 검색하며 본문 전체는 SQLite FTS5와 BM25로 검색하도록 역할을 나눴습니다. 이 방식은 임베딩 입력 잘림을 막고 식별자 검색을 보완했으며, 검색 시스템에서는 모델·사람·도구가 잘하는 일을 분담하는 것이 중요하다는 교훈을 남겼습니다.

  • 키워드 색인은 동의어 누락과 무관한 문서의 과다 검색을 일으킬 수 있으므로, 색인 유지 비용까지 함께 평가해야 합니다.
  • 임베딩 모델의 입력 길이 제한을 확인하고, 문서가 잘리는지 실제 토큰 분포로 검증하세요.
  • 다주제 문서는 주제별로 나누면 각 요약의 의미가 선명해져 검색 정확도를 높일 수 있습니다.
  • 의미 검색과 정확한 식별자 검색은 서로 다른 문제이므로, 임베딩과 FTS5·BM25처럼 적합한 검색 채널을 조합하세요.
  • LLM이 만든 요약은 검색 품질의 핵심 메타데이터가 되므로 사람의 검토와 품질 관리가 필요합니다.