본문 바로가기

AI

N8N으로 뉴스 요약 AI 만들기: 벡터 DB + 웹검색 통합 RAG 시스템 구현법

* rag를 사용하기 위해 뉴스 데이터를 벡터화 시키는 과정 필요

https://www.yonhapnewstv.co.kr/add/rss

 

연합뉴스TV

대한민국 No.1 보도채널

www.yonhapnewstv.co.kr

여기 있는 내용 전체를 다 가져올 수 있도록 RSS를 구성할 예정

 

1) Manual Trigger 노드 추가

 

2) Edit Fields (Set) 노드 추가

- 주소를 변수에 저장

 이 링크를 set 노드에서 변수처럼 사용하기 위해 형태를 변경(리스트, json 형태)

[

{"category": "최신", "url": "http://www.yonhapnewstv.co.kr/browse/feed/"},

{"category": "정치", "url": "http://www.yonhapnewstv.co.kr/category/news/politics/feed/"},

{"category": "경제", "url": "http://www.yonhapnewstv.co.kr/category/news/economy/feed/ "},

{"category": "사회", "url": "http://www.yonhapnewstv.co.kr/category/news/society/feed/ "},

{"category": "지역", "url": "http://www.yonhapnewstv.co.kr/category/news/local/feed/ "},

{"category": "세계", "url": "http://www.yonhapnewstv.co.kr/category/news/international/feed/"},

{"category": "문화 연예", "url": "http://www.yonhapnewstv.co.kr/category/news/culture/feed/"},

{"category": "스포츠", "url": "http://www.yonhapnewstv.co.kr/category/news/sports/feed/"},

{"category": "날씨", "url": "http://www.yonhapnewstv.co.kr/category/news/weather/feed/"}

]

실행해보면 이렇게 리스트 형태로 쭉 출력된다!

 

3) Split Out

- feed 하나의 리스트로 반환하니 이 노드로 입력된 값을 나눠준다. 

이런식으로 9개의 리스트가 반환된다!

 

4) Loop Over Items (Split in Batches) 

- 이렇게 반환된 값들을 하나씩 반복을 수행한다. 

배치 사이즈를 1로 두면, Split out에서 10개가 들어왔지만 그 10개를 각각 하나씩 반복해서 사용하겠다는 의미의 노드이다. 

 

5) loop에 RSS Read 연결

- 왼쪽의 url 값을 드래그해주면 자동으로 매핑해준다! 실행해보면 다음과 같은 결과를 얻을 수 있다. 

뉴스 데이터의 특성상 새로운 뉴스가 발생하고, 그걸 벡터 DB에 저장해야한다. 

어떤걸 저장했는지 안했는지 여부를 확인해줘야한다. (중복 저장 방지)

 

6) Redis 

- 중복처리. 

6-1) Get the value of a key from Redis 있는지 없는지 먼저 확인

뉴스 링크는 고유 값으로 쓸테니, 링크 값을 key로 입력. (Redis Credential 설정은 Redis 설정 글 참고)
https://jyeonc.tistory.com/176

 

Redis 설정하기

1) 파일 생성 2) 파일 내용 입력(탭 쓰면 안된다함)version: "3.8" services: redis: image: redis:latest container_name: redis ports: - "6379:6379" volumes: - ./redis-data:/data command: ["redis-server", "--appendonly", "yes"] redisinsight: ima

jyeonc.tistory.com

 

 

 

7) 나온 결과를 IF 노드를 써서 null인지 아닌지 판단 

null 이라는 말은 없다는 얘기

 

8) Set the value of a key in redis 노드 연결  

- true인 경우와 연결

 

 

9) 벡터 DB 저장을 위해 Add documents to vector stotre Qdrant 노드 추가

Qdrant에서 Collection을 만들기 위해 docker에서 실행 후 http://localhost:6333/dashboard#/welcome 접속

입력 후 RUN 클릭

새로운 collections news가 생긴걸 확인할 수 있다! 

 

10) 임베딩 모델 - Embeddings OpenAI 선택

 

 

11) 데이터 Loader 설정 - Default Data Loader 

이전에는 PDF를 통으로 넣어서 돌렸기 때문에 Load All Input Data를 사용했었다. 

이번에는 Json 형태로 중복되는 데이터도 많고, 필요 없는 정보도 많으면 굳이 이 데이터의 공간을 쓸데없는 정보로 채울필요 없다.

그래서 여기서는 Load Specific Data로 필요한 데이터만 저장한다. 

그 다음 Data안에

날짜:  {{ $('RSS Read').item.json.pubDate }}
제목: {{ $('RSS Read').itehttp://m.json.title }}
카테고리{{ $('RSS Read').item.json.categories[0] }}
내용: {{ $('RSS Read').item.json.contentSnippet }}

이렇게 설정하면, 이 안에 있는 내용들이 벡터화되어서 입력된다. 

그리고 add Options > Metadata로 pubData, link, title, category를 추가해준다. 

Meta정보는 벡터 DB에 사용자가 쿼리를 날려서 얻는 의미 검색의 대상이 아니다. 

Data 안에 있는 내용만 벡터화시키고, MetaData는 벡터화를 하지 않는다. 단순히 Data의 태깅을 하는 요소로 활용되기 때문에

Metadata 영역은 '검색 대상이 아니다'

 

12) Recursive Character Text Splitter 

 

- 실행

벡터 DB에 저장하는 작업을 loop를 돌면서 반복적으로 수행하고, IF에서 false의 값이 나왔을 때(뉴스 기사 중복)도 loop로 돌아가 반복 작업을 수행한다. 

Qdrant에서 뉴스가 벡터화되어서 저장된걸 확인할 수 있다. metaData도 저장된 모습!

 

 

 

* 활용

1) chat trigger 노드 추가

 

2) AI Agent 수행 

- Question and Answer Chain을 활용해서 의미 검색할 때 벡터 DB에 있는 내용만 참고하게 만들었다면, 이번 강좌에서는 

벡터 DB를 기반으로 하되 그 대답을 가지고 추가 검색을 하는 확장된 활용 수행

2-1) OpenAI Chat Model 

2-2) Simple Memory

2-3) Answer questions with a vector store

2-3-1) Qdrant Vector Store & Embeddings OpenAI (large 모델)

2-3-2) OpenAI Chat Model 

 

 

오늘 주요 뉴스에 대해 알려줘 입력 > vector store 돌고 > Qdrant vector store에서 데이터 가져옴 > OpenAI Caht Model1이 조합 > 그 결과를 AI Agent가 다시 조합 > 결과 반환 

 

IF) 이 정보에 대해 더 자세한 정보를 알고 싶다면 ? AI Agent에 tool을 하나 또 연결. 

워크플로우 > 컴퓨터가 이상해서 이후는 내일 다시... 

 

 

* 출처

https://www.inflearn.com/course/ai-%EC%9E%90%EB%8F%99%ED%99%94-n8n?attributionToken=gQHwgAoMCIKJoMYGEOGLyc4CEAEaJDY5MWIzYWQ0LTAwMDAtMjZiOC1iMTBlLTNjMjg2ZDQ1ZTgwYSoHMTM3MzMwNTIo9ujDMLe3jC3C8J4V1LKdFY6-nRWo5aotnNa3LcXL8xeQ97Iwn9a3LToOZGVmYXVsdF9zZWFyY2hIAWgBegJzaQ

 

코딩 없이 AI 자동화 전문가가 되는 법, n8n 완벽 가이드| 남박사 - 인프런 강의

현재 평점 4.9점 수강생 1,519명인 강의를 만나보세요. 요즘도 직접 코딩하시나요? 이젠 바이브 코딩도 귀찮은 시대! 코딩 없이 n8n으로 AI 자동화 전문가가 되어보세요. 실무에 바로 적용 가능한 자

www.inflearn.com