작성
·
17
0
실무에서 Text-to-SQL 시스템을 구축하면서 고민이 생겼습니다.
현재 상황: 간단한 단일 테이블 조회는 잘 동작하는데, 실제 업무 데이터로 넘어가니 여러 도메인을 JOIN해야 하는 복잡한 쿼리에서 정확도가 많이 떨어집니다.
고려 중인 해결 방안: 도메인별로 AI 모델을 분리하는 구조를 생각하고 있습니다. 사용자 질문이 들어오면 라우터가 적절한 도메인 모델로 연결하고, 해당 모델이 쿼리를 생성하는 방식입니다. 이렇게 하면 각 도메인에 특화되어 정확도가 올라갈 것 같습니다.
걸림돌: 문제는 여러 도메인(예: A, B, C)의 데이터를 함께 조회해야 하는 경우입니다. 예를 들어 "지난 분기 매출 상위 고객들의 최근 주문 배송 현황"처럼 매출(A), 고객(B), 배송(C) 도메인이 모두 엮인 질문이 들어오면 어떻게 처리해야 할까요?
질문:
이런 크로스 도메인 쿼리는 실무에서 보통 어떻게 해결하나요?
도메인별 분리 구조가 맞는 방향인지, 아니면 전체를 아우르는 통합 모델이 나은지 조언 부탁드립니다.
답변 2
0
안녕하세요! 좋은 질문 감사합니다. 상당히 난해한 상황인 것 같은데요,
직접 모델을 훈련시키는 방향으로 가신다면 어떻게든 해결책을 찾으실 것 같고,
만약 GPT, Claude, Gemini와 같은 상용 모델을 활용하시는 거라면, 도메인 별로 프롬프트를 작성하는 것이 도움이 될 거라고 생각합니다. 작성해주신 질문과 용어를 맞추자면 도메인 별로 나누는 것
을 추천 드립니다. 저는 거대한 프롬프틀 활용해서 하나의 작업을 하는 것 보다는, task를 나누어서 작은 프롬프트를 여러번 수행하는 것이 LLM을 활용하기에는 좋다고 생각하기 때문입니다.
LLM 활용에서 가장 핵심이 되는 부분은 context를 최대한 자세하게 제공하는 것이기 때문에, 저라면 table의 description을 디테일하게 작성하고, 테이블 쿼리에 사용할 것 같습니다. 그리고 이미 테이블들의 정보를 가지고 있다면, 특정 테이블을 쿼리할 때 참고할 수 있는 테이블들을 미리 프롬프트에 넣는 방향으로 진행하는 것을 추천합니다. 예를들면, 매출-고객-배송은 연결 가능성이 있는데, 매출-CS이력은 연결 가능성이 없다면, 매출에 관한 쿼리를 할 때 CS이력은 아예 배제되는 식으로 구현합니다. 다만 이 데이터는 테이블이 변경될 때마다 업데이트를 해주어야 하니 별도로 관리가 필요합니다. 그리고 최대한 few shots을 활용해서 예제를 많이 넣어주셔야 만족할만한 성능을 내는데 도움이 될거라고 생각합니다.
우아한형제들에서 지금 질문해주신 내용들을 구현하기 위해 많은 고민들을 하신 걸로 알고 있는데요, 우아콘 발표 영상을 전달드리니 참고하셔서 진행해보셔도 좋을 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 퓨퓨님.
Text-to-SQL 시스템에서 여러 도메인 데이터를 처리할 때의 고민은 매우 현실적이고 중요합니다. 이러한 시스템에서 도메인 간의 복잡한 관계를 다루는 것은 기본적으로 중요한 과제입니다.
크로스 도메인 쿼리는 여러 도메인의 데이터를 함께 처리해야 하므로, 중앙화된 메타데이터를 활용하는 방향으로 해결할 수 있습니다.
메타데이터 레이어 추가: 각 도메인의 테이블 관계와 조인 조건을 메타데이터로 저장하여, 여러 도메인 간의 관계를 명확히 정의하고 이용할 수 있습니다. 이를 통해 여러 도메인 간에 조인 조건을 명확히 하고, 통합된 쿼리를 생성할 수 있습니다.
도메인 간 서브 쿼리 생성: 각 도메인에 별도의 서브 쿼리 생성 모델을 두고, 최종적으로 합쳐지는 방법으로 작성할 수 있습니다. 즉, 초기 쿼리는 각 도메인별로 작업하고, 최종 결과를 통합하는 방법을 시도합니다.
도메인별 모델 분리:
통합 모델 사용:
각 방법의 장단점을 고려하여 선택해야 합니다. 복잡한 데이터 관계를 다루는 경우, 여러 도메인의 데이터를 병합할 수 있는 큐레이팅 로직을 강화하거나, 하이브리드 접근 방식을 고려할 수 있습니다. 즉, 도메인별로 모델을 구성하되, 공통적인 메타 정보를 추가하여 쿼리 생성 시 통합 활용하는 구조입니다.
또한 관련된 유사한 답변을 참고하시면 도움이 될 수 있습니다:
- 모델을 어떻게 개선해야하는지 잘모르겠습니다. - 여러 도메인을 다루는 경우 데이터베이스의 스키마를 확장하여 정교한 쿼리 생성을 시도해 보는 사례.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.