KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

SQLite 데이터 소스

연결된 노트와 함께 읽기

SQLite 데이터 소스

2026년 7월 16일

SQLite 데이터 소스

  • SQLite 데이터 소스 = .db 파일 하나에 테이블을 저장하고, Python의 sqlite3로 조회하는 로컬 데이터 소스다.
  • 실습에서는 disease.db에 질병별 식단과 운동 정보를 넣고, query_db 도구가 이를 조회했다.
  • 여기서의 SQLite는 애플리케이션 데이터 조회용 DB이고, LangGraph SqliteSaver는 checkpoint 저장용 DB다. 둘은 목적이 다르다.

실습 테이블 구조

SQL
컬럼의미
name질병명
diet권장 식단
exercise권장 운동

도구로 감싸기

Python
  • @tool을 붙이면 LLM이 호출할 수 있는 도구가 된다.
  • SQL 조회 결과를 자연어 문자열로 바꿔 agent에게 돌려준다.
  • ? placeholder를 쓰면 문자열을 직접 이어 붙이는 것보다 안전하다.

Agent 안에서의 역할

Mermaid스크롤로 확대 · 드래그로 이동
  • db_agent는 사용자의 질병명을 보고 query_db를 호출한다.
  • query_db는 실제 DB를 조회한다.
  • agent는 도구 결과를 받아 설명 형태로 정리한다.

SqliteSaver와 헷갈리지 않기

구분SQLite 데이터 소스LangGraph SqliteSaver
목적업무 데이터 조회그래프 실행 상태 저장
예질병별 식단/운동messages, checkpoint
호출 위치query_db tool 내부builder.compile(checkpointer=...)
사용자 의미답변 근거세션 복구/대화 유지

운영 관점

  • SQLite는 실습과 작은 로컬 앱에 좋다.
  • 동시 접속, 권한, 백업, 운영 모니터링이 필요하면 PostgreSQL/MySQL 같은 서버형 DB가 더 적합하다.
  • 에이전트가 DB를 조회할 때는 다음을 신경 쓴다.
    • 허용된 SQL만 실행하기.
    • 사용자 입력을 직접 SQL 문자열에 붙이지 않기.
    • 조회 결과에 출처를 남기기.
    • 의료·금융 정보는 "참고용"임을 명확히 하기.

한 줄 정리

  • SQLite 데이터 소스는 로컬 파일 DB를 agent 도구로 감싸서 구조화된 내부 지식을 조회하게 만드는 방식이다.

관련

  • Tool Calling
  • LangChain @tool
  • External Information MAS
  • 로컬 우선 정보 수집 MAS
  • LangGraph SqliteSaver

Synapse Map Insight

CREATE TABLE disease ( name TEXT PRIMARY KEY, diet TEXT, exercise TEXT );
@tool def query_db(disease: str): """질병명으로 SQLite DB에서 권장 식단과 운동을 조회한다.""" conn = sqlite3.connect("disease.db") cur = conn.cursor() cur.execute( "SELECT diet, exercise FROM disease WHERE name = ?", (disease,), ) row = cur.fetchone() conn.close() if not row: return f"DB에 '{disease}' 정보가 없습니다." return f"[식단]: {row[0]} [운동]: {row[1]}"