RPL은 검색 절차를 프로그램으로 학습해 검색 폭과 컨텍스트 사용을 분리한다

Learning to Program Retrievals: Composing Search Primitives via Reinforcement Learning

arXiv2610.24854v1

Kyuyoung Kim2026-10-17

무엇인가

이 논문은 지식 집약적 과제에서 검색 증강 언어모델이 여러 단계의 검색을 수행하지만, 기존 시스템은 검색을 고정 파이프라인이나 원자적 도구 모음으로 노출한다는 문제를 다룬다. 검색기, 후보 폭, 리랭커, 모델에 반환할 근거의 양을 시스템 설계자가 정하면 정책은 검색 절차 자체를 바꾸기 어렵고, 검색 폭이 컨텍스트 소비와 묶인다. RPL은 정책이 검색 프리미티브를 조합한 짧은 실행 프로그램을 작성하게 해 이 결합을 푼다.

어떻게 동작하나

구체적으로 정책은 <code> 태그 사이에 프로그램 p_t를 내고, 샌드박스가 ProgExec(p_t; x, C)로 실행해 표준 출력을 관찰로 반환한다. SDK에는 밀집 검색(E5), 희소 검색(BM25), RRF 융합, Qwen3-Reranker-4B 리랭킹, 중복 제거 같은 프리미티브가 있고, 변수·루프·조건문·정렬·집합 연산 같은 일반 Python 구성도 쓸 수 있다. 중간 결과는 프로그램의 로컬 상태에 남고, 프로그램이 명시적으로 출력한 내용만 모델 컨텍스트에 들어간다. 그래서 후보를 넓게 검색하고 많이 처리하면서도 모델에는 소량의 근거만 노출할 수 있고, 여러 문서를 집계해 문서 ID 목록만 반환하는 식의 절차도 가능하다.

무엇과 다른가

이 유연성은 탐색 문제를 키운다. 유용한 프로그램은 여러 의사결정이 맞물려야 하는데, RL은 최종 정답 기반의 희소 보상을 주는 경우가 많다. 저자들은 이를 위해 프로그램 변이를 제안한다. 타입 문법이 허용하는 변이 U(p)를 정의하고, 원래 질의는 보존한 채 검색기 교체, 후보 폭 확대, 결과 결합, 리랭킹 추가 같은 국소 변경을 만든다. 변이는 이후 행동을 무효화할 수 있어 최종 검색 턴에만 제한한다. 변이 프로그램을 같은 질문과 코퍼스에서 실행해 충분한 근거를 검색했는지 V_ret로 검증하고, 통과한 변이를 원래 궤적에 끼워 넣어 모델 연속 생성을 다시 샘플링한다. 검증된 변이들은 D_mut로 훈련 데이터에 들어가며, 재샘플된 답 y'의 정답 여부에 따라 답 구간을 감독하거나 마스킹한다. 전체 절차는 RL로 탐색하고, 최근 롤아웃의 차선 프로그램을 변이하고, 검증된 변이 궤적으로 짧게 SFT 증류한 뒤 다시 RL을 재개하는 식으로 번갈아 진행된다. 변이 단계는 필수는 아니고, 정책이 이미 효과적인 구조를 탐색할 때는 생략할 수 있다.

어떻게 쓰나

실험은 Qwen3 4B와 8B에서 진행됐고, NQ와 HotpotQA 훈련 세트로 학습한 뒤 NQ, TriviaQA, PopQA, HotpotQA, 2WikiMultiHopQA, MuSiQue, Bamboogle의 7개 오픈도메인 QA 벤치마크에서 평가했다. 비교 대상은 직접 추론, CoT, RAG, IRCoT, Search-o1, R1, Search-R1, AutoRefine 등이다. RPL은 평균 EM 0.515(4B)와 0.531(8B)로 가장 좋은 평균 성능을 냈다. Search-R1과 AutoRefine 대비 평균 EM을 4B에서 각각 9.8%, 11.5%, 8B에서 각각 7.5%, 9.0% 개선했고, 4B RPL 모델이 모든 8B 베이스라인을 앞섰다. 개선은 도메인 내외 벤치마크에 걸쳐 나타났고, HotpotQA, 2WikiMultiHopQA, MuSiQue 같은 다중 홉 과제에서 특히 컸다.

전제와 한계

코퍼스 수준 추론 벤치마크인 GlobalQA에서는 두 모델 크기 모두 answer F1과 document-coverage F1이 가장 높았다. Qwen3-8B에서 RPL은 평균 answer F1을 Search-R1 대비 40.6%, MARAG-R1 대비 58.2% 개선했고 4B에서도 큰 개선이 있었다. RPL은 모델 규모가 4B에서 8B로 커질 때 성능이 더 오르는 반면 Search-R1과 MARAG-R1은 거의 변하지 않아, 더 유능한 모델이 프로그래머블 검색의 유연성을 더 잘 활용한다는 해석을 뒷받침한다. 효율 측면에서 RPL은 GlobalQA에서 1.00~1.27회의 검색 턴을 사용해 MARAG-R1의 2.00~4.61회, Search-R1의 2.18~2.24회보다 적었고, 학습 시간은 Search-R1보다 최대 약 5.8배, MARAG-R1보다 2.2배 빨랐다.

프로그램 변이의 효과도 수치로 제시된다. 200스텝에서 한 번 변이를 적용한 4B 정책은 추가 RL 전에도 NQ에서 1.6 EM, HotpotQA에서 2.1 EM 앞섰고, 최종적으로 NQ 0.536, HotpotQA 0.539를 기록해 RL만 한 0.516, 0.517보다 각각 3.9%, 4.3% 높았다. 구간 평균 격차는 1.7 EM과 2.3 EM이었다. 8B에서는 최종적으로 5.0%와 1.5% 개선, 평균 격차 1.0 EM과 0.6 EM이었다. 검색 행동 공간을 넓히는 실험에서는 전체 SDK가 이중 검색기 설정보다 평균을 4B에서 1.9%, 8B에서 6.3% 올렸고, 그 위에 프로그램 변이를 더하면 4B에서 5.7%, 8B에서 1.7% 추가 개선됐다.

개발자 관점에서 RPL은 넓은 검색이 필요하지만 모델 컨텍스트는 작게 유지해야 하는 RAG 에이전트, 다중 홉 질의, 문서 집계형 코퍼스 추론, 검색 지연과 학습 비용을 줄이려는 시스템에 relevant하다. 다만 샌드박스 실행, 타입 문법, 실행 검증, 검색 근거 검증, 정답 여부에 따른 감독 마스킹 같은 안전장치를 함께 설계해야 한다. 저자들이 밝힌 전제와 한계는 변이가 최종 검색 턴에만 제한된다는 점, 변이 단계가 선택적이며 유용한 구조 탐색을 보장하지는 않는다는 점, 질의 구성과 최종 정책 최적화는 여전히 RL의 몫이라는 점이다. 평가도 Qwen3 4B·8B와 지정된 QA·GlobalQA 설정에 한정되어 있다.