pg-jev - 자연어 조건으로 데이터를 검색하고 분류하는 PostgreSQL 확장

1 hour ago 3
  • SQL 안에 “고객이 화가 났는가”, “어느 팀이 처리해야 하는가” 같은 자연어 조건을 넣어 행을 필터링하고 분류하거나 점수순으로 정렬하는 확장
  • 자연어를 SQL로 바꾸는 도구가 아니라, 각 행의 내용을 TypeSafe의 Jev 모델이 판단하고 그 결과를 SQL에서 사용하는 방식
  • 별도의 임베딩, 벡터 컬럼이나 검색 인덱스 없이 기존 테이블과 뷰에 적용 가능
  • jev()는 조건 충족 여부, jev_prob()는 확률, jev_choice()는 선택지, jev_score()는 단계별 기준에 따른 점수를 반환
    • 불만이 강한 고객 문의 찾기, 문의 담당 부서 배정, 상품의 고급스러움에 따른 정렬 등에 활용
  • 기존 SQL의 조건, 조인, 집계와 결합할 수 있으며, 날짜와 숫자는 SQL로 처리하고 의미 판단만 모델에 맡기는 방식
  • 기본적으로 20개 행을 묶어 병렬 요청하고, 세션 안에서 판단 결과를 캐시해 반복 조회 비용을 줄임
  • 자체 측정에서 2,000개 행의 첫 조회는 약 3.5초와 $0.012, 캐시를 사용한 두 번째 조회는 약 50ms
  • jev_stats()로 요청 수, 토큰과 추정 비용을 확인하고, 쿼리별 전송 행 수와 문자 수를 제한 가능
  • 판단할 행의 데이터가 외부 API로 전송되며, 필요한 컬럼만 담은 뷰로 전송 범위를 줄일 수 있음
  • PostgreSQL 14~17, plpython3u, 슈퍼유저 권한과 TypeSafe API 키 필요
  • TypeSafe와 별개로 개발된 비공식 프로젝트이며 PostgreSQL License 적용
Read Entire Article