레이블이 LLM인 게시물을 표시합니다. 모든 게시물 표시
레이블이 LLM인 게시물을 표시합니다. 모든 게시물 표시

9/18/2025

Text to SQL이 왜 잘 안될까?

LLM(Large Language Model)의 등장으로 데이터 접근 방식도 변해야 한다고 생각한다. 데이터베이스 분야외에 다른 분야는 LLM을 위한 변화가 이미 시작되었다.

프론트엔드 관점에서는 Perplexity, GPT 검색과 같은 AI 에이전트 및 스크래퍼를 지원하기 위해 명확한 제목, 구조화된 섹션, 풍부한 스니펫을 통해 "LLM 검색"이 가능하도록 설계되어가고 있다.

AI가 콘텐츠를 더 효과적으로 요약, 추출을 할 수 있게 하기 위함이다.

백엔드 관점에서는 백엔드에서 만들어지는 API 디자인은 AI 에이전트가 분석하고 사용할 수 있도록 명확한 주소와 메타데이터를 갖춘 MCP과 같은 프로토콜로 전환되고 있다.

프론트엔드, 백엔드를 지나 이제 데이터베이스의 차례이다.


레거시 데이터베이스에서 작업한 경험이 있으신 분들은 아마 알고 있을 것이다. 데이터베이스는 자가 설명적이지 않다. 데이터베이스의 스키마를 보고 무엇을 의미하는지 알기가 어렵다.

Fullname이라면 유추할 수 있지만, 축약어를 사용한다면 더더욱 판단하기가 어렵다.

예를 들어, order라는 테이블이 있다고 하면 이 테이블이 고객의 주문서를 담고 있는 것인지, 구매 주문서인지 이름만 봐서는 판단하기 어렵다. 이는 데이터베이스가 안고 있는 오래된 문제이다.

이제는 LLM이 데이터베이스에서 제공하는 맥락만으로 데이터에 대한 이해를 해야 한다. 사람도 헷갈리는데 혼란스럽지 않을까?

여기서 "Text to SQL"의 허점이 발생한다. 지금은 사용자가 자연어를 사용하여 데이터를 뽑는 시대가 열리고 있다.

"지난 분기 각 매장의 총 수익을 보여주세요." 라고 질문을 하면,

위에 맞는 적절한 SQL 쿼리를 실행하고 그 결과를 차트에 표시해야 한다. 이런 상황을 고려하지 않은 LLM 태생 이전에 디자인한 데이터베이스로 이 질문에 대한 정확한 SQL을 만들 수 있을까?

생각보다 이 문제는 어려운 문제이다.

누군가는 이렇게 얘기할 수 있다. LLM에 데이터베이스의 전체 스키마를 전달하고, SQL 쿼리를 생성하도록 요청하면 되지 않느냐고...

테이블 이름, 컬럼명 그리고 관계에 대한 정보가 있어도 LLM은 사용자의 질문에 정확하게 답변하는 SQL쿼리를 생성하지 못할 수 있다. 

대부분의 데이터베이스 스키마에서 테이블과 컬럼명은 그 자체로 설명적이지 않기 때문이다. 때로는 개발자 조차도 스키마 이해에 어려움을 겪기 때문에 AI가 이해할 수 있을 것이라고 기대할 순 없다.

위에서 언급한 대로 고객 주문과 구매 주문이 각각 어떤 테이블에 있는지 이해하지 못하면 파악할 수 없다. 이 상황은 데이터베이스가 클수록 상황은 더 나빠진다.

일반적인 코드 생성 문제와는 달리 이 문제는 단순하게 텍스트 설명에서 코드를 생성하는 것 이상이다. 모델은 데이터베이스 구조, 데이터 유형, 테이블 간의 관계 등을 알고 있어야 하기 때문이다.

비즈니스의 전문화된 용어를 데이터베이스의 구조로 번역하는 방법에 대해 모델을 훈련시켜야 할 수 도 있다. 모델이 전반적인 비즈니스를 이해하고, 데이터 구조를 이해한 상태에서 사용자의 질문에 답할 수 있어야 하는 경우가 대부분이기 때문이다.

어떤 상황에서 LLM이 힘들어하는지 살펴보자.

LLM은 필드 이름의 의미가 중요하다. 이름이 모호하면 추측하게 되고, 잘못된 이해를 할 수 있다. 예를 들어 "가치"라는 필드가 있으면, 이 필드는 "원화"라는 의미도 담고 있어야 한다. "가치_원" 으로 표현되어야 LLM이 이해할 수 있을 것이다.

일관된 데이터 형식도 중요하다.
"구매날짜 = 2025-09-18"
"주문날짜 = 2025/09/18"

위 처럼 데이터 형식이 서로 다르면, 일관된 형태로 답을 하기가 어렵다.

그리고 회사내부에서 사용하는 용어, 지표, 명명 규칙을 LLM은 알지 못한다.

1. 재구매 고객: 최소 3개월 이상 구매한 고객
2. 이탈 고객: 3개월 이상 로그인을 안한 고객

회사내에서는 위 용어에 대해 정의를 내렸지만, 데이터베이스에서는 해당 데이터가 존재하지 않는다. 여러 데이터를 기반으로 애플리케이션 계층에서 계산을 해야 하기 때문이다.

이럴 경우 LLM은 추론할 수 없다. 이런 용어의 논리를 명확하게 정리하지 않으면, LLM은 올바른 의견을 낼 수 없다.

반면, LLM의 등장 이전에 우리가 해왔던 것들을 생각해보자.

이전 에도 작성했지만, SQL과 코드에서 필드 이름을 축약어를 선호했기에 짧은 이름을 주로 사용한다. 가독성보다 최적화를 선택했다.

여러가지 이유, 제약이 있을테고, 이는 타당한 엔지니어링 결정일 수 있지만 스키마를 의미적으로 추론하기 어렵게 만든 것은 사실이다.

그럼 우리는 앞으로 어떻게 해야 할까?

MCP 스타일 표준 관점에서 접근을 해야 할 것이다. 기계가 이해할 수 있는 친화적인 스키마 설계가 필요하다.

즉, 데이터베이스를 설계하는 방식에 변화가 필요하다. 아래처럼 우선 시작해봐야하지 않을까?

  • 설명이 드러나는 명확한 이름과 일관된 형식 사용
  • 의미론적 관계를 반영
  • 기계가 이해할 수 있는 메타데이터 추가
  • 컨텍스트가 저장된 벡터DB를 이용한 추론

끝으로, Text to SQL에서 질의에 대한 답이 이상하다면, LLM의 문제로 바라볼 것이 아니라. 스키마 설계를 의심해야 한다. 우리는 LLM을 염두해서 설계하지 않았기 때문이다.

Text to SQL에서 정확도를 높이려면 시스템이 접근할 수 있는 정보의 범위를 좁히는 것도 중요하다. 성공적인 Agent는 엄격한 범위 설정이 중요하다. 정확성이 입증된 후에만 확대하는 것이 효과적이다.

다음 글에서는 스키마 설계에 대한 부분을 다룰 생각이다.

3/04/2025

오픈소스 LLM(Large Language Model)


LLM(Large Language Model)을 선택할 때는 두 가지 경로가 있다. 오픈소스냐 아니냐이다.

본 글에서는 오픈소스 LLM을 선택할 때의 이점을 살펴본다.


생성형 AI가 많이 쓰여짐에따라 방대한 데이터를 분석하고, 비즈니스 전략을 수립하고, 상호작용을 간소화하고, 고객에게 개인화된 응답을 제공할 Needs가 있을 수 있다. 이럴 경우 기술 스택에 대한 고려를 해야 할 시점에 있을 수 있다.


“상용 서비스를 사용해야 할까? 아니면 오픈소스 LLM을 선택해야 할까?”


물론, 처음부터 완전한 맞춤형을 사용하는 것은 매력적일 수 있다. 실제로 LLM은 시간, 돈, 노력을 들일 만한 가치가 없는 대규모 사업일 수 있다. 비용, 확장 및 업데이트의 어려움, 환경적 영향 등 고려해야 할 단점이 존재한다.


많은 리더들은 LLM을 처음부터 완전하게 훈련하지 않고도 사용할 수 있다는 사실을 깨닫지 못한다. 오픈소스 모델에는 이미 기초적인 지식과 기술이 포함되어 있다. 그리고 자체 데이터를 추가하여 정의하고 생성 AI 쿼리에서 훌륭한 결과를 얻는 데 필요한 컨텍스트를 제공할 수 있다.


대부분의 회사는 활용되지 않거나 갇힌 데이터처럼 보물 창고를 가지고 있다. 즉, 여러 팀, 조직 또는 문서에 분산되거나 Silo된 데이터를 의미한다. 이런 데이터는 구조화된 데이터(엑셀, 데이터베이스)와 구조화되지 않은 데이터(로그, 채팅 로그, 이메일)로 구분된다.


에릭 레이몬드의 “성당과 시장”이라는 책을 보면 상용 솔루션과 오픈소스 진영에 대한 이야기가 나온다. AI 시대에도 이런 움직임이 있다. 독점 시스템의 장벽을 허물어 전 세계의 개발자, 연구자, 열광자들이 기초 모델에 기여하고, 수정하고, 개선하도록 노력하고 있다.


이런 커뮤니티 기반의 협력 모델은 해당 분야의 발전을 가속화할 뿐만 아니라 AI 기술의 이점을 더 광범위하게 이용할 수 있도록 보장한다.


나도 이번에 LLM 관련해서 준비해야 할 것이 있고, 접근을 오픈소스 기반으로 하고 있기에., 관련 내용을 정리해본다.


오픈 소스 LLM이란?

오픈소스 LLM은 인간 언어를 이해하고, 생성하고, 조작하도록 설계된 AI 모델의 유형이다. 오픈소스라는 것은 모델의 아키텍처, 코드, 모델 등 누구나 자유롭게 사용, 수정, 배포할 수 있다는 것을 의미한다. 높은 가용성과 낮은 비용은 AI 개발에 대한 협력적이고 투명한 접근 방식을 촉진한다.


오픈소스 LLM은 유일한 LLM은 아니다. 그러나 가장 널리 접근 가능한 모델이다.


오픈 소스 LLM은 독점 LLM과 어떻게 다른가?

오픈 소스 LLM은 주로 접근성과 적응성에서 독점적인 대응 제품과 다르다. 오픈소스 모델은 사용, 수정 및 배포를 위해 무료로 제공된다. 이런 특징은 혁신에 대한 협력적 접근 방식을 장려하고 특정 요구 사항에 대한 수정을 허용한다.


이와 대조적으로 독점적인 LLM은 특정 회사가 통제하고 소유한다. 공급업체는 라이선스 등 LLM에 대한 접근을 제한하고, 특정 요구 사항에 대한 수정을 제한한다.


이런 근본적 차이는 해당 모델을 제공하는데 드는 비용과 유연성에 영향을 미친다.


오픈 소스 LLM의 이점

ChatGPT가 세상에 공개되자마자 OpenAI의 GPT 모델은 빠르게 유명해졌다. 하지만 해당 모델은 많은 비용이 동반되어야 하기에 많은 기업들이 대규모 모델에 투자하는 것의 가치에 의문을 제기하기도 했다.


이에 따라 많은 기업이 소규모의 개방형 LLM을 선택하여 RAG(Retriever-And-Generator) 파이프라인을 활용하여 데이터를 통합하고 비슷하거나 더 뛰어난 효율성을 달성하고 있다.


고려해 볼 만한 폐쇄형 LLM에는 여러가지 장점이 있다.


비용 효율성

오픈소스 LLM은 독점적 모델에 비해 비용 효율적인 대안을 제시하여 기업이 AI 역량을 활용할 수 있는 재정적으로 실행 가능한 수단을 제공한다.


  • 라이센스 비용이 필요하지 않기에 초기 비용과 지속적인 비용 절감을 기대할 수 있다.

  • 해당 모델을 자유롭게 조직내에 배포할 수 있다.

  • 특정 맞춤형 서비스가 가능하기에 효율성이 향상될 수 있다.


데이터 소유권 및 제어

오픈소스 LLM을 활용하는 것은 데이터에 대한 통제력과 소유권을 확보하여 다양한 매커니즘을 통해 보안을 강화한다.


  • 데이터 호스팅 제어

    • 온프레미스 또는 신뢰할 수 있는 클라우드 공급자의 호스팅을 선택

    • 민감한 데이터를 보호하는게 중요하다.

  • 내부 데이터 처리

    • 민감한 데이터 유출을 방지한다.

    • 데이터 침해 위험을 줄이고 개인 정보 보호를 강화한다.

  • 투명성

    • 오픈 소스 특성으로 인해 코드와 프로세스 감시가 가능하다.

    • 내부 규정 준수 기준에 부합하는지 확인이 가능하다.


오픈 소스 LLM을 사용하는 기업

전 세계 다양한 기업이 오픈 소스 LLM을 활용하고 있다.


Shopify

Shopify는 Llama 2를 활용하여 LLM을 채택했다. 이 도구는 소규모 업체가 상거래 관리와 관련된 작업을 자동화하도록 지원한다.

상품 설명을 생성하고, 고객 문의에 답변하고, 마케팅 콘텐츠를 만들어 시간을 절약하고 운영을 간소화하는데 도움이 된다.


Perplexity

Perplexity가 오픈 소스 LLM을 활용하는 방법은 다음과 같다.



응답 생성 프로세스

사용자가 질문을 하면 Perplexity 엔진은 약 6단계를 실행하여 답변을 작성한다. 이 프로세스에는 여러 언어 모델을 사용하여 포괄적이고 정확한 답변을 제공하고자 한다.


Perplexity는 자체적으로 개발한 오픈 소스 LLM을 사용한다. Mistral 및 Llama와 같은 기존 프레임워크를 개선한 이 모델은 사용자의 문의와 관련된 콘텐츠를 간결하게 요약하도록 맞춤화 되어 있다.


오픈 소스 LLM을 활용한 사례 및 가능성

오픈 소스 LLM은 다양한 산업과 애플리케이션에서 수많은 기회를 열어주었다. 다음은 오픈소스 LLM의 잠재력에 대한 일반적인 사용 사례와 가능성이다.


챗봇 및 대화형 에이전트

오픈소스 LLM은 자연스럽고 의미 있는 대화에 참여할 수 있는 정교한 챗봇을 만들 때 사용할 수 있다.


콘텐츠 생성

블로그 게시물과 마케팅 카피 및 스토리텔링까지 오픈소스 LLM은 고품질 콘텐츠를 빠르고 효율적으로 생성할 수 있다. 사용자는 해당 모델을 사용하여 아이디어를 브레인스토밍하고, 기사 초안을 작성하거나, 반복적인 쓰기 작업을 자동화할 수 있다.


코드 생성 및 지원

코드 스니펫을 생성하고 기존 코드를 디버깅함으로써 개발자를 지원할 수 있다. Copilot, Cursor AI등으로 이미 입증되었으며, 오픈소스 대안으로 공급업체에 묶이지 않고도 유사한 기능을 제공할 수 있다.


감정 분석 및 텍스트 분류

내가 중점을 가지고 보고 있는 사안이다. 감정 분석을 위해 오픈 소스 LLM을 활용하여 리뷰 또는 피드백에서 고객 의견을 측정할 수 있다. 텍스트 분류 모델은 대규모 데이터 세트를 구성하는데 도움이 되고 구조화되지 않은 데이터에서 통찰력을 추출하는 것을 쉽게 만들어준다.


교육 도구

LLM은 강력한 교육 도구로 활용될 수 있다. 학습자의 진도와 선호도에 따라 콘텐츠를 조정하는 개인화된 학습 경험, 튜터링등을 제공 할 수 있다.


연구 개발

실험과 가설 검증을 수행할 수 있다. 모델을 수정할 수 있는 능력은 새로운 이론을 시험하고, 방법을 탐구할 수 있게 해준다.


오픈 소스 LLM 시작하기

처음에는 어려울 수 있으나, 과정은 간단할 수 있다. 아래는 LLM에 대해서 시작하기 위한 단계이다.


1단계: 사용 사례 식별

기술적인 측면에 들어가기 전에 LLM으로 무엇을 성취하고 싶은지 정의하는 것이 중요하다.


“LLM을 이용해 무엇을 하고 싶은가?” 에 대한 질문에 답을 할 수 있어야 한다. 그래야 필요에 맞는 올바른 모델과 도구를 선택할 수 있다.


2단계: LLM 선택

사용 사례에 적합한 LLM을 선택하는 것이 중요하다.  성능, 확장성, 커뮤니티 지원 등과 같은 요소를 고려하여 사용 가능한 모델을 조사해야 한다. 현재 인기 있는 오픈소스 LLM은 다음과 같다.


  • Llama

    • 장점: 성능과 확장성으로 유명하다. 다양한 애플리케이션을 위해 다재다능하게 설계되었다. 속도와 품질 간의 균형을 제공하여 대화형 AI 및 콘텐츠 생성과 같은 작업에 적합하다.

    • 응용 분야: 챗봇, 글쓰기 도우미, 교육 도구

  • CodeZen

    • 장점: 코드 생성에 특별히 맞춤화되어 있다. 고품질 코드 스니펫을 생성하고 개발자에게 제안을 하는데 뛰어나다.

    • 응용 분야: 소프트웨어 개발, 디버깅 지원, 코딩 교육

  • MIXTRAL

    • 장점: 다양한 텍스트 관련 작업에서 성과를 향상시키기 위해 여러 가지 훈련 기술을 결합한다. 다양한 맥락에 적응할 수 있도록 설계되어 많은 사용 사례에서 좋은 결과를 낸다.

    • 응용 분야: 텍스트 분류, 감정 분석, 개인화된 콘텐츠 생성

  • Falcon

    • 장점: 효율성과 속도가 뛰어난 것으로 알려져 있다. 챗봇이나 실시간 콘텐츠 생성과 같은 분야에 적합하다.

    • 응용 분야: 고객 지원, 대화형 인터페이스, 실시간 데이터 처리

  • GPT-NeoX-20B

    • 장점: 200억 개의 매개변수를 갖춘 상업용 LLM에 대한 가장 큰 오픈소스 대안 중 하나이다. 일관되고 맥락적으로 관련성 있는 텍스트를 생성하는데 안정적인 성능을 제공한다.

    • 응용 분야: 복잡한 콘텐츠 생성, 학술 연구, 글쓰기

  • Ollama

    • 장점: 로컬 실행으로 데이터 프라이버시를 보장하며, 비용 효율성과 맞춤화가 뛰어나 개인 장치에서 강력한 LLM을 운영하기에 최적이다.

    • 응용 분야: 코드 생성, 의료 데이터 분석, 교육 지원, 고객 서비스 챗봇, 콘텐츠 제작


각 모델은 다양한 분야에 적합한 장점을 지니고 있다.


3단계: 환경 설정

선택한 LLM을 실행하려면 적합한 환경이 필요하다. 로컬 머신이나 클라우드 기반일 수 있다. 진행 방법은 다음과 같다.


  • 로컬: 머신에 충분한 연산 능력(가급적으로는 GPU)이 있다면, TensorFlow나 PyTorch와 같은 필수 라이브러리를 설치하여 모델을 로컬에서 실행할 수 있다.

  • 클라우드: 하드웨어를 관리하지 않으려는 사람들을 위해 AWS, Google과 같은 다양한 플랫폼이 LLM에 대한 클라우드 기반 접근을 제공한다.


4단계: 모델 액세스

오픈소스 LLM은 모델을 다운로드하고 구현하기 위한 사용자 친화적인 인터페이스를 제공한다.


5단계: 미세 조정 및 정의

모델에 액세스하면 사용 사례와 일치하는 특정 데이터에 대해 모델을 미세 조정할 수 있다. 필요한 데이터 세트에 대해 추가로 학습하여 요구 사항에 맞게 더 나은 성능을 발휘할 수 있도록 하는 것이 포함된다.


6단계: 모델 배포

모델을 훈련하고 테스트한 후 마지막 단계를 배포다. 사용 사례에 따라 모델을 애플리케이션에 통합하거나 웹 서비스로 설정하여 배포할 수 있다.


결론

오픈소스 LLM은 접근성을 개방하여 혁신을 촉진하고 산업 전반에 걸친 다양한 응용을 활성화하고 있다. 오픈소스의 등장은 혁신, 창의성, 생산적 관점에서 AI의 진보가 그 어느 때보다 협력적이고 접근하기 쉬운 새로운 시대를 알리는 신호이다.


여기에 승선하여 몸 담고 있는 곳에서 미래를 향한 길을 밝힐 필요가 있다.