피드로 돌아가기
Dev.toAI/ML
원문 읽기
단일 벡터 임베딩은 질문의 모든 의미를 하나의 좌표로 압축해 하나의 의미적 영역만 탐색한다
One query is never enough: why top RAG systems search three times
AI 요약
Context
기존 RAG 시스템은 사용자의 질문을 단일 임베딩으로 변환해 벡터 데이터베이스를 검색한다. 하나의 질문이 복수의 의미적 개념을 포함하더라도 임베딩 결과는 벡터 공간의 단일 점으로 표현된다.
Technical Solution
- 단일 질문의 세 가지 개념(데이터베이스 연결, Flask 패턴, 성능 진단)을 분리한다
- 각 개념별로 독립적인 검색 쿼리를 생성한다
- 생성된 쿼리 각각을 임베딩하고 병렬 검색을 수행한다
- Reciprocal Rank Fusion 등 전략으로 검색 결과를 결합한다
- LangChain의 MultiQueryRetriever와 LlamaIndex의 SubQuestionQueryEngine이 이 패턴을 구현한다
Impact
12개 문서 코퍼스 기준, 단일 쿼리 검색은 Flask-데이터베이스 결과만 반환하지만 다중 쿼리 검색은 성능 진단 관련 문서까지 포함한다
Key Takeaway
복잡한 질문은 여러 의미적 영역에 걸쳐 있으므로 단일 임베딩으로는 완전한 검색 결과를 얻을 수 없다
실천 포인트
Flask 앱의 데이터베이스 연결 지연 문제에서 다중 쿼리 분해를 적용 시 단일 검색으로는 놓치던 프로파일링 및 병목 식별 관련 문서까지 검색 범위에 포함시킬 수 있다