[00:00]
AI 코딩 어시스턴트가 정말로 당신의 프로젝트와
[00:02]
문서를 이해할 수 있다면 좋겠다고 생각하지 않나요?
[00:04]
지금 AI 코딩 도구들이 가진 가장 큰 문제 중 하나는
[00:06]
라이브러리나 도구들을 우리 프로젝트에 가져올 때
[00:08]
항상 환각을 일으킨다는 것입니다.
[00:10]
Supabase나 MCP, Pydantic AI 등
[00:13]
무엇을 작업하든 말이죠.
[00:14]
그리고 저는 이 문제에 대한
[00:16]
큰 해결책을 구축하고 있습니다.
[00:19]
제 채널에서 이미 조금 공유했지만,
[00:21]
바로 제가 만든 Crawl4AI RAG MCP 서버입니다.
[00:24]
최근에 이 서버를 더욱 강력하게 만들기 위해
[00:26]
몇 가지 새로운 RAG 전략을 추가했습니다.
[00:29]
AI 코더들에게 최신 문서를 제공하는 것이죠.
[00:31]
게다가 이 서버를 위한 더 큰 계획들이 있어서
[00:33]
지금 여러분과 공유하고 싶습니다.
[00:35]
이 MCP 서버로 하고 싶은 것은
[00:37]
Archon의 다음 진화 단계로 구축하는 것입니다.
[00:40]
이것도 제 채널에서 조금 공유했었죠.
[00:42]
하지만 지금 우리는 AI 코딩을 도와주는
[00:44]
많은 분리된 도구들을 가지고 있습니다.
[00:46]
Replit Code의 부메랑 태스크나
[00:48]
프로젝트의 다른 부분들을 관리하는
[00:50]
다양한 에이전트들이 있습니다.
[00:52]
AI 코더들에게 최신 문서를 제공하는
[00:54]
Context7도 있고요.
[00:57]
그리고 AI 코더를 프로젝트 매니저로
[00:59]
바꿔주는 Cloud Task Manager 같은
[01:01]
도구들도 있습니다.
[01:03]
이런 도구들은 모두 훌륭합니다.
[01:05]
오해하지 마세요.
[01:08]
하지만 이 MCP 서버로 구축하고 싶은 것은
[01:09]
큰 프로젝트라는 것을 알고 있지만,
[01:12]
이 모든 것들을 하나로 결합해서
[01:14]
AI 코딩의 모든 요구사항을 해결할
[01:17]
마스터 MCP 서버를 만드는 것입니다.
[01:19]
RAG로 강력한 지식 기반을 갖추는 것처럼
[01:21]
말이죠.
[01:23]
또한 다양한 에이전트들이 프로젝트의
[01:25]
다른 부분들을 관리하고 우리가 계획하고
[01:28]
태스크를 관리하는 것을 도와줄 수 있도록요.
[01:30]
이것이 해야 할 일이 많다는 것을 알고 있고
[01:33]
RAG 지식 베이스라는 핵심부터
[01:35]
시작하고 있습니다.
[01:36]
그래서 몇 가지 추가 전략들을
[01:38]
구현하고 있는 것이죠.
[01:41]
그래서 지금 여러분과 이것을 다루고 싶습니다.
[01:43]
평소처럼, 설명란에 이 MCP 서버의
[01:45]
링크를 달아놓겠습니다.
[01:46]
직접 실행해볼 수 있도록요.
[01:49]
완전히 무료이고 오픈 소스이며
[01:51]
설정하기도 매우 쉽습니다.
[01:52]
여기 readme에 모든 것을 구성하는 방법에 대한
[01:55]
지침이 있습니다.
[01:56]
조금 후에 다룰 다양한 RAG 전략들을
[01:59]
활성화하고 비활성화하는 방법도 포함해서요.
[02:01]
여기 있는 모든 설정을 거치면
[02:03]
오래 걸리지 않고 서버가 작동될 것입니다.
[02:05]
그러면 AI 코딩 어시스턴트 내에서
[02:07]
이것에 연결할 수 있습니다.
[02:09]
심지어 다른 AI 에이전트나 n8n 같은
[02:11]
도구들에서도 사용할 수 있죠.
[02:13]
어떻게 보이는지 보여드리겠습니다.
[02:14]
일부 구성의 예시입니다.
[02:16]
MCP 서버 설정에 있어서 매우 전형적인
[02:18]
과정입니다.
[02:20]
이것을 구성하고 나면
[02:22]
이제 우리의 프라이빗 지식 베이스에
[02:24]
문서를 추가하기 시작할 수 있습니다.
[02:26]
Supabase를 연결할 것이고
[02:29]
그것은 설정의 일부입니다.
[02:31]
그리고 설정의 일부로 우리가 가질 수 있는
[02:33]
것은 무엇이든 가능합니다.
[02:34]
그것이 바로 우리가 할 수 있는 일입니다.
[02:36]
지침의 일부이기도 합니다. 그래서 이 영상의
[02:38]
데모를 위해 Vercel AI SDK의
[02:40]
문서를 사용하겠습니다. 이것은 AI 에이전트 주변의
[02:42]
프론트엔드 애플리케이션 생성을 도와주는
[02:45]
프론트엔드 라이브러리입니다. 그리고
[02:46]
그들은 LLM.txt 페이지를 가지고 있습니다. 그래서 이것은
[02:49]
그들이 단일 페이지로 결합한 모든 문서를
[02:52]
마크다운 형식으로 만든 것입니다.
[02:54]
특히 저희 RAG MCP 서버와 같은 도구를 사용해
[02:56]
LLM이 수집할 수 있도록 만들어진 것입니다.
[02:58]
여기서 간단한 참고사항은, 이 MCP 서버는
[03:01]
크롤링할 수 있는 다양한 유형의 웹사이트를
[03:03]
지원한다는 것입니다. 따라서 이와 같은
[03:06]
LLM 텍스트를 크롤링할 수 있습니다.
[03:08]
그리고 이를 제공하는 웹사이트가
[03:10]
많이 있습니다, 특히 라이브러리
[03:11]
문서의 경우 말이죠. 기본 페이지만
[03:13]
주면 네비게이션과 그 안의 모든 것들을
[03:15]
재귀적으로 스크랩할 것입니다.
[03:17]
연결된 페이지들도 마찬가지입니다. 또는
[03:20]
사이트맵을 제공할 수도 있습니다.
[03:21]
많은 웹사이트들이 이것도 가지고 있습니다.
[03:23]
따라서 모든 개별 페이지들을 나열하고
[03:25]
서버가 이들을 각각 크롤링할 것입니다.
[03:27]
마치 네비게이션을 재귀적으로
[03:29]
순회하는 것처럼 말이죠. 따라서
[03:31]
다양한 옵션들이 있지만, llms.txt로
[03:33]
시작할 수 있습니다. 이것이 우리 AI
[03:35]
코딩 어시스턴트를 위한 지식을 얻는
[03:37]
가장 쉬운 방법입니다. 정말 완벽합니다.
[03:39]
제가 할 수 있는 것은 이 링크를
[03:40]
복사해서 Windsurf로 가서
[03:43]
crawl이라고 하고 llms.txt를
[03:44]
붙여넣을 수 있습니다. 그리고 제가
[03:46]
crawl for rag mcp 서버를 연결했기 때문에
[03:51]
이제 이러한 도구들을 사용할 수 있습니다.
[03:54]
단일 페이지를 크롤링하는 이 도구를
[03:56]
사용하고 있습니다. 이제 제 터미널에서
[03:58]
모든 것이 실행되고 있습니다. OpenAI를
[04:00]
임베딩과 LLM에 사용하고 있고, 앞으로
[04:02]
다른 LLM들도 지원할 예정입니다.
[04:06]
임베딩 모델도 마찬가지입니다. 어쨌든
[04:08]
모든 것을 스크래핑한 다음 우리
[04:10]
Supabase 지식 기반에 넣을 것입니다.
[04:11]
조금 후에 볼 수 있는 에이전틱 RAG와
[04:13]
관련된 코드 예제들도 포함해서 말이죠.
[04:15]
그러면 Windsurf가 크롤링이
[04:17]
성공적으로 완료되었다고 알려줍니다.
[04:19]
그리고 제가 다시 데이터베이스로 가서
[04:21]
소스들로 가서 새로고침하면
[04:23]
짠! 여기 있습니다. AISDK.dev가
[04:26]
우리의 단일 소스로 있습니다.
[04:29]
이 지식 기반에서 crawl pages 테이블로
[04:31]
가면 여기에 삽입된 모든 다양한
[04:33]
청크들을 볼 수 있습니다. 그리고
[04:35]
뒤에서 이미 상당히 견고한 청킹
[04:38]
전략을 가지고 있습니다. 그것도
[04:40]
계속 개선해 나갈 예정입니다.
[04:41]
그리고 우리는 코드 예제들을 가지고 있습니다.
[04:44]
이것은 제가 최근에 추가한 것으로
[04:45]
결과를 상당히 개선했다고 생각합니다.
[04:47]
모든 문서를 크롤링하고 crawled pages에
[04:50]
넣는 것 외에도, 에이전틱 RAG를
[04:51]
사용해서 모든 코드 예제들로
[04:53]
두 번째 벡터 데이터베이스를
[04:56]
본질적으로 구축할 수 있습니다.
[04:58]
따라서 우리 에이전트는 문서와 함께
[05:00]
예제들을 구체적으로 찾아볼 수 있어
[05:02]
문서의 예제들을 사용해 비슷한
[05:04]
것을 구축하는 방법을 정말 잘
[05:07]
이해할 수 있도록 도와줍니다.
[05:09]
우리 자체 프로젝트에서요. 그래서 우리는 모든
[05:11]
예제들을 여기에 가지고 있습니다. 총 22개의
[05:13]
예제가 있는 것 같네요. Vercel AI SDK
[05:15]
문서에서 가져온 것들입니다. 이제 AI IDE로
[05:18]
돌아가서, Vercel AI SDK의 지식 베이스를
[05:20]
설정했으니, 이제 질문을 할 수 있습니다.
[05:21]
Vercel AI SDK 문서를 사용해서 OpenAI
[05:24]
모델에서 텍스트를 스트리밍하는 방법을
[05:27]
알려달라고 할 수 있습니다. 단순한 예제죠.
[05:29]
물론 이것을 코딩 과정에서도 사용할 수
[05:31]
있습니다. 여기서는 아주 간단한 예제를
[05:33]
보여드리고 있을 뿐입니다. 음, 잠시
[05:34]
기다려보겠습니다. 몇 가지 검색을 할
[05:36]
테니까요. 시간이 지나면서 다시 돌아가서
[05:38]
검색을 개선할 수도 있습니다. 잠시
[05:40]
작업하도록 놔두고, 몇 가지 예제를
[05:41]
가져온 후 답변을 출력하는 것을
[05:43]
보겠습니다. 여기서 몇 가지 예제를
[05:45]
가져온 후에요. 좋습니다. 조금 시간이
[05:46]
걸렸지만, 몇 가지 예제를 살펴본 후
[05:49]
이제 답변을 얻었습니다. 정말 정확해
[05:50]
보이는 결과를 출력했네요. OpenAI를
[05:52]
가져오고, AI SDK에서 그것을 import하고,
[05:54]
stream text 함수를 가져온 다음,
[05:56]
결과를 이렇게 얻어내는 것이죠.
[05:58]
마지막에 텍스트와 함께요. 정말 정말
[06:00]
좋아 보입니다. 좋습니다. 여기서 약간의
[06:03]
문서화를 했습니다. 기본적인 예제죠.
[06:05]
물론 이것을 훨씬 더 발전시켜서 실제
[06:07]
코딩 과정에서 사용할 수 있습니다.
[06:09]
여기 예제가 있는데, Vercel AI SDK의
[06:11]
템플릿 중 하나를 가져와서, 새로운
[06:14]
지식 베이스를 사용해 여기서 몇 가지
[06:16]
개선을 했습니다. Claude와 통합된
[06:19]
정말 멋진 웹사이트를 만들었죠.
[06:21]
채팅 인터페이스 형태로, 이 도구와 함께
[06:23]
날씨 정보를 얻을 수 있습니다.
[06:25]
여기서 볼 수 있듯이, 코드를 만드는
[06:27]
중간에 crawl4AI RAG MCP 서버를
[06:29]
사용해서 문서를 크롤링하고 있습니다.
[06:31]
이것은 페이지를 분석하고 코드를
[06:33]
변경하는 등 다른 모든 작업과 함께
[06:36]
이루어지는 것입니다. 그리고 제가
[06:37]
만든 프론트엔드가 있습니다.
[06:38]
얼마나 멋있는지 보세요. 정말 정말
[06:41]
깔끔합니다. 특히 제가 작업한 데모는,
[06:42]
궁금하시다면, AI SDK의 Claude 4
[06:45]
시작하기 데모로 시작했습니다.
[06:46]
그리고 훨씬 더 멋있게 보이도록
[06:49]
몇 가지 변경을 했습니다. 그리고
[06:51]
미네소타 미니애폴리스의 날씨가
[06:52]
어떤지 같은 질문을 할 수 있고,
[06:54]
실제로 날씨 도구를 사용해서
[06:56]
정말 멋진 결과를 표시합니다.
[06:58]
도구 호출에서 돌아온 정보와 함께
[07:00]
프론트엔드로 스트리밍된 결과를요.
[07:03]
이 RAG MCP 서버를 사용해서 아주
[07:04]
빠르게 만들고 개선한 멋진 작은 앱입니다.
[07:07]
MCP 서버를 연결하는 것이 얼마나
[07:09]
간단한지 보여드리고 있습니다.
[07:12]
AI 코딩 어시스턴트를 위해 특별히
[07:14]
설계된 정말 강력한 RAG를 가질 수
[07:16]
있습니다. 그리고 제가 말했듯이,
[07:17]
최근에 더욱 강력하게 만들었습니다.
[07:20]
컨텍스트 임베딩을 사용한 RAG의
[07:22]
여러 다른 전략들을 구현했거든요.
[07:24]
AI 코딩 어시스턴스를 위한 것이죠.
[07:29]
그리고 더욱 강력하게 만들었습니다.
[07:31]
제가 말했듯이, 컨텍스트 임베딩과 함께
[07:33]
RAG의 다양한 전략들을 구현했습니다.
[07:38]
하이브리드 RAG, 에이전틱 RAG, 그리고 리랭킹입니다.
[07:40]
이제 간단한 데모를 본 후에 이것들이 어떤 모습인지
[07:42]
다루고 싶고, 그 다음에는 이 MCP 서버와
[07:43]
아콘에 대한 몇 가지 미래 계획들에 대해
[07:45]
말씀드리겠습니다. 그리고 이러한 RAG
[07:47]
전략들을 더 깊이 다뤄보고 싶으시다면,
[07:50]
제가 최근에 다이나미스 AI 마스터리
[07:52]
커뮤니티에서 진행한 몇 가지 워크샵이
[07:54]
있습니다. 따라서 RAG 전략 같은 것들을
[07:56]
저와 함께 더 깊이 탐구하고 싶으시다면
[07:58]
dynamus.ai를 확인해보세요.
[08:00]
또한 제가 현재 구축하고 있는
[08:01]
AI 에이전트 구축을 위한 완전한 코스도
[08:03]
그곳에 있습니다. 매일 이벤트가 있고,
[08:05]
모두 AI를 함께 마스터하고 있는
[08:08]
큰 커뮤니티가 있습니다.
[08:09]
분명히 참여하고 싶어하실 만한
[08:11]
종류의 것입니다.
[08:12]
그리고 제가 이러한 전략들을 어떻게
[08:14]
구현했는지 보고 싶으시다면, 이 크롤포AI RAG
[08:16]
서버의 코드도 확인해보실 수 있습니다.
[08:18]
하지만 저와 함께 단계별로
[08:19]
정말로 살펴보시려면,
[08:21]
다이나미스에 훌륭한 워크샵이 있습니다.
[08:23]
어쨌든, 이제 이 전략들에 대해
[08:25]
알아보겠습니다. 컨텍스추얼 임베딩부터
[08:27]
시작하면, 실제로 이것은 안트로픽 팀이
[08:29]
도입한 RAG 전략입니다.
[08:32]
그들은 컨텍스추얼 검색에 대한
[08:33]
이 기사를 가지고 있으며, 여기에는
[08:35]
제가 아래 설명에 링크를 남겨둘
[08:37]
컨텍스추얼 임베딩이 포함되어 있습니다.
[08:39]
본질적으로 하는 일은 분할하고 있는
[08:41]
문서에 대해 원시 청크를 임베딩하는 대신,
[08:44]
문서를 분할할 때 각 청크를 가져와서
[08:46]
모든 단일 청크에 대해 프롬프트를
[08:48]
실행할 것입니다.
[08:50]
그리고 본질적으로 그 프롬프트는
[08:53]
청크에 앞서서 LLM에게
[08:54]
이 청크가 그것이 속한 나머지 문서와
[08:57]
어떻게 맞아떨어지는지 알려주는
[09:00]
추가 컨텍스트를 제공할 것입니다.
[09:02]
그래서 이것이 여러분의 프롬프트가
[09:05]
어떻게 생겼는지입니다. 전체 문서를
[09:06]
제공하고 전체 문서 내에서
[09:08]
위치시키고 싶은 청크가 여기 있다고
[09:10]
말합니다. LLM이 이 청크를 검색할 때
[09:11]
추가 정보를 가질 수 있도록
[09:13]
약간의 추가 컨텍스트를 제공합니다.
[09:16]
그리고 전체 문서를 넣어야 하더라도
[09:18]
그렇게 비싸지 않도록 프롬프트 캐싱을
[09:19]
사용할 수 있습니다.
[09:21]
다행히 우리의 문서 페이지들의 경우,
[09:22]
보통 그렇게 길지 않습니다.
[09:24]
그래서 여기 소스 코드 내에서
[09:26]
각각의 다른 전략들에 대해
[09:28]
소스 코드를 조금 살펴보고 싶습니다.
[09:29]
컨텍스추얼 임베딩을 생성하는
[09:31]
이 함수가 있습니다.
[09:32]
안트로픽 기사의 정확히 같은 프롬프트를
[09:34]
가지고 OpenAI를 호출합니다.
[09:36]
그리고 다시, 이 서버에 대해서도
[09:38]
향후 다른 LLM들을 지원하고 싶습니다.
[09:40]
하지만 추가 컨텍스트를 얻기 위해
[09:41]
OpenAI를 호출하고 그것을 반환합니다.
[09:44]
그래서 이제 우리의 청크는
[09:46]
추가 컨텍스트가 앞에 붙게 됩니다.
[09:48]
여기에 실제 청크 컨텍스트 자체와
[09:50]
분리하는 삼중 대시가 있습니다.
[09:52]
그래서 이제 LLM이 이 정보를
[09:54]
검색할 때, 그것으로 무엇을 해야 할지
[09:56]
더 잘 알게 됩니다.
[09:58]
그래서 우리 데이터베이스 내에서
[10:00]
Vercel AI SDK에 대해 그것이
[10:02]
어떻게 보이는지 말하면
[10:05]
이 청크들 중 하나의 내용을 클릭하면
[10:06]
코드에서 봤던 것처럼 삼중 대시 구분자가 있고
[10:08]
실제 청크 콘텐츠가 있지만
[10:10]
이 청크가 어떻게 유용한지에 대한
[10:14]
추가 정보를 제공하는 전처리된 텍스트도 있습니다
[10:16]
특히 문서나 페이지의
[10:18]
중간 부분에 있는 청크들의 경우
[10:19]
정말 정말 유용합니다
[10:22]
이렇게 하면 이 특정 정보 조각의
[10:23]
앞뒤 맥락을 더 잘 파악할 수 있습니다
[10:25]
그리고 이 레코드에서 가져온
[10:27]
정보에 대해 더 잘 이해할 수 있죠
[10:29]
다시 readme로 돌아가서
[10:32]
하이브리드 검색에 대해 살펴보겠습니다
[10:34]
하이브리드 검색은 AI 에이전트가
[10:36]
일반적인 RAG 위에
[10:38]
키워드 검색을 수행할 수 있도록 하는 것입니다
[10:41]
RAG 자체는 의미적 검색이거든요
[10:44]
정확한 키워드 매칭을 하지 않습니다
[10:47]
그래서 때때로 OpenAI를 찾고 있는데
[10:49]
OpenAI로 검색하면
[10:51]
RAG에서 돌아오는 청크들이
[10:53]
반드시 OpenAI라는 단어를 포함하지 않을 수 있어요
[10:55]
하지만 아마도 여러분은
[10:57]
그 단어가 포함된 청크만 가져오고 싶을 거예요
[10:59]
키워드 검색은 여러분의 지식 베이스에서
[11:01]
그것을 구체적으로 얻는 방법입니다
[11:03]
코드에서 이게 어떻게 보이는지
[11:05]
빠르게 보면
[11:07]
하이브리드 검색이 활성화되어 있고
[11:09]
다시 말하지만 이는
[11:10]
환경 변수를 통해 설정됩니다
[11:12]
맥락적 임베딩도 켜고 끌 수 있고
[11:14]
하이브리드 검색도
[11:15]
바로 여기서 켜고 끌 수 있습니다
[11:18]
활성화되어 있다면
[11:20]
여기서 이 쿼리를 수행합니다
[11:22]
Supabase에서 대소문자를 구분하지 않는
[11:24]
키워드 검색을 하면서
[11:26]
코드 예제나
[11:28]
크롤링된 페이지 테이블에서 가져옵니다
[11:30]
이제 도구들이 있는데
[11:32]
에이전틱 RAG에서 설명하겠지만
[11:33]
코드 예제와
[11:35]
일반 지식 베이스 둘 다를 위한 도구가 있습니다
[11:38]
그냥 이 검색을 하면서
[11:40]
콘텐츠나 요약이
[11:42]
우리가 찾고 있는 키워드를
[11:44]
포함하는지 확인합니다
[11:46]
LLM을 사용해서 특정 키워드들을
[11:47]
골라내기도 하고
[11:50]
그것을 일반 RAG와 결합해서
[11:51]
LLM에 반환하는 두 세트의 청크를
[11:54]
모두 갖게 됩니다
[11:56]
실제로 이게 어떻게 보이는지 보여드릴 수 있는데
[11:59]
N8N으로 가면
[12:02]
매우 간단한 AI 에이전트를 만들었고
[12:05]
제 Crawl4AI RAG MCP 서버에 연결했습니다
[12:07]
Windsurf에서 연결한 것처럼
[12:09]
여기 N8N에서도 하고 있고
[12:10]
다시 말하지만
[12:12]
다양한 에이전트와
[12:14]
N8N, AI 코딩 어시스턴트 등에
[12:17]
연결하는 방법에 대한 설명이 readme에 있습니다
[12:20]
이것이 제 SSE URL이고
[12:22]
MCP 서버는 앞서 본 것처럼
[12:24]
제 머신의 터미널에서 실행되고 있습니다
[12:26]
이제 채팅으로 들어가서
[12:28]
여기서 이전 대화도 볼 수 있는데
[12:30]
Windsurf에서 했던 것처럼
[12:32]
LMS 텍스트를 크롤링해 달라고 요청했고
[12:33]
여기서 새로운 대화를 시작해서
[12:36]
문서를 사용해서 Vercel AI SDK가 무엇인지
[12:39]
알려달라고 요청할 수 있습니다
[12:40]
이건 아주 기본적인 질문인데
[12:42]
단순하게 시작해서 여러분께
[12:44]
MCP 서버의 입력과 출력이 무엇인지 보여드리고 싶어서입니다.
[12:47]
그래서 이걸 닫고
[12:48]
다시 들어가보겠습니다.
[12:49]
보시다시피 우리가
[12:52]
MCP 서버에서 perform rag query 도구를 호출했습니다.
[12:54]
Vercel AI SDK에 대한 쿼리로 말이죠.
[12:56]
여기서는 특정 소스로 필터링하지 않았습니다.
[12:57]
아주 기본적인 질문이라서요.
[12:59]
그리고 오른쪽에 보이는 모든 것은
[13:00]
키워드 검색에서 반환된 청크들과
[13:02]
의미 검색, 즉 더 전통적인 RAG 조회의
[13:05]
조합이 될 것입니다.
[13:07]
여기에 정말 많은 정보가 있습니다.
[13:09]
꽤 많은 청크를 받았거든요.
[13:10]
물론 LLM에게는 너무 많지 않지만요.
[13:12]
이제 다시 돌아가서
[13:14]
여기가 우리의 답변입니다.
[13:16]
Vercel 팀이 구축한 것으로
[13:18]
애플리케이션과 기능을 확장하기 위해 만들어졌습니다.
[13:20]
AI 애플리케이션을 향상시키는 것이죠.
[13:23]
네, 정말 좋아 보입니다.
[13:24]
매우 종합적인 답변이네요.
[13:27]
이렇게 하이브리드 검색을 해봤습니다.
[13:29]
이제 다음 전략은 에이전틱 RAG입니다.
[13:32]
저는 이미 제 채널에서
[13:34]
에이전틱 RAG에 대해 꽤 많이 다뤘습니다.
[13:36]
이것은 AI 에이전트에게
[13:38]
지식 베이스를 다양한 방법으로 탐색할 수 있는
[13:41]
능력을 제공하는 것입니다.
[13:42]
에이전틱 RAG의 정말 일반적인 패턴 중 하나는
[13:44]
서로 다른 목적을 가진 여러 개의
[13:47]
벡터 데이터베이스를 갖는 것입니다.
[13:49]
그리고 에이전트가 각각에 접근할 수 있는
[13:51]
도구를 갖는 것이죠. 그리고 이것이 바로
[13:54]
코드 예제 테이블로 우리가 하고 있는 일입니다.
[13:56]
RAG를 위한 완전히 별도의 테이블로
[13:58]
거의 별도의 벡터 데이터베이스 같은 것인데
[14:00]
우리가 크롤링한 라이브러리와 관련된
[14:03]
모든 코드 예제를 특별히 저장하는 곳입니다.
[14:05]
그래서 저는 모든 문서를 포함한
[14:07]
페이지들을 크롤링했고
[14:09]
특히 예제들에 집중했습니다.
[14:11]
그리고 저는 예제가 정말 강력하다고 생각합니다.
[14:14]
AI 코딩 어시스턴트에게 예제를 제공하면 정말 많은 도움이 됩니다.
[14:17]
그래서 전용 섹션을 만들고
[14:19]
이것들을 특별히 검색할 수 있는 능력을 갖는 것으로
[14:21]
정말 좋은 결과를 얻었습니다.
[14:22]
그리고 앞서 암시했듯이
[14:24]
우리는 특별히 하나의 도구를 가지고 있습니다.
[14:26]
RAG 쿼리를 수행하는 도구인데
[14:28]
코드 예제가 아닌 크롤링된 페이지 테이블에서 말이죠.
[14:31]
그것이 N8N에서 사용된 것입니다.
[14:33]
하지만 그다음에는 매우 유사한 도구가 또 있는데
[14:34]
이번에는 코드 예제 테이블을 검색하는 것입니다.
[14:37]
둘 다 RAG를 사용하지만 서로 다른 지식 베이스이고
[14:40]
에이전트가 사용자 질문이나
[14:42]
코딩하려는 내용에 따라 어떤 것을 검색할지
[14:44]
추론할 수 있습니다.
[14:46]
그래서 이것이 에이전틱 RAG인 것입니다.
[14:48]
여기에는 더 많은 추론이 작용합니다.
[14:50]
에이전트가 지식 베이스를 탐색하는 다양한 방법들이죠.
[14:52]
그래서 N8N에서 아주 간단한 예제를
[14:53]
보여드리기 위해 여기서 명확히 하겠습니다.
[14:55]
확실한 데모를 만들고 싶어서요.
[14:57]
또한 글로벌 규칙과
[14:59]
시스템 프롬프팅 등을 사용하면
[15:01]
이러한 다양한 테이블을 정말 잘
[15:03]
사용하는 방법을 알게 할 수 있습니다.
[15:04]
하지만 글로벌 규칙과
[15:06]
시스템 프롬프팅 등을 통해
[15:07]
이 다양한 테이블들을 정말 잘
[15:08]
사용할 수 있게 만들 수 있습니다.
[15:10]
하지만 저는 단순히 AI SDK 코드 예제를 검색해서
[15:12]
OpenAI 스트리밍 출력을 사용하는 예제를 찾으라고 지시하고 있습니다.
[15:16]
그래서 여기로 들어가보면
[15:19]
첫 번째 실행에서 사용 가능한
[15:20]
모든 소스들을 가져오는 것을 볼 수 있습니다.
[15:22]
그리고 두 번째 실행에서는 이제
[15:23]
OpenAI를 쿼리로 사용하여
[15:25]
스트리밍 출력으로 코드 예제를 검색하는
[15:28]
함수를 사용하고 있습니다.
[15:30]
그리고 여기에 소스 ID가 있습니다.
[15:32]
이제 우리가 받는 결과는
[15:34]
매우 유사하게 보일 것입니다.
[15:35]
단지 여러 청크들의 묶음이지만
[15:37]
이제 이것들은 우리의 perform rag 쿼리 도구 대신
[15:39]
코드 예제 도구에서 나오고 있습니다.
[15:42]
그래서 여기 출력으로 돌아가면
[15:44]
예제가 있습니다. 좋습니다, 이것을 살펴보죠.
[15:46]
POST 요청이 있고
[15:48]
출력을 OpenAI로 보내고 있습니다.
[15:50]
그리고 어시스턴트 응답을 반환하고 있습니다.
[15:52]
이것이 정확한지는 완전히 확실하지 않지만
[15:54]
여기서 중요한 것은
[15:56]
이러한 예제들을 다시 가져오고 있다는 것입니다.
[15:58]
이것을 보세요. AI SDK에서 직접
[16:00]
가져온 이 예제가 있고
[16:03]
제가 여기서 본 코드를 기반으로
[16:05]
OpenAI에서 어시스턴트 응답을 가져오고 있습니다.
[16:07]
마치 제가 정확히 하고 싶었던 것처럼
[16:09]
내뱉고 있는 것 같습니다.
[16:10]
예제를 찾아서 제게 내뱉어 주었습니다.
[16:12]
그것은 정말 완벽합니다.
[16:14]
그리고 그것이 우리를 여기
[16:16]
마지막 전략인 리랭킹으로 이끕니다.
[16:18]
아직 제 채널에서 다루지 않은 내용이지만
[16:20]
이것은 확실히 또 다른 매우 강력한 전략입니다.
[16:23]
리랭킹의 역할은
[16:24]
벡터 데이터베이스에서 반환된 청크들을 가져와서
[16:27]
실제로 질문이나
[16:29]
우리가 코딩하려는 것과 가장 관련성이 높은 순서로
[16:32]
정렬하는 것입니다.
[16:33]
별도의 AI 모델을 사용합니다.
[16:35]
대형 언어 모델이 아니라
[16:37]
크로스 인코더라고 불리는 모델을 사용해서
[16:39]
쿼리와 우리가 되돌려 받은 청크들을 분석하고
[16:41]
평가된 관련성을 기반으로 정렬합니다.
[16:44]
그래서 코드로 가보면
[16:46]
리랭킹을 사용하고 있다면
[16:48]
이것이 어떻게 보이는지
[16:50]
다시 말하지만, 이것은 환경 변수에서
[16:53]
설정한 것에 의해 결정됩니다.
[16:55]
그러면 결과를 리랭킹하기 위해
[16:57]
이 함수를 호출할 것입니다.
[16:58]
그래서 우리는 이 모델을 호출할 것입니다.
[17:00]
이것은 단지 여러분의 컴퓨터에서
[17:03]
로컬로 실행되는 크로스 인코더 모델입니다.
[17:05]
우리가 여기서 설정한 것을 보여드리겠습니다.
[17:07]
그래서 HuggingFace에서
[17:09]
다운로드하고 있는 이 크로스 인코더가 있습니다.
[17:10]
오픈소스 모델을 가져와서
[17:12]
리랭킹을 하는 데 사용하고
[17:14]
그다음 점수를 기반으로
[17:16]
정렬된 결과를 반환합니다.
[17:19]
우리가 생성하는 모든 쌍에 대해
[17:22]
model.predict를 호출해서 점수를 얻습니다.
[17:24]
사용자 쿼리나 이 경우 AI 어시스턴트 쿼리와
[17:28]
각 청크의 쌍을 생성하고
[17:31]
그것들을 점수 매기고 정렬할 것입니다.
[17:34]
그래서 N8N으로 돌아가면
[17:36]
이 출력이 어떻게 보이는지 볼 수 있습니다.
[17:38]
코드 예제에서 반환한 청크의
[17:40]
이 최상위 항목이 가장 높은 점수를 가지고 있습니다.
[17:45]
점수를 봅시다. 아래로 스크롤해서
[17:47]
re-rank 점수를 확인해보면, 이
[17:49]
JSON이 정말 복잡하게 보이지만
[17:51]
AI 코딩 어시스턴트가 읽기에는 매우
[17:53]
쉽습니다. re-rank 점수는
[17:55]
3점입니다. 그리고 맨 아래
[17:57]
마지막 청크까지 가보면
[18:00]
re-rank 점수가 -10.4입니다. 이 값이
[18:03]
우리에게 큰 의미는 없지만 기본적으로
[18:06]
작을수록, 즉 매우 부정적인
[18:08]
숫자일수록 관련성이 낮다는
[18:10]
의미입니다. 그래서 맨 아래에
[18:11]
있는 것이죠. 그리고 이것은
[18:13]
3점으로 가장 관련성이 높습니다.
[18:14]
출력을 비교했을 때 보신 것처럼
[18:16]
이것이 실제로 선택되어
[18:18]
우리 질문인 'OpenAI로
[18:19]
스트림 출력을 어떻게 하는가'에
[18:21]
대해 공유된 예시입니다.
[18:24]
재랭킹은 또한 강력한 방법으로
[18:26]
RAG에서 50개의 다른 청크 같은
[18:28]
많은 청크를 반환하고 나서
[18:31]
재랭킹을 사용해서
[18:32]
가장 관련성 높은 10개만 반환하는
[18:35]
방법입니다. 기본적으로
[18:36]
LLM에 더 많이 넣지 않고도
[18:38]
더 많은 청크로 작업할 수 있게 해주어
[18:40]
압도당하지 않고 프롬프트가
[18:42]
너무 길어지지 않게 하는 방법입니다.
[18:44]
재랭킹은 또 다른 매우 강력한
[18:46]
기법이고 이는 이 RAG MCP
[18:48]
서버에 대한 미래 계획으로 이어집니다
[18:51]
왜냐하면 더 많은 전략을
[18:52]
구현하고 싶기 때문입니다. 멀티쿼리 RAG
[18:55]
쿼리 확장 같은 것들, 심지어
[18:57]
Graffiti나 Light RAG 같은
[18:59]
지식 그래프를 활용한 에이전틱 RAG 구축도요.
[19:02]
여기서 구현할 수 있는 다양한
[19:04]
전략들이 정말 많아서 AI 코딩 어시스턴트를
[19:07]
위한 최고의 RAG MCP 서버를
[19:09]
만들 수 있습니다. 그리고 많은 것들을
[19:11]
뒤에서 실험하고 있습니다
[19:12]
지금 이 순간에. 그래서 시간을
[19:14]
들이고 있고 그래서 이 시점에서
[19:15]
Archon에서 실제 활동을
[19:17]
많이 보지 못했습니다. 왜냐하면
[19:19]
이것을 Archon에 구축하고 Archon에 대한
[19:21]
비전을 AI 코딩 어시스턴트의
[19:23]
지식 백본으로 전환할 때까지
[19:25]
최적의 RAG 전략을
[19:27]
확실히 갖추고 싶기 때문입니다.
[19:29]
Archon을 프로젝트 작업 관리를
[19:31]
돕고 프로젝트의 다른 부분을
[19:32]
관리할 에이전트를 설정해서
[19:34]
구축하는 것으로 계속 발전시켜 나가고
[19:36]
있습니다. 이에 대한 아이디어가
[19:38]
정말 많고, 흥미진진한 이유가
[19:40]
정말 많습니다. 그리고 이것을 오픈소스로
[19:42]
유지하겠습니다. 공개적으로 계속
[19:44]
구축해 나갈 것이고 여러분도
[19:45]
계속 따라오실 수 있고
[19:47]
원한다면 구축을 도와주실 수도 있습니다.
[19:50]
정말 그것을 권장합니다.
[19:51]
실제로 지금 누군가가 Archon의
[19:53]
프론트엔드 개편을 도와주고 있어서
[19:55]
자동 크롤링을 설정할 수 있고
[19:57]
문서를 최신 상태로 유지하고
[19:59]
UI에서 MCP 서버를 관리할 수 있습니다.
[20:02]
기본적으로 Archon을 완전한
[20:04]
애플리케이션으로 만들어서 AI 코딩
[20:06]
어시스턴트와 AI 에이전트에
[20:08]
연결할 수 있게 하는 것입니다.
[20:09]
충분히 범용적이어서 이제
[20:11]
원하는 모든 것에 대한 RAG가 될 것입니다.
[20:13]
그래서 Archon에 대한 비전은
[20:15]
사람들이 작업하는 대부분의
[20:17]
에이전트와 AI 코딩 어시스턴트에
[20:19]
동력을 제공하는 것입니다.
[20:21]
거기까지 갈 수 있는 능력이 있다고
[20:23]
생각하고 그 정도까지 가져갈 비전이 많습니다.
[20:26]
지금 이 Crawl4AI RAG MCP
[20:27]
서버에 대해 갖고 있는 모든 것과
[20:30]
최종적으로 이것을 Archon의
[20:31]
다음 진화로 만들 계획입니다.
[20:34]
그리고 다시 한 번 강조하고 싶은 것은
[20:36]
이것이 완전히 오픈소스 프로젝트이고
[20:38]
계속 그럴 것이라는 점입니다.
[20:40]
그래서 다양한 방법으로 참여하실 수
[20:42]
있습니다. GitHub에서 PR을 만들어
[20:45]
변경 사항을 도와주실 수 있고
[20:47]
아래 댓글이나 GitHub
[20:49]
저장소에서 제안을 해주실 수 있습니다.
[20:50]
어떤 방식으로든 참여하고 싶으시다면
[20:52]
정말 환영합니다. 이것은 큰 사업이고
[20:55]
여러분의 도움이 확실히 필요합니다.
[20:57]
이 콘텐츠를 좋아하시고
[20:59]
이 MCP 서버나 AI 에이전트에
[21:00]
대한 더 많은 내용을 기대하신다면
[21:03]
좋아요와 구독을 정말
[21:05]
부탁드립니다. 그럼 다음 영상에서
[21:07]
뵙겠습니다