Create This RAG n8n AI Agent in 30 Minutes (You’ll Use This Daily)
1. AI 에이전트 구축 개요
오늘 영상에서는 회사 데이터를 기반으로 학습된 AI 에이전트를 구축하는 방법에 대해 알아봅니다. 이 AI 에이전트는 챗봇 형태로 응답하고, 작업 일정을 관리할 수 있습니다. 웹사이트, Notion 페이지 등 다양한 회사 데이터를 Pinecone 벡터 데이터베이스에 삽입합니다. Pinecone은 생소할 수 있지만, 자세히 설명할 예정이니 걱정하지 마세요. Pinecone에 저장된 데이터를 기반으로 질문에 응답하고, 작업을 생성할 수 있는 챗봇을 만들어 고객 서비스 등에 활용할 수 있습니다. 예를 들어, 계약서에서 이벤트 날짜를 추출하거나, 고객에게 잔액을 보내는 작업을 자동화할 수 있습니다. 이 튜토리얼은 2부작으로 구성되어 있으며, 복잡해 보이지만 실제로 구축하기는 매우 간단합니다. 블루프린트는 무료로 다운로드할 수 있으며, Naden을 사용하여 프로젝트를 진행합니다. Naden은 무료로 시작할 수 있습니다.
2. 워크플로우 생성 및 Google Drive 트리거 설정
AI 에이전트를 구축하기 위해 새로운 워크플로우를 생성하고 트리거를 추가해야 합니다. 트리거는 특정 워크플로우를 시작하는 역할을 합니다. 여기서는 Google Drive 폴더에 문서가 들어오면 워크플로우가 시작되도록 설정합니다. 즉, Google Drive에 문서가 업로드되면 해당 문서가 벡터 데이터베이스에 저장되고, RAG 시스템 챗봇에서 해당 정보를 사용할 수 있게 됩니다. 챗봇은 고객에게 응답하거나, 작업을 생성하는 등의 기능을 수행할 수 있습니다. Google Drive 트리거를 설정하기 위해 Google Drive를 선택하고, “On Change(특정 폴더 관련 변경 사항)” 트리거를 사용합니다. 이는 특정 폴더에서 변경 사항이 발생할 때마다 워크플로우를 시작한다는 의미입니다. Google 계정을 연결하기 위해 자격 증명을 설정해야 합니다. 자격 증명을 추가하려면 클라이언트 ID와 클라이언트 비밀번호가 필요합니다. Google Cloud Console에 접속하여 새로운 프로젝트를 생성하고, 해당 프로젝트에서 API 및 서비스를 활성화해야 합니다. API 및 서비스에서 Google Drive API를 검색하여 활성화합니다. 다음으로, 자격 증명을 생성하고, Google Drive API를 선택합니다. 애플리케이션 데이터는 다음을 선택하고, 서비스 계정 이름을 지정한 후 생성 및 계속을 클릭합니다. 역할은 “소유자”를 선택하고, 완료를 클릭합니다. 마지막으로, Oauth 동의 화면을 생성합니다.
3. Oauth 클라이언트 생성 및 테스트 사용자 추가
Oauth 동의 화면을 만들기 위해 앱 이름을 지정하고, 지원 이메일을 입력합니다. 대상은 “외부”를 선택하고, 다음을 클릭한 후 연락처 정보를 입력합니다. 이메일을 입력하고, 약관에 동의한 후 생성을 클릭합니다. “Oauth 클라이언트 만들기”를 클릭하고, 웹 애플리케이션을 선택한 후 앱 이름을 지정합니다. “승인된 리디렉션 URI”에서 Naden에서 제공하는 리디렉션 URI를 복사하여 붙여넣고, 생성을 클릭합니다. 이제 클라이언트 ID와 비밀 키를 얻을 수 있습니다. 클라이언트 ID와 비밀 키를 Naden에 붙여넣고 Google 계정으로 로그인합니다. 로그인하기 전에 대상에서 테스트 사용자를 추가해야 합니다. 테스트 사용자를 추가하거나 애플리케이션을 게시하지 않으면 오류가 발생할 수 있습니다. 테스트 사용자를 추가하고 저장한 후 Naden으로 돌아와 Google로 로그인합니다. 올바른 계정을 선택하고 계속을 클릭하면 계정이 연결됩니다. Google 애플리케이션을 만들고 Google 계정에 연결했습니다. 계정이 연결되면 Google Drive에 파일이 로드될 때마다 해당 파일에 액세스할 수 있습니다. Google Drive에 연결하는 자격 증명을 만들었습니다.
4. 폴링 시간 설정 및 Google Drive 파일 다운로드
Google Drive 폴더에 파일이 업로드되었는지 확인하기 위해 폴링 시간을 설정해야 합니다. 폴링은 Naden이 Google Drive에 주기적으로 요청을 보내 변경 사항을 확인하는 방식입니다. 현재 기본 설정은 1분으로 되어 있지만, 초급 요금제의 경우 월별 실행 횟수 제한이 있으므로 30분으로 변경하는 것이 좋습니다. 커스텀 폴링 시간을 선택하고, Cron 표현식을 사용하여 30분 간격으로 설정합니다. Cron 표현식은 Naden 문서에서 예시를 참고하여 설정할 수 있습니다. 폴링 시간을 30분으로 설정하면 실행 횟수를 절약할 수 있습니다. 폴링 간격을 설정한 후 폴더를 선택합니다. 파일을 추가할 테스트 폴더를 선택합니다. 파일이 생성되었는지 확인합니다. Google Drive에 파일을 추가하고 테스트를 실행하면 오류 없이 작동해야 합니다. 테스트가 성공하면 다운로드할 파일 ID를 고정합니다. 다음으로, Google Drive에서 파일을 다운로드해야 합니다. Google Drive를 다시 선택하고, “파일 다운로드”를 선택합니다. 파일 ID로 파일을 선택하고, 스키마에서 파일 ID를 복사하여 붙여넣습니다. 다시 테스트를 실행하면 파일이 성공적으로 다운로드됩니다.
5. Pinecone 벡터 스토어에 데이터 추가
다운로드한 파일을 Pinecone 벡터 스토어에 추가해야 합니다. Pinecone 계정을 만들고, 자격 증명을 설정합니다. Pinecone은 벡터 데이터베이스로, 텍스트를 효율적으로 저장하고 검색하는 데 사용됩니다. 질문에 대한 정확한 답변을 제공하기 위해 데이터를 저장하고 검색하는 데 효과적인 방법입니다. Pinecone에 접속하여 계정을 만들거나 로그인합니다. Pinecone 데이터베이스를 만들기 위해 인덱스를 생성합니다. 인덱스 이름을 지정하고, 임베딩 모델을 구성합니다. 임베딩은 단어의 의미를 포착하는 텍스트의 숫자 표현입니다. 단어의 의미 유사성을 이해하는 데 도움을 줍니다. 예를 들어, “자동차”와 “오토모빌”은 철자는 다르지만 의미는 거의 같습니다. 임베딩을 사용하면 기계가 의미 유사성을 이해할 수 있습니다. 고양이, 개, 늑대는 모두 동물이므로 오렌지나 망고보다 서로 더 유사합니다. 단어들을 유사한 것끼리 묶어서 수치 값을 부여하여 의미를 파악합니다. 키워드와 특정 단어들을 함께 클러스터링합니다. 검색은 의미론적 의미를 기반으로 합니다. 따라서 답변을 제공할 때 매우 관련성이 높은 텍스트를 찾을 수 있습니다. 임베딩 모델은 “text-embedding-3-small”을 선택합니다. Pinecone에서 API 키를 가져와서 Naden에 연결합니다. Pinecone에서 API 통합을 선택하고, 키 이름을 지정합니다. 키를 복사하여 Naden에 붙여넣고 저장합니다. 이제 Pinecone 계정이 Naden에 연결되었습니다. 사용할 인덱스를 선택합니다. Pinecone 네임스페이스를 추가하여 데이터를 여러 섹션으로 분리할 수 있습니다. 예를 들어, 영업 또는 고객 서비스와 같이 데이터 소스를 분리할 수 있습니다. 이번에는 영업 계약이므로 “영업”을 입력합니다.
6. 임베딩 모델 및 문서 로더 설정
벡터 데이터베이스를 생성했으므로 임베딩을 추가해야 합니다. 텍스트를 숫자 형식으로 변환하고 Pinecone 데이터베이스에 저장해야 합니다. Pinecone에서 선택한 임베딩 모델과 동일한 모델을 선택해야 합니다. 임베딩 모델을 “OpenAI 임베딩”으로 선택하고, “text-embedding-3-small”을 선택합니다. 다음으로 문서 로더를 추가해야 합니다. 문서 로더는 PDF와 같은 파일을 텍스트 또는 임베딩에 액세스할 수 있는 데이터로 변환합니다. PDF를 텍스트로 변환하는 것과 같습니다. 임베딩 모델에 액세스할 수 있는 데이터를 만듭니다. 기본 데이터 로더를 사용합니다. 데이터 유형은 Pinecone과 호환되도록 “바이너리 데이터”를 선택합니다.
7. 텍스트 분할기 설정 및 워크플로우 테스트
텍스트를 더 작은 조각으로 나누는 텍스트 분할기를 설정해야 합니다. 텍스트 분할기는 계약서와 같이 큰 텍스트를 더 작게 분할하여 모델이 더 잘 작동하도록 합니다. 텍스트 분할기를 사용하면 모델이 더 작은 데이터 세트로 더 잘 작동합니다. 너무 많은 정보를 제공하면 정확한 답변을 검색하지 못할 수 있습니다. 데이터를 의미론적으로 유지하기 위해 재귀 문자 텍스트 분할기를 사용하는 것이 좋습니다. 문자 분할기는 문장을 30자로 자르기 때문에 의미가 손실될 수 있습니다. 챗봇이나 AI 에이전트를 구축하는 경우 특히 의미를 유지하는 것이 중요합니다. 저장하고 테스트하면 완료됩니다. Google Drive에서 파일을 다운로드하여 Pinecone 벡터 스토어에 삽입합니다. 워크플로우가 성공적으로 완료되면 Pinecone에서 저장된 레코드를 확인할 수 있습니다. Pinecone 벡터 데이터베이스는 문서를 32개의 작은 조각으로 분할합니다. 문서를 분할하고 임베딩하여 벡터 임베딩을 만듭니다. 고양이와 같은 것을 찾고 있다면 고양이, 강아지, 늑대와 같은 것을 찾도록 합니다. 과일 섹션에서 망고나 오렌지를 찾지 않도록 합니다. 즉, 쿼리에 대한 초특정 결과를 얻을 수 있도록 합니다.
8. 두 번째 워크플로우 생성 및 트리거 설정
첫 번째 워크플로우가 완료되었으므로 두 번째 워크플로우를 생성해야 합니다. 이 워크플로우에서는 데이터로 학습된 AI 에이전트를 구축하여 데이터에 대한 응답을 생성합니다. 새로운 워크플로우를 생성하고 트리거를 추가합니다. “채팅 메시지에서” 트리거를 선택합니다. 채팅은 Naden에 내장된 챗봇으로, 테스트하기 쉽습니다. 채팅 창에서 “Hey”라고 입력하고 실행하면 아무런 응답이 없을 것입니다. 왜냐하면 AI 에이전트가 아직 설정되지 않았기 때문입니다. “고급 AI” 섹션에서 AI 에이전트 구성 요소를 만듭니다. AI 에이전트는 문서를 처리하고, 데이터를 찾고, 고객에게 응답할 수 있습니다. 다양한 AI 에이전트를 구축할 수 있습니다. AI 에이전트를 “도구” 기반으로 설정합니다.
9. AI 에이전트 구성 요소 설정
완성된 제품에서 AI 에이전트는 고객에게 응답할 뿐만 아니라, 고객 서비스에 사용되는 경우 팀이 수행할 작업을 만들 수 있습니다. 예를 들어, 남은 잔액을 보내달라고 요청하면, 잔액 송장 작업을 생성하여 고객에게 보내거나 CRM의 정보를 자동으로 업데이트할 수 있습니다. AI 에이전트를 “도구” 기반으로 설정하는 것은 기초를 다지는 것입니다. 시스템 메시지 설정을 살펴보고, 세 가지 설정을 살펴봅니다. 첫 번째는 AI 에이전트의 두뇌 역할을 하는 채팅 모델입니다. 챗 GPT에 로그인하는 것과 같이 질문에 응답하고, 응답을 구성하고, 응답을 제공합니다. OpenAI 채팅 모델을 선택합니다. 4.0 미니 모델은 기본으로 설정되어 있습니다. 두 번째는 메모리입니다. 메모리는 이전 메시지와 응답을 기억하는 것입니다. 메시지 창 크기는 AI 에이전트가 기억해야 할 이전 메시지 수를 설정하는 것입니다. 먼저 5로 설정하고 나중에 늘릴 수 있습니다. 세 번째는 도구입니다. 도구를 추가하여 AI 에이전트를 강화합니다. 먼저 벡터 스토어 질문 답변 도구를 추가합니다.
10. 벡터 스토어 질문 답변 도구 추가 및 구성
벡터 스토어 질문 답변 도구를 사용하면 Google Drive에 업로드한 정보에 대한 질문에 답변할 수 있습니다. Pinecone에 저장된 데이터를 기반으로 답변을 제공하는 RAG 챗봇과 같습니다. 여기서는 문서가 하나만 있지만, 원하는 만큼 문서를 업로드할 수 있습니다. 도구 이름을 지정합니다. AI 에이전트가 도구를 호출하는 시기를 이해하도록 도구 설명을 추가합니다. 예를 들어, “고객이 질문을 하면 이 도구를 호출하십시오.”라고 입력합니다. 도구는 모델과 벡터 스토어를 사용합니다. 모델은 챗 GPT 4.0 미니를 선택합니다. 벡터 스토어 모델은 Pinecone을 사용하고 있으므로 Pinecone을 선택하고, 정확한 계정을 연결하고, 체인 추가 도구에 대한 벡터 스토어로 문서를 검색하도록 설정합니다. 벡터 스토어 또는 인덱스를 선택합니다. 이전에 naden-3이라고 명명한 인덱스를 선택합니다. 네임스페이스는 “영업”을 선택합니다.
11. 임베딩 모델 설정 및 AI 에이전트 테스트
마지막으로 임베딩 모델을 추가해야 합니다. 임베딩은 벡터 스토어에 데이터를 추가하고 검색하는 양방향 프로세스입니다. RAG는 검색 증강 생성을 의미합니다. 데이터를 벡터 스토어에 추가할 때 인코딩해야 하고, 질문에 응답하기 위해 데이터를 검색할 때 인코딩해야 합니다. 질문을 임베딩 모델을 사용하여 숫자 표현으로 인코딩합니다. 텍스트 임베드 3 작은 모델을 선택합니다. 텍스트를 코딩하여 구문 의미를 가지도록 합니다. “고양이”라는 단어를 찾고 있다면 “고양이”라는 단어가 동물 섹션에 있는지 확인합니다. 고양이 섹션에 없으면 고양이, 강아지, 늑대 등의 유사한 동물이라도 찾을 수 있습니다. 이는 망고나 오렌지를 찾는 것보다 낫습니다. 검색 증강 세대 또는 벡터 데이터베이스를 사용하여 과특정 결과를 얻습니다.