23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
데이터가 없어도 데이터베이스가 되는 DuckDB 기술을 이용하여 RAG 챗봇을 위한 KB(Knowledge Base) 구축하여 테스트한 결과를 공유합니다.
이 기술을 통해 데이터 엔지니어와 AI개발자 간 필요한 데이터셋을 파일로 전달하는 것이 아니라 데이터 스키마를 정의하여 DuckDB로 저장하고,
정의된 스키마 내에서 필요한 데이터를 SQL Query 작성을 통해 개발에 필요한 데이터를 손쉽게 접근할 수 있는 인터페이스 제공이 가능합니다.
결국 AI 개발/분석에 필요한 원천 데이터를 Data Warehouse (S3)에 저장하고, 개발자에게 필요한 데이터는 스키마로 정의하여 DuckDB 형태로 저장하여 공융하고,
개발자는 필요한 데이터는 SQL Query 작성을 통해 가져온 후, 원하는 형태의 VectorDB(Milvus, Qdrant, Chroma 등...) 저장하여 나만의 KB 구축이 가능합니다.
웹 스크래핑을 통해 필요한 원천데이터를 수집한 후, .csv, .parquet 파일타입으로 Object Storag(S3 or MinIO)에 저장합니다.
원천데이터에서 필요한 데이터 스키마 뷰를 정의한 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 == '예약'
"""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")Access DB 과정을 통해 필요한 데이터를 가져온 후, VectorDB 에 저장하기 위한 형태로 ETL(Extract Transform Loading) 프로세싱 작업을 수행합니다.
Langchain document loader 통해서 content, metadata 정보가 담긴 데이터를 Word Embedding 하여 VectorDB 에 저장하고, 이후 유사도 검색을 수행합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.