데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      OpenLab 2기 - TGO, 데이터 없이도 데이터베이스 되는 DuckDB

      sysmoon 24.11.28
      268 2 0
      DEVOTEE 요약
      DuckDB 기술을 활용하여 RAG 챗봇의 지식 베이스를 구축하는 방법은 데이터를 직접 파일로 전달하지 않고, 데이터 스키마를 정의하여 손쉽게 데이터를 접근할 수 있게 해줍니다. 개발자는 S3와 같은 데이터 웨어하우스에서 원천 데이터를 스키마로 정의된 DuckDB에 저장하여 필요한 데이터를 SQL 쿼리를 통해 접근하고, 이를 VectorDB에 저장하여 사용할 수 있습니다. 이 과정은 웹 스크래핑으로 시작해 데이터를 수집하여 Object Storage에 저장하고, DuckDB 스키마를 정의하여 SQL 쿼리로 데이터를 가져오고 ETL 프로세스를 거쳐 Embedding을 통해 VectorDB에 저장하는 단계들로 이루어져 있습니다.
      DEVOTEE 추천 블로그

      Introduction

      데이터가 없어도 데이터베이스가 되는 DuckDB 기술을 이용하여 RAG 챗봇을 위한 KB(Knowledge Base) 구축하여 테스트한 결과를 공유합니다.

      이 기술을 통해 데이터 엔지니어와 AI개발자 간 필요한 데이터셋을 파일로 전달하는 것이 아니라 데이터 스키마를 정의하여 DuckDB로 저장하고,

      정의된 스키마 내에서 필요한 데이터를 SQL Query 작성을 통해 개발에 필요한 데이터를 손쉽게 접근할 수 있는 인터페이스 제공이 가능합니다.


      결국 AI 개발/분석에 필요한 원천 데이터를 Data Warehouse (S3)에 저장하고, 개발자에게 필요한 데이터는 스키마로 정의하여 DuckDB 형태로 저장하여 공융하고,

      개발자는 필요한 데이터는 SQL Query 작성을 통해 가져온 후, 원하는 형태의 VectorDB(Milvus, Qdrant, Chroma 등...) 저장하여 나만의 KB 구축이 가능합니다.


      Architecture

      image.png

      1. Scrapping

      웹 스크래핑을 통해 필요한 원천데이터를 수집한 후, .csv, .parquet 파일타입으로 Object Storag(S3 or MinIO)에 저장합니다.

      2. Create Schema

      원천데이터에서 필요한 데이터 스키마 뷰를 정의한 DuckDB 를 생성합니다.

      여기서 생성된 DuckDB는 데이터가 실제로 데이터베이스에 내부적으로 저장하지 않아도 데이터베이스처럼 작동할 수 있습니다.

      즉, 데이터베이스 파일에는 실제 데이터를 포함하지 않으며 데이터를 어떻게 처리할지에 대한 지침(스키마 정보)만 포함 합니다.


      다음은 faq.csv 원천파일을 읽고, 필요한 데이터(category, question, answer) SQL Query 문을 통해 데이터를 가져온 후, 스키마 뷰 테이블을 생성하는 과정입니다.

      # Create Schema (for FAQ)
      
      db = duckdb.connect("skrc_schema.db")
      db.sql("""
          CREATE VIEW faq_view
          AS SELECT category, question, answer
          FROM 's3://skrc/dataset/faq.csv'
          WHERE category == '예약'
      """

      3. Access DB

      LLM 챗봇 개발자가 개발/서비스 하는데 필요한 데이터 접근을 위해 원천 데이터(.parquet)에 직접 접근하여 다운로드 하는 방법이 아닌,

      데이터를 어떻게 가져와야 할지 이미 정의된 DuckDB Schema 파일에 접근하여 필요한 데이터를 직접 SQL Query 문을 통해 가져옵니다.

      # Access DB (for FAQ, Car-Info)
      
      import duckdb
      conn = duckdb.connect("./skrc_data.db)
      conn.sql("""
          ATTACH 's3://skrc/schema/skrc_schema.db
          AS skrc_faq (READ_ONLY)
      """)
      conn.sql("SELECT * FROM skrc_faq LIMIT 10")

      4. ETL Processing

      Access DB 과정을 통해 필요한 데이터를 가져온 후, VectorDB 에 저장하기 위한 형태로 ETL(Extract Transform Loading) 프로세싱 작업을 수행합니다.

      5. Embedding

      Langchain document loader 통해서 content, metadata 정보가 담긴 데이터를 Word Embedding 하여 VectorDB 에 저장하고, 이후 유사도 검색을 수행합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      sysmoon 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기