쿼리 재작성
쿼리 재작성(Query Rewriting)은 사용자가 입력한 원 질의를 검색이 더 잘 매칭되는 형태로 변환하는 기법으로, 동의어 확장·오타 교정·불필요한 표현 제거·의도 명확화 등이 매칭과 스코어링 이전 단계에서 일어납니다. 하나의 질의를 '더 나은 하나의 질의'로 바꾸는 데 초점을 두며, 검색엔진과 RAG 파이프라인 양쪽에서 검색 정확도와 재현율을 끌어올립니다.
- 쿼리 재작성은 사용자의 원 질의를 검색이 더 잘 이해하고 매칭하는 형태로 바꾸는 기법으로, 매칭·스코어링 직전 단계에서 일어나는 전처리의 포괄적 개념입니다.
- 대표 기법은 동의어·약어 확장, 오타 교정, 어간 추출(stemming) 같은 언어 정규화, 불필요한 표현 제거, 개체명 인식과 의도 명확화입니다.
- 쿼리 확장(Query Expansion)은 관련어를 추가해 재현율을 높이는 재작성의 한 갈래이며, 재작성은 항을 빼거나 개체를 지식 그래프에 연결하는 것까지 포함하는 더 넓은 개념입니다.
- 최근에는 LLM이 검색 전에 질의를 다시 쓰는 RAG 파이프라인이 활발히 연구되고 있으며, Ma et al.의 Rewrite-Retrieve-Read 프레임워크(arXiv:2305.14283)가 대표적입니다.
- 쿼리 분해(Decomposition)·쿼리 팬아웃은 하나의 복합 질의를 여러 하위 질의로 '쪼개는' 반면, 쿼리 재작성은 질의를 하나로 유지한 채 '더 나은 형태로 변환'한다는 점이 핵심 차이입니다.
쿼리 재작성이란
쿼리 재작성(Query Rewriting)은 사용자가 입력한 원 질의를 실제 매칭과 스코어링이 이뤄지기 전에 검색에 더 적합한 형태로 변환하는 기법입니다. OpenSource Connections는 이를 "검색엔진에서 실제 매칭·스코어링이 일어나기 전에 발생하는 여러 일을 아우르는 포괄적 용어"로 정의합니다. 즉 단일 기술이 아니라, 입력 텍스트와 색인된 문서 표현 사이의 간극을 메우기 위한 전처리 단계 전반을 가리킵니다.
이 간극이 중요한 이유는, 사람이 검색창에 적는 말과 문서가 실제로 담고 있는 표현이 자주 어긋나기 때문입니다. 사용자는 약어나 구어체, 오타를 섞어 쓰고, 검색 의도를 압축해 표현합니다. 재작성은 동의어를 더하고, 오타를 고치고, 군더더기를 제거하고, 핵심 개체를 식별해 질의를 '검색엔진이 이해하기 쉬운 형태'로 다듬습니다.
대표적인 재작성 기법
전통적 검색엔진과 LLM 기반 파이프라인에서 공통적으로 쓰이는 기법은 다음과 같습니다.
- 언어 정규화: 어간 추출(stemming), ASCII 폴딩 등으로 활용형·표기 변형을 흡수합니다.
- 오타·띄어쓰기 교정: 잘못 입력된 단어를 고칩니다(예: "strnger things" → "Stranger Things").
- 동의어·약어 확장: 같은 의미의 대체어와 약어 풀이, 도메인 관련어를 더합니다.
- 노이즈 제거: 검색에 불필요한 표현을 덜어내고 핵심 개체만 남깁니다.
- 개체명 인식·연결: 질의 속 고유명사를 식별해 지식 그래프의 개체에 연결하고 후속 모듈이 특별 처리하도록 표시합니다.
Elastic의 실험(Elasticsearch Labs)은 LLM을 활용한 재작성에서 핵심 키워드 보강, 가상 답변 생성(질의에 대한 가능한 답이나 문서 제목을 미리 생성), 개체 보강 등을 다룹니다. 특히 자유로운 재서술 대신 미리 정의한 쿼리 DSL 템플릿에 프롬프트를 결합하는 '템플릿 기반' 접근이 출력을 더 결정적으로 만들고 원 의도에서 벗어나는 것을 방지한다고 설명합니다.
쿼리 재작성 vs 쿼리 확장 vs 쿼리 분해
인접 개념과의 차이를 명확히 하는 것이 중요합니다. 셋은 자주 혼용되지만 적용 범위가 다릅니다.
| 구분 | 핵심 동작 | 질의 개수 | 주 목적 |
|---|---|---|---|
| 쿼리 재작성(Query Rewriting) | 원 질의를 더 나은 형태로 변환(동의어·오타·정규화·항 제거·개체 연결) | 1개 유지 | 매칭 적합성·재현율 향상 |
| 쿼리 확장(Query Expansion) | 관련어를 추가해 질의를 넓힘 | 1개(확장됨) | 재현율 향상(재작성의 하위 갈래) |
| 쿼리 분해·팬아웃(Decomposition / Fan-out) | 복합 질의를 여러 하위 질의로 분리해 병렬 검색 후 결과 통합 | 여러 개로 분리 | 복합 의도를 부분별로 충족 |
핵심은 쿼리 확장이 쿼리 재작성의 한 갈래라는 점입니다. OpenSource Connections는 동의어처럼 항을 단순 치환할 수 없고 대체어를 함께 살려야 하는 경우를 들어, 확장은 재작성 안에 포함되는 특정 범주라고 설명합니다. 다만 'Pretrained Transformers for Text Ranking'(arXiv:2010.06467)이 지적하듯 재작성은 확장보다 더 일반적입니다. 재작성은 사용자가 불필요하게 넣은 항을 제거할 수도 있고, 개체명을 지식 그래프에 연결할 수도 있기 때문입니다.
반면 쿼리 분해와 쿼리 팬아웃은 결이 다릅니다. Microsoft Learn의 Azure AI Search 에이전틱 검색 문서에 따르면, 재작성은 도구를 그대로 둔 채 같은 도구에 대해 질의를 여러 방식으로 다시 쓰는 반면, 분해는 복합 질의를 여러 하위 질문으로 쪼개 각각 독립적으로 실행하고 상위 결과를 누적 맥락으로 합칩니다. 즉 재작성은 '하나의 질의를 더 낫게', 분해·팬아웃은 '하나의 질의를 여러 개로'가 본질입니다.
실제 근거와 사례
LLM 시대 들어 쿼리 재작성은 RAG(검색 증강 생성)의 핵심 단계로 부상했습니다. 원 질의에 포함된 노이즈와 의도 편향 탓에 직접 검색만으로는 충분히 관련 있는 문서를 가져오지 못하는 경우가 많기 때문입니다.
- Rewrite-Retrieve-Read: Ma et al.(2023, arXiv:2305.14283, EMNLP 2023)은 기존의 retrieve-then-read 대신, 검색 전에 LLM이 질의를 먼저 다시 쓰는 Rewrite-Retrieve-Read 프레임워크를 제안했습니다. 나아가 작은 재작성 모델을 강화학습으로 훈련하되 검색 품질을 보상 신호로 삼아, 고정된 검색기와 LLM 리더에 더 잘 맞는 질의를 생성하도록 했습니다.
- 다중 재작성(DMQR-RAG): 원 질의의 다양한 변형을 여러 개 생성해 문서 재현율과 최종 응답 품질을 끌어올리는 접근으로, 단일 재작성의 한계를 보완합니다.
- Elastic 실측: Elasticsearch Labs는 QR로 생성한 항만 단독으로 쓰면 효과가 미미하거나 오히려 떨어질 수 있으며, 원 질의를
must절에 두고 재작성 항을should절의 스코어 부스터로 결합할 때 가장 좋은 결과를 얻었다고 보고합니다. 또한 키워드 추출에서는 소형 모델(Claude 3.5 Haiku)이 상위 모델과 비등하면서도 입출력 비용을 크게 낮췄다고 밝힙니다.
실행 체크리스트
- 원 질의를 무조건 버리지 말고, 재작성 항과 함께 결합해 원 의도를 검색의 중심에 유지합니다.
- 동의어는 치환이 아니라 대체어(OR 조건)로 다뤄 의미를 보존합니다.
- 자유 재서술보다 템플릿·프롬프트 제약을 두어 원 의도에서 벗어나는 드리프트를 방지합니다.
- 오타 교정·언어 정규화(stemming)를 기본 전처리로 적용하고, 핵심 개체는 식별해 가중치를 부여합니다.
- 복합 의도(여러 질문이 한 문장에 섞인 경우)는 재작성이 아니라 쿼리 분해로 분기할지 판단합니다.
- RAG에서는 검색 품질(재현율·랭킹)을 지표로 두고 재작성 효과를 A/B로 검증한 뒤 적용 범위를 정합니다.
참고·출처
- Xinbei Ma et al., "Query Rewriting for Retrieval-Augmented Large Language Models" (2023, arXiv:2305.14283, EMNLP 2023)
- Elasticsearch Labs, "Query rewriting strategies for LLMs & search engines"
- OpenSource Connections, "Fundamentals of query rewriting (part 1): introduction to query expansion"
- Lin, Nogueira, Yates, "Pretrained Transformers for Text Ranking: BERT and Beyond" (arXiv:2010.06467)
- Microsoft Learn, "Agentic retrieval in Azure AI Search"
- DMQR-RAG: Diverse Multi-Query Rewriting for Retrieval-Augmented Generation (arXiv:2411.13154)