Aurora PostgreSQL에서 한국어 하이브리드 검색 구현하기: pg_bigm + pgvector로 만드는 한국어 특화 RAG
핵심요약
Aurora PostgreSQL에서 pg_bigm과 pgvector를 RRF로 결합하여 한국어 RAG 애플리케이션의 검색 품질을 개선하는 방법을 설명합니다. 한국어의 특성상 키워드 검색과 시맨틱 검색의 결합이 필수적이며, 이를 통해 검색 정확도와 관련성을 높일 수 있습니다.
Aurora PostgreSQL에서 한국어 하이브리드 검색 구현하기: pg_bigm + pgvector로 만드는 한국어 특화 RAG
한국어 RAG 검색 품질 개선을 위한 하이브리드 검색
- 한국어는 교착어 특성상 영어 기반 벡터 검색만으로는 정확한 결과를 얻기 어렵습니다.
- 고유명사, 전문 용어 누락 및 조사/어미 변화, 복합어 처리 문제로 키워드 검색(pg_bigm)과 벡터 검색(pgvector)의 결합이 필수적입니다.
- 본 글에서는 Amazon Aurora PostgreSQL에서 pg_bigm과 pgvector를 RRF(Reciprocal Rank Fusion)로 결합하여 한국어 RAG 애플리케이션의 검색 품질을 개선하는 방법을 다룹니다.
아키텍처 개요 및 주요 구성 요소
- Data Ingestion Pipeline: S3 원본 문서를 Lambda/ECS로 청킹, Bedrock Titan Embeddings V2로 벡터 변환 후 Aurora PostgreSQL에 저장 (pg_bigm GIN 인덱스, pgvector HNSW 인덱스 생성).
- Retrieval & Generation Pipeline: 사용자 질문을 키워드와 쿼리 임베딩으로 변환하여 pg_bigm과 pgvector로 각각 검색.
- RRF 결합: 두 검색 결과를 RRF로 결합하여 Top-K 관련 문서 반환.
- LLM 생성: 반환된 컨텍스트 기반으로 Amazon Bedrock Claude가 최종 한국어 답변 생성.
pg_bigm: 한국어 키워드 검색 강화
- PostgreSQL 기본 전문 검색(tsvector)의 한국어 처리 한계를 극복하기 위해 pg_bigm(바이그램) 활용.
- 2글자 단위 인덱싱으로 한국어 조사/어미 변화 및 부분 문자열 매칭에 효과적.
- LIKE 대신 =% 연산자 및
pg_bigm.similarity_limit설정으로 유연한 매칭 가능. - GIN 인덱스 크기 증가 가능성 있으므로, 500~1,000자 단위 청킹 권장.
pgvector: 시맨틱 검색으로 의미 기반 매칭
- 자연어 질문, 동의어/관련 개념 매칭에 강점.
- 임베딩 벡터 간 코사인 유사도를 계산하여 의미적으로 관련된 문서 검색.
- 실제 테스트 결과, 2단어 조합 및 자연어 질문에서 하이브리드 검색의 장점 극대화.
RRF 결합 및 RAG 파이프라인 적용
- RRF(Reciprocal Rank Fusion) 알고리즘으로 서로 다른 검색 결과의 순위를 기반으로 결합.
- 공식: RRF_score = Σ weight / (k + rank).
- RAG 파이프라인에서는 LLM 또는 형태소 분석을 통해 핵심 키워드를 추출하여
query_text로 전달하는 것이 효과적.