ODR은 문헌 연구를 수정 가능한 상태와 근거 루프로 자동화한다
Optimist Deep Research: An Iterative, State-Centric Agent for Autonomous Literature Research
무엇인가
이 논문은 문헌 연구를 검색 한 번 뒤 요약하는 RAG로 처리하는 관행을 비판한다. 실제 연구에서는 읽는 동안 질문에 대한 이해가 바뀌고 새로운 하위 질문이 생기며, 근거를 모으는 데 그치지 않고 서로 다른 연구가 같은 주장을 뒷받침하는지 따져야 한다. Optimist Deep Research(ODR)는 이 과정을 명시적이고 수정 가능한 연구 상태 위에서 반복적으로 근거를 획득하는 오픈소스 에이전트로 구현한다. 저자들이 강조하는 핵심은 연구 계획이 조사의 입력이면서 동시에 조사 결과로 바뀐다는 점이다.
어떻게 동작하나
구현은 LangGraph 상태 그래프 위의 두 루프로 이루어진다. 안쪽 루프는 이미 찾은 관련 문서의 인용을 따라가며 코퍼스를 넓히고 포화되면 멈추며, 바깥쪽 루프는 읽기 라운드 뒤 비평가가 근거를 검토해 계획을 고치고 다시 검색으로 보낸다. 상태는 질문, 수정 가능한 하위 질문 트리, 무엇을 찾을지 나타내는 의도, 출처별 쿼리, 정규화된 문서, 근거 주장의 5단계 계층으로 저장된다. 하위 질문과 의도를 분리해 두었기 때문에 찾으려는 내용은 유지한 채 검색 방식만 바꿀 수 있고, 각 의도의 수확량(발견 문서 수와 관련 문서 수)도 기록된다. 병렬 분기에서는 예산을 델타로 합산하고, 문서는 더 많은 정보를 가진 값으로 필드 병합하며, 문서 상태는 candidate<selected<failed<read 순위로 뒤로 가지 않게 유지한다. 근거와 모순은 내용 해시로 중복을 제거한 append-only 목록이다.
무엇과 다른가
검색 단계에서 플래너는 근거와 우선순위를 가진 최소한의 하위 질문을 만든다. 하나의 쿼리 문자열을 모든 API에 쓰지 않고, 의도별로 관련 출처를 고른 뒤 출처에 맞는 쿼리를 최대 min(4, 출처 수)개 생성한다. 각 출처·쿼리 쌍은 검색 예산을 하나씩 소모하며 우선순위가 높은 하위 질문부터 계획된다. 지원 출처는 arXiv, OpenAlex, Crossref, PubMed, Semantic Scholar, 웹이고 Semantic Scholar는 API 키가 있을 때만 auto로 쓰인다. 읽기 전에 여러 출처의 레코드를 하나의 정규 문서로 합치는데, DOI, 영구 식별자, 정규화 제목과 제1저자 성, 0.93 이상의 제목 유사도와 연도·저자 보강 신호 순으로 매칭한다. 숫자 서명이 다르면 퍼지 병합을 거부하고, 짧은 제목은 특징 토큰 3개 이상일 때만 접두 매칭하며, 포함 관계는 4개 이상을 요구한다. 유니코드 NFKD 정규화와 대시 통일도 적용하고, OpenAlex의 잘못된 arXiv DOI는 제목·저자 검증과 구두점 제거 제목 검색으로 확인해 거부·기록한다. 중복을 놓치면 읽기 한 번이 낭비되지만 잘못 합치면 한 논문의 근거가 다른 논문에 조용히 붙기 때문에 정밀도를 우선한다.
어떻게 쓰나
선별은 LLM이 문서 10개 묶음을 활성 하위 질문마다 0에서 1 사이 관련도로 평가하고 한 줄 메모를 붙이는 방식이다. 키워드 겹침이 아니라 실질을 보도록 지시하며 점수는 최댓값으로 병합하고, 새 하위 질문이 추가되면 기존 코퍼스는 그 질문에 대해서만 다시 선별해 중복 비용을 피한다. 순위 점수는 관련도에 인용 영향, 최신성, 출처 품질, 다중 출처, 1차 연구, 신규성을 가중합한 값이며 기본 가중치는 관련도 1.0, 인용 0.15, 최신성 0.20, 출처 품질 0.10, 다중 출처 0.10, 1차 연구 0.10, 신규성 0.15다. 인용 영향은 연령으로 나눈 인용 수를 log(1+c/a)/log61로 정규화해 60회/년에서 포화시키고, 인용 수가 없으면 0이 아니라 0.3을 준다. 최신성은 1년 이내 1에서 15년에 0으로 선형 감소하고, 출처 품질은 DOI+학회 1.0, 기타 색인 0.85, DOI 없는 프리프린트 0.7, 웹 전용 0.35다. 읽기 할당은 한 하위 질문이 예산을 독식하지 않도록 우선순위 순서의 라운드 로빈으로 하고, 선택된 문서가 다른 하위 질문에도 관련되면 두 번째 단계에서 연결한다. 한 문서를 여러 하위 질문에 대해 읽는 것은 한 번의 LLM 호출이라 읽기 예산을 추가로 쓰지 않는다. 인용 스노볼링은 관련도 0.7 이상이면서 직접 검색으로 찾은 문서에서만 시작하고, 최근 3년에 근거가 몰리면 가장 관련 높은 최근 논문에서 backward, 중앙 연도가 2020 이하이거나 혼합이면 가장 많이 인용된 논문에서 forward로 확장한다. backward는 Semantic Scholar에서 OpenAlex와 Crossref로, forward는 Semantic Scholar에서 OpenAlex로 이어지며, 포화는 라운드별 새 정규 문서 수를 검사한 후보 수로 나눈 수확량이 두 라운드 연속 0.10 미만이거나 라운드·읽기 예산이 끝나면 멈춘다.
전제와 한계
읽기 단계의 산출물은 요약이 아니라 주장, 지지, 위치, 유형, 강도를 가진 근거 항목이다. 좋은 주장은 방법, 베이스라인, 과제를 명시한 자기완결적이고 검증 가능한 단언이어야 하며, 초록만 읽는 기본 모드에서는 위치를 Abstract로 두고 강도를 0.6 이하로 제한한다. 전체 텍스트 모드에서는 PDF를 받아 절로 나눠 실제 절 위치를 쓴다. 각 근거는 정확히 하나의 하위 질문에 귀속되고, 두 질문에 걸치는 발견은 질문별로 두 번 방출된다. 정규화된 주장 텍스트로 클러스터를 만들고, 서로 다른 문서가 2개 미만이거나 평균 강도가 0.5 미만이면 약하게 지지된 클러스터로 표시한다. 다양성 보고서는 실제 근거를 낸 문서만 대상으로 최상위 문서가 근거의 35% 초과, 최상위 저자 그룹이 30% 초과, 제1저자가 4명 미만이면 집중으로 플래그한다. 하위 질문별 합성이 끝나면 전역 합성이 발견에서 개요를 도출하고, 비평가는 커버리지, 근거 품질, 인용 커버리지, 출처 다양성, 모순, 최신성, 지식 공백, 검색 포화의 여덟 차원을 보고 이진 판정 대신 새 검색 의도, 스노볼 요청, 모순, 하위 질문 추가·분할·표현 변경·우선순위 하향·종료 같은 계획 편집을 반환한다. 종료는 비평가의 충분성 판단과 예산이 정해진 순서로 결정하며, 보고서는 개요의 절마다 해당 근거만 넣어 쓰고 인용은 레지스트리 식별자로만 달며 레지스트리에 없는 식별자는 제거한다. 참고문헌 목록도 모델이 생성하지 않고 실제 인용된 문서에서 만든다.
사례 연구는 최근 AI 에이전트 메모리 연구를 2023년 이후 실증 평가로 범위를 좁혀 수행했다. 모든 역할에 gpt-4o-mini를 쓰고 arXiv, OpenAlex, Crossref를 활성화했으며 초록만 읽고 문서 40개, 검색 30회, 스노볼 2라운드, 반복 3회를 예산으로 두었다. 237개 검색 문서 중 28개를 읽고 플래너 출력에서 최종 보고서까지 약 3분 30초가 걸렸다. 첫 반복 뒤 비평가는 플래너가 예상하지 못한 메모리 관리가 사용자 신뢰와 만족에 미치는 영향을 RQ6으로 추가했고, 이미 다섯 하위 질문에 읽힌 doc_0139를 RQ6에 대해서만 다시 읽어 근거 3개를 더 추출했다. 읽기 할당은 예산을 분산해 모든 하위 질문이 최소 7개 근거를 갖게 했고, 정규화는 첫 반복 적중의 34%(195개 중 66개)를 병합했으며 두 번째 반복의 105개 적중 중 45개가 기존 코퍼스 문서로 해결됐다. 평균 근거 강도는 0.59로 초록 전용 상한에 붙어 있었다. 사례 연구는 여섯 가지 약점도 드러냈다. 두 번째 스노볼 라운드가 같은 네 씨앗을 같은 방향으로 다시 골라 이미 코퍼스에 있던 48개 엣지를 가져왔고, RQ6 추가 때 237개 문서를 다시 선별하면서 기존 의도 수확량이 부풀어 한 의도가 15개 발견 중 18개 관련으로 기록됐다. arXiv는 두 반복 모두 0건을 반환한 반면 OpenAlex와 Crossref는 첫 반복에 135건과 60건을 반환했고, 237개 정규 문서 중 2개만 여러 출처에서 반환돼 다중 출처 신호가 거의 상수가 됐다. 두 번째 비평의 RQ3 종료·RQ4 우선순위 하향 편집은 검색 예산이 먼저 끝나 적용되지 않았고, API 키가 없던 이전 실행에서는 모든 LLM 호출이 실패했는데도 정지 이유가 비평가가 근거를 충분히 판단했다고 잘못 표시됐다. 앞의 두 문제는 이후 코드에서 수정됐다.
저자들은 이 논문이 시스템 설명이며 통제된 평가가 아니라고 명시한다. 인간이 큐레이션한 리뷰 대비 재현율, 추출 주장의 정밀도, 하위 질문 분해나 스노볼링 같은 구성 요소의 기여도를 아직 측정하지 않았고, 이를 위한 절제 실험은 가장 중요한 다음 단계라고 말한다. 상태에는 의도별 수확량, 모든 문서의 출처, 발견된 스노볼 깊이가 기록되어 있어 이런 실험을 가능하게 한다. 기본 초록 전용 읽기는 빠르고 저렴하지만 주장 강도를 제한하며 전체 텍스트 읽기는 대규모로 평가되지 않았다. 정확한 텍스트 기반 주장 클러스터링은 바꿔 쓴 주장을 별도 클러스터로 만들어 지지 문서 수를 과소평가하므로 개념 그래프나 임베딩 기반 클러스터링이 필요하다. 결정론적 장치는 선별·추출 오류를 복구하지 못하고, 일반 벤치마크가 놓치는 명백히 관련된 논문 거부나 프롬프트 예시를 검색 의도로 복사하는 실패가 더 치명적이었다. 개발자에게 이 시스템은 감사 가능한 문헌 조사 에이전트를 만들 때 참고할 설계이지, 프로토콜 기반 체계적 문헌고찰을 대체하는 도구로 주장되지 않는다.