
단순 임베딩의 함정에서 벗어나 요약 임베딩과 SQLite FTS5의 하이브리드 분업으로 사내 도메인 AI를 구축하는 법
이 아티클은 사내 지식을 학습한 인공지능 비서를 구축하는 과정에서 겪은 생생한 시행착오와 설계 진화 과정을 다룹니다. 카파시의 LLM Wiki 방식부터 인덱싱 방식, 그리고 최적의 하이브리드 RAG에 이르기까지 점진적으로 문제를 극복해 나간 기술적 발자취를 추적합니다. 결국 고성능 RAG는 시스템 고도화뿐 아니라 AI, 사람, 기존 검색 기술 간의 역할 분담을 명확히 정의하는 데에 핵심이 있음을 일깨워줍니다.
사내 도메인이나 복잡한 위키 문서를 RAG로 연동하려는 엔지니어들에게 적극 추천합니다. 벡터 DB 도입 비용이 부담스럽거나 사내 특수 약어가 많은 시스템이라면, 경량 데이터베이스인 SQLite를 기반으로 요약 임베딩과 FTS5 하이브리드 방식을 결합하여 고효율의 고성능 검색 엔진을 최단 시간에 구축해 보시기 바랍니다.
사내 도메인 지식을 갖춘 시니어 AI를 만들기 위해 초기에는 LLM Wiki 패턴을 도입하여 다수의 마크다운 문서를 대화 컨텍스트에 직접 로드하는 방식을 적용했습니다. 그러나 문서 수가 증가하면서 매 대화마다 소비되는 토큰 비용이 폭증하고, 컨텍스트가 길어져 중간 정보를 놓치는 'lost in the middle' 현상이 발생하여 응답 품질이 급격히 저하되었습니다.
기존의 본문 임베딩 방식이 가진 의미 평균화 문제와 사내 약어 검색 실패 한계를 해결하기 위해 하이브리드 방식을 구축했습니다. 다주제 문서를 단일 주제로 쪼개고, LLM이 작성한 한 줄 요약본을 임베딩하는 '요약 임베딩(sqlite-vec)'과 본문 전체에 대한 키워드 검색(SQLite FTS5, BM25 알고리즘)으로 두 검색 채널을 분업화했습니다.
요약본 임베딩을 통해 임베딩 모델의 512 토큰 제한으로 인한 잘림(truncation) 문제를 구조적으로 해결했으며, 한 문서당 단일 요약만을 매칭하여 일반어 노이즈를 제거했습니다. 또한 FTS5 도입으로 사내 특수 약어나 티켓 ID 식별자 매칭 성공률을 비약적으로 개선하여 불필요한 토큰 낭비를 줄이고 검색 정확도를 극대화했습니다.
Trade-off
임베딩 모델의 본질적인 한계로 인해 무관한 문서가 낮은 점수로 매칭되는 일반어 노이즈가 완벽하게 배제되지는 못합니다. 또한 새 문서를 저장할 때마다 LLM이 요약문을 정성껏 작성하도록 유도해야 하고 사람의 추가 검토 프로세스가 개입하게 되어, 검색 정확도를 향상시킨 대신 운영상의 추가 리소스 비용과 요약 품질의 편차가 발생할 가능성이 존재합니다.
SQLite에서 벡터 유사도 검색 기능을 지원하는 경량 데이터베이스 확장 모듈입니다. 별도의 전용 벡터 데이터베이스 인프라를 구축할 필요 없이, 단일 SQLite 데이터베이스 파일 하나만으로도 로컬에서 완전하고 빠른 벡터 임베딩 저장 및 유사도 검색을 처리할 수 있는 장점을 가집니다.
거대 언어 모델(LLM)에 입력되는 프롬프트나 컨텍스트 텍스트가 너무 길어질 때, 모델이 제공된 정보의 앞쪽과 뒤쪽 내용은 비교적 잘 기억하지만 중간 부분에 위치한 핵심 세부 정보를 제대로 인지하거나 인출하지 못해 놓치게 되는 현상입니다.
SQLite 데이터베이스 엔진에 기본적으로 내장된 고성능의 풀텍스트 검색 가속화 모듈입니다. 텍스트 문서 세트에 대해 BM25 알고리즘과 같은 고도화된 연관성 가중치 모델을 활용해, 일반적인 관계형 데이터베이스 검색보다 비약적으로 빠른 단어 매칭 및 검색 결과 랭킹 처리를 수행할 수 있도록 돕습니다.



