정형데이터에서 VectorDB를 사용하는 이유

2025. 8. 3. 15:12·AI agent

안녕하세요 데이터 사이언티스트 먼지입니다.

 

2달간 야근을 하며 agent 데모 개발을 하면서 의문이었던 점이 있었습니다. 현재 작업은 pdf, excel 같은 비정형데이터가 아닌 데이터베이스 정형데이터를 읽어 Agent를 개발하고 있는데 vectorDB가 굳이 필요한가 였습니다. 가장 큰 이유는 이미 데이터베이스와 상호작용하는 DataBaseToolkit 이라는 모듈이 있기 때문입니다. 프롬프트만 잘 써주면 자연어질문에 대해 쿼리 성능이 정말 좋다는 점을 확인했기 때문입니다. 하지만 이번에 채널톡 테크 블로그를 읽고 정형데이터에서도 VectorDB가 꼭 필요하구나 생각이 많이 바뀌게 되었는데요. 그 내용을 한번 정리해보려 합니다. 

 

1. 정형데이터 VectorDB 사용 후 느낀점

(1) max-token 에러 & 검색시간

retriever로 검색을 하게 되는데 여기서 필터링이 조금이라도 더 걸리게 되면, max-token에러가 발생했습니다. DB에 행 데이터가 몇백개일땐 문제가 없었지만, 몇 천개일때부턴 자연어 쿼리가 조금이라도 잘못 생성되면 바로 검색 수가 많아지며 검색시간이 길어지고 max-token에러가 발생하였습니다.

 

(2) 계산 오류

해보신분들은 알겠지만, 프롬프트를 통해 LLM에게 답변을 시키면 정말 그럴듯하게 답변을 줍니다. 하지만 답변에 대해 쿼리 찍어보고 검증을 하다보면, 생각보다 틀린 답변을 할때가 있습니다. 가장 빈번하게 보이는 실수는 group by sum 입니다. 아직까지 이유는 정확히 모르겠지만, 데이터가 적고 간단한 경우 문제없이 계산하지만, 데이터가 많을 경우 정확하게 계산하지 못했습니다.

 

물론 완벽하지 않은 vectorDB설계 상태에서의 제가 느낀 단점이니 참고만 부탁드립니다.

 

 


2. VectorDB 사용 이유 : 유연한 쿼리 작성

채널톡 테크 블로그를 읽고 아! 라는 생각이 들었습니다. 저의 경우 데모버전을 개발하느라 딱히 정확한 문자열에 대한 고민을 하지 않았었는데요. 정형데이터에 대해 VectorDB를 사용하는 이유는 유연한 쿼리를 작성할 수 있기 때문이었습니다. 정확한 상품명, 거래처명 등을 자연어 질문에 적지 않아도 llm이 유사도를 기반으로 데이터를 찾아주기 때문이라고 합니다.

 

Q. 제일 비싼 래쉬가드 얼마에요? 라는 질문에 대해 sql을 작성하게 되면 아래와 같습니다. 

출처: 채널톡 테크블로그

 

문제는 Q.제일 비싼 '래시가드' 얼마에요? 라는 질문이 들어왔을 때, 상품명에 '래쉬가드'라고 되어있을 경우 일치하지 않아 데이터를 반환하지 못한다는 점이죠. 이 문제를 채널톡의 경우 하나의 행이 아닌 하나의 셀로 인덱스 처리를 했다고 합니다.

 

여기에 대해 정확한 감이 오지 않아, gpt에게 질문해보았습니다.

 

"셀 하나로 인덱싱했을 때, 자연어 질문이 들어오면 어떻게 동작하는가?"

[사용자 자연어 질문] ──▶ [임베딩 벡터화] ──▶ [셀 단위 벡터DB에서 유사값 검색] ──▶ [원래 테이블 구조와 매핑] ──▶ [SQL 생성]

 

친절하게 예시까지 들어줬는데요. 위 데이터를 문서화할때, 한 행으로 하는 것이 아닌, 하나의 셀로 문서화를 진행할 경우, 아래와 같이 벡터DB에 저장되게 됩니다.

 

따라서 Q. "전략 관련 부서에 속한 직원들의 이름을 알려줘" 라고 질문이 들어왔을 경우, "전략 관련 부서"와 유사도가 비슷한 셀 단위값을 찾게 되고 "전략기획팀"인 문서를 찾아 3행이라는 것을 찾게 되고, 아래와 같은 쿼리를 만들 수 있게 됩니다.

SELECT 이름 FROM 테이블명 WHERE 부서 = '전략기획팀';

 

 

3. 느낀점

사실 VectorDB는 RAG 관점에서 llm이 사용자의 정보를 가지고 답변하게 하는 기능이라고만 생각했습니다. 정확한 쿼리 생성문제는 배민 테크블로그에서 만든 것처럼 질문 구체화 체인을 만들어 해결하는 것이라고만 생각했었는데, vectordb로 문제를 해결할 수 있었다고 하니 관점이 아예 달라진 것 같습니다. 시야를 넓히는 것이 정말 중요한 것 같습니다.

 

Text-to-sql 아키텍쳐 (출처: 우아한 형제들 테크블로그)

 

읽어주셔서 감사합니다.

 

 

출처: 

https://docs.channel.io/team-blog/ko/articles/tech-table-ai-agent-e6b1056a

 

AI Agent가 복잡한 테이블 데이터 처리하는 방법

RAG와 SQL을 혼합한 Table Agent 개발기

docs.channel.io

https://techblog.woowahan.com/18144/

 

AI 데이터 분석가 ‘물어보새’ 등장 – 1부. RAG와 Text-To-SQL 활용 | 우아한형제들 기술블로그

AI 데이터 분석가 '물어보새'는 생성형 AI를 주제로 한 우아톤 2023(우아한형제들 구성원 누구나 참여할 수 있는 사내 해커톤)을 계기로 탄생한 프로덕트입니다. 당시 '코드 없이 데이터 추출과 시

techblog.woowahan.com

 

 

 

 

 

'AI agent' 카테고리의 다른 글

[월간 데이터 노트] 무료 llm Ollama 로컬 환경 셋팅하기  (4) 2025.07.28
SelfQuery-Retriever 사용 경험 정리(feat.걸려라 필터링!)  (2) 2025.07.12
'AI agent' 카테고리의 다른 글
  • [월간 데이터 노트] 무료 llm Ollama 로컬 환경 셋팅하기
  • SelfQuery-Retriever 사용 경험 정리(feat.걸려라 필터링!)
데이터먼지
데이터먼지
데이터분석 및 AI Agent 개발하고 있습니다 :)
  • 데이터먼지
    먼지's Data Analysis
    데이터먼지
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • AI agent (3)
      • 데이터분석 (23)
        • 데이터분석 (4)
        • 데이터 전처리 (9)
        • 데이터시각화 (3)
        • 시계열분석 (6)
        • 환경세팅 (1)
      • SQL (6)
      • 개발&분석 경험 (2)
      • 알고리즘 (3)
      • OS (1)
      • 수학 (4)
        • 선형대수 (2)
        • 확률&통계 (2)
      • 맛집 (2)
        • 이수&사당 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    시간형식
    리눅스개념
    크롤링자동화
    seaborn # kdeplot # 데이터분석
    파이프라인전처리
    확률
    SQL
    시계열
    짧은 시계열 # 금융시계열
    시계열시각화
    pandas # 월말 날짜 # 마지막 주 # 날짜계산 # 시계열 # 마지막 주 금요일
    시계열모듈
    pandas
    데이터분석
    음수값 #전처리 #선형보간 #pandas #데이터 #데이터분석
    Python
    빈 데이터프레임 #pandas #데이터전처리
    np.split
    시간형식변환
    stl
    시계열 #reindex #인덱스 확장 #datetime index #index extention # 데이터전처리
    시계열데이터셋
    플로틀리
    timeseries decomposition
    adf_test
    시계열분해
    이수역 양식집
    응용이 보이는 선형대수
    오제이튜브
    loess
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데이터먼지
정형데이터에서 VectorDB를 사용하는 이유
상단으로

티스토리툴바