박정기
박정기
🗡️ AI 레전드
🎖️ 마스터 파트너
🚀 SNS 챌린지 달성자

노션 데이터로 나만의 RAG 시스템 구축하기!

과제 소개

  • LLAMA INDEX와 노션 API를 활용해서 노션 DATA를 바탕으로 RAG 시스템 구축을 해본다.

  • 지난 "지피터스 11기의 모든것" 데이터를 바탕으로 RAG 시스템을 구축해본다.

목적

  • 노션 API를 활용하여 노션 데이터를 로딩을 해본다.

  • FAQ, 사용자들이 질문할법한 데이터를 넣어서 효과가 있을지 확인

  • RAG 답변의 퀄리티 확인

  • 추후 AI 스터디에서 필요한 RAG 구축에 활용하기 위함

방법론

  • LLAMA INDEX, NOTION API, OPENAI API를 활용

  • 빠른 POC를 위해 COLAB에서 진행

먼저 NOTION API부터 세팅을 진행합니다.

https://hirlawldo.tistory.com/192
-> 이 사이트를 참고해서 세팅 진행함


https://www.notion.so/profile/integrations


노션 시크릿 키를 발급 받습니다!

Gifters라는 단어가 포함된 페이지의 스크린샷

개인 노션에 원하는 페이지를 만들고, 그 페이지의 번호를 확인합니다.

https://www.notion.so/AI-11-0acec37d48b34b20b5075b730203c5ed

-> 이런 사이트 주소가 있다면

0acec37d48b34b20b5075b730203c5ed -> 이게 페이지 id 번호를 뜻합니다.

노션 페이지에 가서 연결항목에 내가 만든 GPTERS API를 선택해서 넣어줍니다. -> 중요

맥 OS X

%pip install llama-index-readers-notion

import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

If you're opening this Notebook on colab, you will probably need to install LlamaIndex 🦙.

!pip install llama-index

from llama_index.core import SummaryIndex
from llama_index.readers.notion import NotionPageReader
from IPython.display import Markdown, display
import os

integration_token = "노션 시크릿 키 넣기"

page_ids = ["페이지 id 번호 넣기"]

documents = NotionPageReader(integration_token=integration_token).load_data(

    page_ids=page_ids

)

index = SummaryIndex.from_documents(documents)

print(index)

print(documents[0].text)

로딩된 노션 데이터

한국어 화면의 스크린샷

os.environ['OPENAI_API_KEY'] = 'OPENAI 키 넣기'
# set Logging to DEBUG for more detailed outputs

query_engine = index.as_query_engine()

response = query_engine.query("6/22 토요모임 발표 순서가 어떻게 돼? 한국어로 알려줘")

display(Markdown(f"<b>{response}</b>"))

response = query_engine.query("캠프 별 해시태그가 뭐가 있는지 한국어로 알려줘")

display(Markdown(f"<b>{response}</b>"))

response = query_engine.query("게시판에 글을 작성하는 법을 한국어로 알려줘")

display(Markdown(f"<b>{response}</b>"))

response = query_engine.query("월요특강 6/10(월) VOD링크와 자료를 한국어로 알려줘")

display(Markdown(f"<b>{response}</b>"))

-> 한국어로 알려줘 라고 안하면 default가 영어라, 꼭 넣어줘야함

출력 화면

한국어 코딩 언어의 스크린샷
컴퓨터 화면에 한국어 스크린샷

한국어 화면의 스크린샷

브라우저의 CSS 파일 스크린샷

결론

  • 몇줄 안되는 코드로 LLAMA INDEX를 활용하여 RAG 구축에 성공

  • 노션 글이 수정되자마자 다음 코드를 실행시키면 즉각 바뀐 노션 데이터 로드 가능!

documents = NotionPageReader(integration_token=integration_token).load_data(

    page_ids=page_ids

)
  • 빠르게 라마 인덱스로 RAG POC 확인

추가로 수정해야하는 점

  • RAG 프롬프트 원하는 걸로 설정하기 (한국어 출력 설정하기)

  • 노션 데이터를 RAG에 맡게 데이터 전처리 및 parsing (추후 LLAMA PARSE 사용해볼 예정)

  • 모르는 데이터는 모른다고 답변 or 지피터스에 따로 질문해달라고 요청하도록 프롬프트 수정

REF
https://colab.research.google.com/github/run-llama/llama_index/blob/main/docs/docs/examples/data_connectors/NotionDemo.ipynb

https://docs.llamaindex.ai/en/stable/examples/data_connectors/NotionDemo/?h=notion

https://developers.notion.com/docs/authorization

8
2개의 답글

👉 이 게시글도 읽어보세요