Skip to content

univdev/notion-search-agent

Repository files navigation

Notion Search Agent

사용자가 궁금한 내용을 노션 문서에서 효율적으로 검색하여 답변해주는 챗봇 서비스입니다.
이런 분들이 사용하면 좋습니다:

  • 조직 내 문서화는 꼼꼼히 해두지만 정리가 안되어 있어서 자료를 찾기가 어려우신 분
  • 다른 사람이 문서를 작성 해두었는지 확인이 되지 않아 내가 직접 작성해야 하나 고민하시는 분
  • 폴더 구조나 노션 디자인을 신경 쓰지않고 데이터 저장 목적으로만 사용하길 희망하시는 분

해당 프로젝트는 여러분의 컴퓨터나 클라우드에서 일반적인 웹서버처럼 호스팅 가능합니다.

⚒️ 기능

  • ✅ Tauri 기반 크로스 플랫폼 앱 빌드
  • ✅ Notion 페이지 동기화
  • ✅ Docker를 이용한 간편한 환경 구축
  • ✅ GPT 4o 기반 인간친화적 제안

▶️ 사용 방법

사전 작업

  1. apps/serverapps/client 내부에는 .env.development.example 파일이 존재합니다.
    해당 파일의 .example 을 제거하여 .env.development 처럼 만들어주셔야 서버가 인식합니다.
  2. server/env.development.example 파일 내부에는 반드시 채워야 하는 값이 존재합니다. API Key를 각 플랫폼에서 발급받아 해당 필드를 채워주셔야 서버가 정상적으로 동작합니다.

클라이언트

pnpm install # 의존성 설치

pnpm c:tauri dev # Tauri로 데스크탑 어플리케이션을 개발 모드로 켜기
# or
pnpm c:dev # Tauri 없이 웹으로만 켜기

위 방법으로 웹 서버를 켜고 http://localhost:1420 으로 접속하실 수 있습니다.

서버

pnpm install

cd apps/server && docker compose up -d # Weaviate, MongoDB, Redis 켜기

cd ../../ && pnpm s:dev # 루트에서 해당 명령어 실행

위 방법으로 API 서버를 켜면 3000번 포트로 동작합니다.

❓ 어떻게 동작하나요?

Notion SDK를 사용하여 조직 혹은 개인의 문서에 접근합니다.
문서를 순차적으로 모두 스캔하여 자체적으로 호스팅하는 벡터 DB에 문서 단위로 저장합니다.
사용자가 챗봇에 질문을 하면 해당 질문을 벡터화 하여 벡터 DB에서 검색합니다.
유효한 내용이 포함 되어 있다면 챗봇이 해당 내용을 읽고 자연어로 변환하여 질문자에게 답변합니다.

왜 Vector DB를 사용하나요?

Open AI API는 기본적으로 대화에 필요한 컨텍스트를 매 요청마다 전송해야 합니다.
만약 가지고 있는 문서가 방대할 경우 발생하는 토큰 소모량이 매우 많아질 수 있습니다.
Vector DB를 추가함으로서 사용자가 원하는 지식에 대해 1차적으로 검색한 뒤 해당 내용만 전송하기 때문에 상대적으로 저렴한 토큰을 지불하여 정보를 얻을 수 있습니다.

⚠️ 주의할 점

Vector DB에 임베드 하는 과정에서 문서 내용을 Open AI의 서버로 전달하여 Vectorize 작업을 진행합니다.
이 과정에서 문서의 갯수나 분량에 따라 토큰이 소모될 수 있습니다.

왜 임베드 시 LLM을 사용해야 하나요?

BERT 라이브러리와 같은 알고리즘 기반 벡터화를 진행하면 다른 언어를 사용할 때 유사한 의미의 단어를 사용해도 벡터값이 전혀 다르게 나올 수 있기 때문입니다.
LLM 기반으로 벡터화를 진행하면 LLM이 질문과 문서 내용이 서로 다른 언어로 작성 되어 있더라도 추론 능력을 활용하여 유사한 단어를 유사한 벡터로 전환하기 때문에 한국어 문서를 영어로 검색하는 것도 가능합니다.

About

노션 문서 검색 에이전트

Resources

License

Stars

Watchers

Forks

Packages

No packages published