FlexSQL: Flexible Exploration and Execution Make Better Text-to-SQL Agents
FlexSQL 은 Spider2-Snow 벤치마크에서 더 강력한 모델들을 능가하는 텍스트-to-SQL 에이전트를 도입하는데, 이는 추론 전 과정에 걸쳐 동적 스키마 탐색, 데이터 검사, 다양한 실행 계획을 가능하게 하는 유연한 설계 원칙과 2 단계 복구 메커니즘을 활용합니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
마치 미스터리를 해결하려는 형사가 되어보라고 상상해 보세요. 하지만 현장이 범죄 현장이 아니라 수백만 권의 책, 파일, 데이터 포인트로 가득 찬 거대하고 혼란스러운 도서관이라면요. 상사가 모호한 단서를 줍니다. "2014 년 초에 제출된 재료과학 관련 모든 특허를 찾아내고, 그들이 인용한 더 오래된 특허의 수를 세어보세요."
이 문제를 해결하려는 대부분의 기존 컴퓨터 프로그램은 경직된 로봇처럼 행동합니다. 시작 시점에 도서관 지도를 한 번만 받고, 그 지도를 바탕으로 몇 개의 선반을 선택한 뒤, 명령 목록 (쿼리) 을 작성하고 실행하려 합니다. 만약 막히거나 답이 틀리면, 그들은 명령에 있는 작은 오타만 수정할 수 있을 뿐입니다. "잠깐, 내가 완전히 잘못된 선반을 선택했군" 이라거나 "'재료과학'이 'MS-01'이라는 코드 아래 숨어 있다는 걸 몰랐어" 라고 말할 수 없습니다. 그들은 초기 실수에 갇히게 됩니다.
FlexSQL은 더 호기심 많은 인간 탐험가처럼 행동하는 새로운 유형의 탐정 에이전트입니다. 경직되지 않고 유연합니다. 간단한 비유를 들어 작동 방식을 설명해 보겠습니다.
1. "유연한 탐험가" (유연한 상호작용)
한 번 도서관 지도를 보고 경로에 매몰되는 대신, FlexSQL은 생각하는 동안 도서관을 돌아다니며 탐색할 수 있습니다.
- 옛 방식: 로봇은 지도를 보고 "재료과학"이 "과학" 섹션에 있을 것이라고 추측한 뒤 목록 작성을 시작합니다.
- FlexSQL 의 방식: 에이전트는 말합니다. "재료과학이 어디 있는지 확실하지 않아. '기술' 섹션으로 가서 상자 안을 살짝 들여다보고 라벨을 읽어보자."
- 이는 선반 (스키마) 을 탐색하고, 상자 (데이터 값) 의 실제 내용을 읽으며, 추측이 타당한지 확인하기 위해 작은 테스트 검색을 실행하는 특수 도구를 사용합니다. 잘못된 통로에 있다는 것을 깨닫자마자 바로 돌아서 올바른 곳으로 갈 수 있습니다. 막다른 길에 갇히지 않습니다.
2. "브레인스토밍 팀" (다양한 계획)
*"각각이 인용한 더 오래된 특허"*라는 단서는 까다롭습니다. 이는 오직 국내 특허만을 의미할까요? 해외 특허도 포함될까요? 심사 중인 신청서도 포함될까요?
- 옛 방식: 로봇은 하나의 해석 (예: "국내 특허만") 을 선택하고 이에 매몰됩니다. 만약 틀리면 전체 답이 틀리게 됩니다.
- FlexSQL 의 방식: 브레인스토밍하는 형사 팀처럼 행동합니다. **동시에 여러 가지 다른 이론 (계획)**을 생성합니다.
- 계획 A: 국내 인용만 세기.
- 계획 B: 국내 및 해외 인용 모두 세기.
- 계획 C: 심사 중인 신청서 포함 everything 세기.
모든 이론을 실행한 후, 어떤 답이 가장 정확할 가능성이 높은지 "다수결"이 결정하도록 합니다. 이렇게 하면 하나의 이론이 틀리더라도 팀이 올바른 답을 얻을 수 있습니다.
3. "양국어 통역사" (유연한 실행)
때로는 작업을 단일한 직선 명령 (SQL) 으로 작성하기에는 너무 복잡할 수 있습니다. 루프나 "if-then" 결정, 또는 데이터베이스 언어로 작성하기 번거로운 단계별 계산이 필요할 수 있습니다.
- 옛 방식: 로봇은 모든 것을 하나의 경직된 SQL 문장으로 강제로 넣으려 하므로, 종종 너무 복잡해지고 오류가 발생하기 쉽습니다.
- FlexSQL 의 방식: 양국어를 구사합니다. 데이터베이스가 사용하는 언어인 SQL로든, 유연한 프로그래밍 언어인 Python으로든 명령을 작성할 수 있습니다.
- 작업이 단순한 목록이라면 SQL 을 사용합니다.
- 복잡한 루프나 단계별 계산이 필요하면, 그렇게 생각하는 것이 더 쉬우므로 먼저 Python 스크립트를 작성합니다.
- Python 스크립트가 완벽하게 작동하면, 최종 결과를 데이터베이스가 이해할 수 있도록 다시 SQL 로 변환합니다. 복잡한 레시피를 먼저 수첩에 적고, 이를 공식 주방 주문서로 번역하는 것과 같습니다.
4. "다시 하기" 버튼 (백트래킹)
FlexSQL 이 계획을 작성한 후 *"아, 내가 질문을 완전히 오해했군"*이라고 깨닫는다면, 단순히 코드를 수정하려 하지 않습니다. 되돌리기 버튼을 누릅니다. 처음으로 완전히 돌아가 도서관 선반을 다시 검토하고, 전체 전략을 변경한 뒤 새로운 계획을 시작합니다. 이렇게 하면 망가진 기초를 고치느라 시간을 낭비하는 것을 방지합니다.
결과
이 논문은 이 "유연한 탐정"을 Spider2라는 매우 어려운 벤치마크에서 테스트했는데, 이는 거대하고 현실적인 기업 데이터베이스를 시뮬레이션합니다.
- 점수:
gpt-oss-120b라는 모델을 사용하여 FlexSQL 은 **65.4%**의 점수를 받았습니다. - 비교: 이 점수는
DeepSeek-R1이나gpt-o3처럼 훨씬 더 크고 강력한 모델을 사용한 다른 최상위 시스템보다 높았습니다. - 교훈: 유연하게 행동함으로써—도서관을 돌아다니고, 여러 이론을 브레인스토밍하고, 두 가지 언어를 말하며, 필요할 때 "되돌리기"를 누름으로써—FlexSQL 은 더 작은 두뇌를 가진 "경직된 로봇"보다 문제를 더 잘 해결했습니다.
요약하자면, FlexSQL 은 빅데이터의 복잡한 세계에서 유연성이 경직성을 이긴다는 것을 증명합니다. 단일, 사전 작성된 지도를 고집스럽게 따르는 에이전트보다 탐험하고, 적응하며, 마음을 바꿀 수 있는 에이전트가 더 낫습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.