Dify 실습 (4): 근로기준법 RAG 챗봇
개요
이 글에서는 근로기준법 PDF 파일을 활용하여 Dify 플랫폼에서 간단한 RAG(Retrieval-Augmented Generation) 챗봇을 구축하는 방법을 단계별로 알아보겠습니다.
1단계: 근로기준법 PDF 다운로드
먼저 근로기준법 PDF 파일을 다운로드해야 합니다.
국가법령정보센터 웹사이트에 접속합니다.
근로기준법을 검색합니다
PDF 형식으로 파일을 다운로드합니다.
링크 : https://www.law.go.kr/법령/근로기준법
2단계: Dify 지식문서 등록
다운로드한 PDF 파일을 Dify의 지식 베이스에 등록해 보겠습니다.
상단 메뉴에서 지식을 클릭합니다.
지식 생성 버튼을 클릭합니다
텍스트 파일에서 가져오기를 클릭하고 다운로드한 pdf 파일을 선택합니다.
업로드가 완료되면 문서를 어떻게 전처리할지 설정합니다.
근로기준법 pdf가 페이지마다 ‘법제처’ 라는 키워드가 있어서 세그먼트 식별자를 ‘법제처’로 설정하였습니다.
청크 길이는 한 페이지가 다 나와야 하므로 2000 으로 설정하였습니다.
청크 중첩 같은 경우는 같은 법 조항이 다음 페이지로 넘어가는 경우가 있으므로 200 으로 설정하였습니다.
“→ 프리뷰 청크”를 눌러 문서가 어떤식으로 나누어 졌는지 확인할 수 있습니다.
인덱스 모드는 Vector DB를 활용하기 위해 “고품질”을 선택합니다.
임베딩 모델은 문서의 내용을 벡터로 변환하는 역할을 합니다.
여기서는 성능이 검증된 OpenAI의 text-embedding-3-large 모델을 사용하겠습니다.
벡터 검색을 선택합니다.
벡터 검색 : VectorDB에서 검색하여 결과 가져오기
전체 텍스트 검색 : 텍스트로만 검색해서 결과 가져오기
하이브리드 검색 : Vector 검색과 텍스트 검색을 동시에 하여 결과 가져오기
재랭크 모델 같은 경우는 검색된 초기 결과 중 사용자의 질문에 가장 유의미한 청크의 순위를 다시 매겨 정확도를 높여줍니다. 저희는 재랭크 모델을 연결하지 않았기 때문에 사용하지 않겠습니다.
상위 K는 사용자 질문에 가장 유사하다고 판단된 청크를 몇 개 가져올 것인지를 의미합니다.
점수 임계값은 사용자 질문과 청크의 최소 유사도 점수를 나타냅니다.
저희는 상위 3개로 설정하고 점수 임계값은 따로 설정하지 않겠습니다.
더 자세한 내용은 다음 링크를 참조하세요: https://www.anthropic.com/engineering/contextual-retrieval#further-boosting-performance-with-reranking
저장하고 처리를 누른 후 임베딩 프로세스가 완료될 때까지 기다립니다.
문서로 이동을 눌러서 검색 테스트도 진행할 수 있습니다.
검색 테스트에 ‘연차 휴가의 개수’를 검색하니 관련된 법령 청크가 나오는 것을 볼 수 있습니다.
3단계: 채팅 플로우 생성
이제 채팅 플로우를 생성합니다.
웹 검색 채팅플로우를 제작했을 때 Tavily Search를 연결했던 것과 마찬가지로 시작노드에 지식 검색 노드를 연결합니다.
지식 옆에 + 버튼을 클릭하여 지식을 등록합니다.
다음 LLM 노드에 지식 검색 결과를 컨텍스트에 연결합니다.
LLM의 프롬프트에 AI의 역할을 정의해줍니다.
당신은 근로기준법 전문가입니다. 제공된 문서를 바탕으로 사용자의 질문에 정확하고 친절하게 답변해 주세요.
5줄 이내로 요약해서 답변해 주세요.이로써 간단한 RAG 챗봇이 완성되었습니다.
4단계: 테스트 및 검증
챗봇이 제대로 작동하는지 테스트 합니다.
우측 미리보기 패널에서 챗봇과 대화를 시작합니다.
"연장근로 한도는 어떻게 되나요?"
"연차휴가는 며칠인가요?"
챗봇이 등록한 근로기준법.pdf 문서에서 검색하여 답변하는 것을 볼 수 있습니다.
답변 아래 “인용”의 pdf 문서를 클릭하면, 문서의 어느 부분에서 가져왔는지도 알 수 있습니다.
결론
Dify를 활용하면 복잡한 코딩 없이도 간단하게 RAG 기반 챗봇을 구축할 수 있습니다. 이 방법은 근로기준법뿐만 아니라 회사 규정, 매뉴얼, 기술 문서 등 다양한 문서 기반 챗봇에 적용할 수 있습니다.
이제 여러분만의 지식 기반 AI 챗봇을 만들어보세요!
오픈네트웍시스템 이승헌