본문으로 건너뛰기
실습하기

검색 증강 생성(RAG)을 활용한 데이터 추출

생성형 AI는 웹에서 필요한 데이터를 추출하고 정리할 때 매우 유용합니다. 최근에는 RAG(Retrieval-Augmented Generation) 기법을 통해 외부 데이터 검색까지 가능해져, 더욱 정확한 최신 정보를 얻을 수 있게 되었습니다.

이번 수업에서는 생성형 AI를 활용해 웹에서 데이터를 효과적으로 추출하는 방법을 배워보겠습니다.


RAG로 웹에서 데이터를 추출하는 방법

오늘과 동일한 날짜에 역사적으로 어떠한 사건이 발생했는지 알아보기 위해, 한국어 위키피디아 대문에서 "오늘의 역사"을 추출해 보겠습니다.

ChatGPT에서 RAG를 활용해 데이터를 추출할 때는 다음과 같은 프롬프트를 작성할 수 있습니다.

실습 예시
아래 한국어 위키피디아 대문에서 오늘의 역사를 추출해 주세요.

URL: https://ko.wikipedia.org/wiki/위키백과:대문

연도를 최신부터 과거 순으로 나열하고, 하이픈(-)을 활용한 bullet-point 형식으로 나열해 주세요.
AI의 추출 결과 예시 (24년 7월 8일)
오늘의 역사 (7월 8일):

- 1994년: 조선민주주의인민공화국 국가주석 김일성 사망
- 1967년: 대한민국 중앙정보부, 동백림 사건 발표
- 1889년: 월스트리트 저널 초판 발행
- 1833년: 러시아와 오스만 제국, 운키아르 스켈레시 조약 체결
- 1497년: 바스쿠 다 가마, 인도로 향한 항해 시작

[출처: 한국어 위키피디아 대문](https://ko.wikipedia.org/wiki/위키백과:대문)

이처럼 RAG를 활용해 데이터를 추출할 때는 추출할 URL을 지정하거나, 웹 문서를 검색해 결과를 알려달라는 요구사항을 명시해야 합니다.

또한 추출한 데이터를 정리할 때는 bullet-point(글머리 기호, -, ·과 같이 목록 형식으로 항목을 나열할 때 사용하는 문자) 형식으로 나열하거나, 표 형식으로 정리하는 것이 데이터 가독성을 높입니다.

따라서 프롬프트 마지막에 출력 형식을 명시하는 것이 좋습니다.


RAG로 데이터를 검색할 때 유의할 점

RAG(Retrieval-Augmented Generation) 시스템이 인터넷 상의 데이터를 추출할 때는 robots.txt 파일을 참고하고 준수해야 합니다.

robots.txt는 웹사이트 소유자가 검색 엔진 크롤러와 기타 웹 로봇에게 사이트의 어떤 부분을 크롤링하거나 인덱싱할 수 있는지 지시하는 표준 파일입니다.

간단한 robots.txt 예시
User-agent: *
Disallow: /private/
Disallow: /tmp/
Disallow: /admin/

여기서 User-agent: *는 모든 웹 로봇을 의미하며, Disallow 지시문으로 표시된 부분은 크롤링이나 데이터 추출을 하지 말아야 하는 영역을 나타냅니다.

RAG 시스템은 이러한 Disallow 지시문을 준수해 /private/, /tmp/, /admin/ 등의 영역의 데이터를 추출하지 않아야 합니다.

위 위키피디아 예시의 경우, robots.txt에 명시된 데이터 수집 지시문을 준수해야 합니다.

공공기관 및 위키피디아와 같이 공익적으로 운영되는 웹사이트는 유용한 정보를 널리 알리기 위해 데이터 수집을 허용하는 경우가 많지만, 대부분의 민간 웹사이트는 robots.txt 파일을 통해 무분별한 데이터 수집을 제한하고 있습니다.

웹사이트 구조에 익숙하지 않아 robots.txt를 이해하기 어려운 경우, 데이터 추출 전에 AI에게 데이터를 추출해도 문제가 없는 URL인지 확인하는 것이 좋습니다.


안내

아직 OpenAI에서는 아직 코드프렌즈와 같은 외부 서비스에 RAG를 지원하지 않습니다.

따라서 실습 환경 내에서는 https://로 시작하는 외부 웹 문서를 탐색할 수 없습니다.

따라서 실제 RAG 실습은 ChatGPT에서 진행해 주시기 바랍니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!