개요
이 문서는 정보 검색(Retrieval) 단계에서 주로 사용되는 키워드 기반, 의미 기반, 그리고 하이브리드 검색 방식의 기본 원리와 차이점을 설명합니다.
키워드 기반 검색 방식
- 정보 검색 분야에서 널리 사용되는 가중치 모델로, 주로 문서와 쿼리 간의 관련성을 평가하기 위해 사용됩니다.
- 주요 특징
- 문서 길이 정규화 (문서의 길이가 길수록, 더 많은 단어가 포함될 수 있으므로 문서의 길이를 정규화하여 문서 간 공정한 비교를 가능하게 함)
- 따라서 검색어의 빈도가 같다면, 문서 길이가 짧을 수록 더 높은 점수를 받아 상위에 랭크될 가능성이 크다.
- ex. OpenSearch는 검색 결과의 연관성을 평가하기 위해 BM25 알고리즘을 사용하며, 검색어가 포함된 텍스트의 길이가 짧을수록 높은 점수를 받는다.
- ex. 토스 결제 연동용 MCP 서버는 BM25를 활용해 사용자의 질의와 유사한 청크 문서들을 검색해, 비교적 정밀한 핵심 문맥을 제공한다.
- 쿼리 독립성 (각 쿼리의 단어가 독립적으로 가중치를 받으므로, 각 단어에 대한 계산된 점수를 합산하여 전체 문서의 점수를 계산)
- 즉 쿼리 내의 각 단어가 서로의 영향을 받지 않고 독립된 상태로 관련성을 평가 받는다는 것을 뜻하는 용어
- 문서 길이 정규화 (문서의 길이가 길수록, 더 많은 단어가 포함될 수 있으므로 문서의 길이를 정규화하여 문서 간 공정한 비교를 가능하게 함)
의미 기반 검색 방식 vs 키워드 기반 검색 방식
- 의미 기반 검색은 입력 키워드의 의미와 문맥을 해석하여 관련성을 판단합니다.
- 키워드 기반 검색은 사용자가 입력한 단어와 문서 내 단어가 정확히 일치하는지에 집중합니다.
구분 | 키워드 기반 검색 | 의미 기반 검색 |
---|---|---|
핵심 원리 | 키워드 일치 | 의미/문맥 해석 |
대표 알고리즘 | BM25, TF-IDF | 임베딩, 벡터 유사도 |
장점 | 빠르고 직관적, 구현 쉬움 | 의미상 연관 결과도 찾음 |
단점 | 동의어, 문맥 차이 약함 | 연산량 높고, 튜닝 필요 |
하이브리드 검색
- 키워드 기반과 의미 기반의 장점을 결합하여, 더 정확도 높은 검색 결과를 도출합니다.
- 임베딩 유사도 기반 검색과 BM25 등 키워드 검색 결과를 병렬로 구한 뒤, 재랭킹 모델 등으로 상위 결과를 선정합니다.
- 도메인에 특화된 정렬이 필요하다면 일반적인 재랭킹 모델보다는 특정 규칙을 세워서 수행하는 것이 더 나을 수 있습니다.
- LLM이 프롬프트의 시작과 끝 부분에 집중하는 특성을 활용하여, 높은 점수를 받은 문서를 상단과 하단에 번갈아가며 순차적으로 배치하는 것도 좋은 전략이 될 수 있습니다.
요약
-
정보 검색 성능을 높이기 위해서는 각 검색 방식의 특성을 이해하고, 시스템의 목적에 따라 적절히 조합하는 것이 중요합니다.
-
TODO
- rag 이야기 넣기
- 벡터 db랑 graph db 이야기 넣기
- code review agent가 코드를 rag로 해서 하는 이야기
-
참고용
-
(궁금했던 거)
- 재랭킹을 왜 다시해야 하는가
-
(멘토님이 궁금해했던 거)
- 정말 벡터 DB를 사용해야 하는가
- RAG에서 가장 중요한 건 무엇인가
RAG
- 문서를 다 넣는지
- 벡터db가 아니라 graphdb를 사용하면 성능이 더 좋음
- 벡터 db는 짤라서 넣기 때문에 필요한 지식이 없을 수도 있음 Graph db가 그래서 좋음
- 내가 참고한 문서가 엄청 커서 순서
- 품질에 가장 영향을 많이 미쳤던 게 검색
- rarank로 사용자의 질문에 가장 의도에 맞는 걸 최상위로 올리면 나았음
- 코드와 자연어의 유사도가 다름
- 코드, 한국어 다 잘하는 임베딩 모델은 거의 없음
MCP
- RAG랑 뭐가 다른지
- JIRA같이 최신성이 중요한 데이터는 VectorDB로 구축하기 보다는 MCP로 실시간 데이터로 조회해서 바로 하는 용도
- 데이터의 조회뿐만 아니라 액팅으로 확장