InfoGrab DocsInfoGrab Docs

n8n의 RAG

요약

검색 증강 생성(Retrieval-Augmented Generation, RAG)1은 언어 모델과 외부 데이터 소스를 결합하여 AI 응답을 개선하는 기법입니다. 벡터 스토어3는 텍스트, 이미지 또는 기타 데이터의 수치적 표현인 고차원 벡터를 저장하고 검색하도록 설계된 특수한 데이터베이스입니다.

RAG란 무엇인가#

검색 증강 생성(Retrieval-Augmented Generation, RAG)1은 언어 모델과 외부 데이터 소스를 결합하여 AI 응답을 개선하는 기법입니다. 모델의 내부 학습 데이터에만 의존하는 대신, RAG 시스템은 관련 문서를 검색하여 응답을 최신 정보, 도메인 특화 정보 또는 독점 정보에 근거2하도록 만듭니다. RAG 워크플로는 일반적으로 이 외부 데이터를 효율적으로 관리하고 검색하기 위해 벡터 스토어에 의존합니다.

벡터 스토어란 무엇인가?#

벡터 스토어3는 텍스트, 이미지 또는 기타 데이터의 수치적 표현인 고차원 벡터를 저장하고 검색하도록 설계된 특수한 데이터베이스입니다. 문서를 업로드하면 벡터 스토어는 이를 청크로 분할하고 각 청크를 임베딩 모델4을 사용하여 벡터로 변환합니다.

이러한 벡터는 유사도 검색을 사용하여 쿼리할 수 있으며, 이는 키워드 일치가 아니라 *의미론적 의미(semantic meaning)*를 기반으로 결과를 구성합니다. 이 때문에 벡터 스토어는 대규모 지식 집합을 검색하고 추론해야 하는 RAG 및 기타 AI 시스템의 강력한 기반이 됩니다.

n8n에서 RAG를 사용하는 방법#

Note

RAG 템플릿으로 시작하기

👉 RAG 스타터 템플릿으로 n8n에서 RAG를 사용해보세요. 이 템플릿에는 파일 업로드용 워크플로와 파일 쿼리용 워크플로, 두 가지 완성된 워크플로가 포함되어 있습니다.

벡터 스토어에 데이터 삽입하기#

에이전트가 사용자 지정 지식에 액세스하려면 먼저 해당 데이터를 벡터 스토어에 업로드해야 합니다.

  1. 소스 데이터를 가져오는 데 필요한 노드를 추가합니다.
  2. Vector Store 노드(예: Simple Vector Store)를 삽입하고 Insert Documents 작업을 선택합니다.
  3. 텍스트를 벡터 임베딩으로 변환하는 임베딩 모델을 선택합니다. 올바른 임베딩 모델 선택에 대한 자세한 내용은 FAQ를 참고하세요.
  4. 콘텐츠를 청크로 분할하는 Default Data Loader 노드를 추가합니다. 기본 설정을 사용하거나 자체 청킹 전략을 정의할 수 있습니다.
    • Character Text Splitter: 문자 길이 기준으로 분할합니다.
    • Recursive Character Text Splitter: Markdown, HTML, 코드 블록 또는 단순 문자를 기준으로 재귀적으로 분할합니다(대부분의 사용 사례에 권장).
    • Token Text Splitter: 토큰 수 기준으로 분할합니다.
  5. (선택 사항) 각 청크에 메타데이터를 추가하여 컨텍스트를 보강하고 나중에 더 나은 필터링을 할 수 있게 합니다.

데이터 쿼리하기#

에이전트를 사용하거나 노드를 통해 직접 쿼리하는 두 가지 주요 방법으로 데이터를 쿼리할 수 있습니다.

에이전트 사용하기#

  1. 워크플로에 에이전트를 추가합니다.
  2. 벡터 스토어를 **도구(tool)**로 추가하고, 에이전트가 언제 사용해야 하는지 이해할 수 있도록 **설명(description)**을 작성합니다.
    • 반환할 청크 수를 정의하려면 limit을 설정합니다.
    • 각 청크에 대한 추가 컨텍스트를 제공하려면 Include Metadata를 활성화합니다.
  3. 데이터를 삽입할 때 사용한 것과 동일한 임베딩 모델을 추가합니다.
Note

프로 팁

비용이 많이 드는 모델의 토큰을 절약하려면, 먼저 Vector Store Question Answer tool을 사용하여 관련 데이터를 검색한 다음, 그 결과만 Agent에 전달할 수 있습니다. 실제 동작 예시는 이 템플릿을 확인하세요.

노드를 직접 사용하기#

  1. 캔버스에 벡터 스토어 노드를 추가하고 Get Many 작업을 선택합니다.
  2. 쿼리 또는 프롬프트를 입력합니다.
    • 반환할 청크 수를 지정하려면 limit을 설정합니다.
    • 필요한 경우 Include Metadata를 활성화합니다.

자주 묻는 질문#

올바른 임베딩 모델은 어떻게 선택하나요?#

올바른 임베딩 모델은 사례마다 다릅니다.

일반적으로 더 작은 모델(예: text-embedding-ada-002)은 더 빠르고 저렴하므로 짧고 범용적인 문서나 경량 RAG 워크플로에 이상적입니다. 더 큰 모델(예: text-embedding-3-large)은 더 나은 의미론적 이해를 제공합니다. 이러한 모델은 긴 문서, 복잡한 주제, 또는 정확도가 중요한 경우에 가장 적합합니다.

내 사용 사례에 가장 적합한 텍스트 분할 방식은 무엇인가요?#

이 역시 데이터에 크게 의존합니다.

  • 작은 청크(예: 200~500토큰)는 세밀한 검색에 적합합니다.
  • 큰 청크는 더 많은 컨텍스트를 담을 수 있지만 희석되거나 노이즈가 낄 수 있습니다.

AI가 청크의 컨텍스트를 이해하려면 적절한 오버랩 크기를 사용하는 것이 중요합니다. 이것이 Markdown이나 Code Block 분할을 사용하면 청크를 더 좋게 만드는 데 도움이 되는 이유이기도 합니다.

또 다른 좋은 접근 방식은 청크에 더 많은 컨텍스트(예: 청크가 유래한 문서에 대한 정보)를 추가하는 것입니다. 더 자세히 알아보고 싶다면 Anthropic의 이 훌륭한 아티클을 확인해보세요.

Footnotes

  1. 검색 증강 생성(Retrieval-augmented generation, RAG)은 LLM이 AI 응답을 개선하기 위해 외부 소스로부터 새로운 정보에 액세스할 수 있도록 하는 기법입니다. RAG 시스템은 관련 문서를 검색하여 응답을 최신 정보, 도메인 특화 정보 또는 독점 정보에 근거하도록 하여 원래의 학습 데이터를 보완합니다. RAG 시스템은 이 외부 데이터를 효율적으로 관리하고 검색하기 위해 벡터 스토어에 의존하는 경우가 많습니다.

  2. AI, 특히 검색 증강 생성(RAG) 맥락에서 근거성(groundedness)과 비근거성(ungroundedness)은 모델의 응답이 소스 정보를 얼마나 정확하게 반영하는지를 나타내는 척도입니다. 모델은 근거 있는 응답을 생성하기 위해 소스 문서를 사용하는 반면, 근거 없는 응답은 해당 소스로 뒷받침되지 않는 추측이나 환각(hallucination)을 포함합니다.

  3. 벡터 스토어, 즉 벡터 데이터베이스는 정보의 수학적 표현을 저장합니다. 임베딩 및 리트리버와 함께 사용하여 AI가 질문에 답할 때 액세스할 수 있는 데이터베이스를 만듭니다.

  4. 임베딩은 벡터를 사용하여 데이터를 수치로 표현한 것입니다. AI는 이를 사용하여 여러 차원에 걸쳐 값을 매핑함으로써 복잡한 데이터와 관계를 해석합니다. 벡터 데이터베이스, 즉 벡터 스토어는 임베딩을 저장하고 액세스하도록 설계된 데이터베이스입니다.

n8n의 RAG

n8n v2.29
원문 보기
요약

검색 증강 생성(Retrieval-Augmented Generation, RAG)1은 언어 모델과 외부 데이터 소스를 결합하여 AI 응답을 개선하는 기법입니다. 벡터 스토어3는 텍스트, 이미지 또는 기타 데이터의 수치적 표현인 고차원 벡터를 저장하고 검색하도록 설계된 특수한 데이터베이스입니다.

RAG란 무엇인가#

검색 증강 생성(Retrieval-Augmented Generation, RAG)1은 언어 모델과 외부 데이터 소스를 결합하여 AI 응답을 개선하는 기법입니다. 모델의 내부 학습 데이터에만 의존하는 대신, RAG 시스템은 관련 문서를 검색하여 응답을 최신 정보, 도메인 특화 정보 또는 독점 정보에 근거2하도록 만듭니다. RAG 워크플로는 일반적으로 이 외부 데이터를 효율적으로 관리하고 검색하기 위해 벡터 스토어에 의존합니다.

벡터 스토어란 무엇인가?#

벡터 스토어3는 텍스트, 이미지 또는 기타 데이터의 수치적 표현인 고차원 벡터를 저장하고 검색하도록 설계된 특수한 데이터베이스입니다. 문서를 업로드하면 벡터 스토어는 이를 청크로 분할하고 각 청크를 임베딩 모델4을 사용하여 벡터로 변환합니다.

이러한 벡터는 유사도 검색을 사용하여 쿼리할 수 있으며, 이는 키워드 일치가 아니라 *의미론적 의미(semantic meaning)*를 기반으로 결과를 구성합니다. 이 때문에 벡터 스토어는 대규모 지식 집합을 검색하고 추론해야 하는 RAG 및 기타 AI 시스템의 강력한 기반이 됩니다.

n8n에서 RAG를 사용하는 방법#

Note

RAG 템플릿으로 시작하기

👉 RAG 스타터 템플릿으로 n8n에서 RAG를 사용해보세요. 이 템플릿에는 파일 업로드용 워크플로와 파일 쿼리용 워크플로, 두 가지 완성된 워크플로가 포함되어 있습니다.

벡터 스토어에 데이터 삽입하기#

에이전트가 사용자 지정 지식에 액세스하려면 먼저 해당 데이터를 벡터 스토어에 업로드해야 합니다.

  1. 소스 데이터를 가져오는 데 필요한 노드를 추가합니다.
  2. Vector Store 노드(예: Simple Vector Store)를 삽입하고 Insert Documents 작업을 선택합니다.
  3. 텍스트를 벡터 임베딩으로 변환하는 임베딩 모델을 선택합니다. 올바른 임베딩 모델 선택에 대한 자세한 내용은 FAQ를 참고하세요.
  4. 콘텐츠를 청크로 분할하는 Default Data Loader 노드를 추가합니다. 기본 설정을 사용하거나 자체 청킹 전략을 정의할 수 있습니다.
    • Character Text Splitter: 문자 길이 기준으로 분할합니다.
    • Recursive Character Text Splitter: Markdown, HTML, 코드 블록 또는 단순 문자를 기준으로 재귀적으로 분할합니다(대부분의 사용 사례에 권장).
    • Token Text Splitter: 토큰 수 기준으로 분할합니다.
  5. (선택 사항) 각 청크에 메타데이터를 추가하여 컨텍스트를 보강하고 나중에 더 나은 필터링을 할 수 있게 합니다.

데이터 쿼리하기#

에이전트를 사용하거나 노드를 통해 직접 쿼리하는 두 가지 주요 방법으로 데이터를 쿼리할 수 있습니다.

에이전트 사용하기#

  1. 워크플로에 에이전트를 추가합니다.
  2. 벡터 스토어를 **도구(tool)**로 추가하고, 에이전트가 언제 사용해야 하는지 이해할 수 있도록 **설명(description)**을 작성합니다.
    • 반환할 청크 수를 정의하려면 limit을 설정합니다.
    • 각 청크에 대한 추가 컨텍스트를 제공하려면 Include Metadata를 활성화합니다.
  3. 데이터를 삽입할 때 사용한 것과 동일한 임베딩 모델을 추가합니다.
Note

프로 팁

비용이 많이 드는 모델의 토큰을 절약하려면, 먼저 Vector Store Question Answer tool을 사용하여 관련 데이터를 검색한 다음, 그 결과만 Agent에 전달할 수 있습니다. 실제 동작 예시는 이 템플릿을 확인하세요.

노드를 직접 사용하기#

  1. 캔버스에 벡터 스토어 노드를 추가하고 Get Many 작업을 선택합니다.
  2. 쿼리 또는 프롬프트를 입력합니다.
    • 반환할 청크 수를 지정하려면 limit을 설정합니다.
    • 필요한 경우 Include Metadata를 활성화합니다.

자주 묻는 질문#

올바른 임베딩 모델은 어떻게 선택하나요?#

올바른 임베딩 모델은 사례마다 다릅니다.

일반적으로 더 작은 모델(예: text-embedding-ada-002)은 더 빠르고 저렴하므로 짧고 범용적인 문서나 경량 RAG 워크플로에 이상적입니다. 더 큰 모델(예: text-embedding-3-large)은 더 나은 의미론적 이해를 제공합니다. 이러한 모델은 긴 문서, 복잡한 주제, 또는 정확도가 중요한 경우에 가장 적합합니다.

내 사용 사례에 가장 적합한 텍스트 분할 방식은 무엇인가요?#

이 역시 데이터에 크게 의존합니다.

  • 작은 청크(예: 200~500토큰)는 세밀한 검색에 적합합니다.
  • 큰 청크는 더 많은 컨텍스트를 담을 수 있지만 희석되거나 노이즈가 낄 수 있습니다.

AI가 청크의 컨텍스트를 이해하려면 적절한 오버랩 크기를 사용하는 것이 중요합니다. 이것이 Markdown이나 Code Block 분할을 사용하면 청크를 더 좋게 만드는 데 도움이 되는 이유이기도 합니다.

또 다른 좋은 접근 방식은 청크에 더 많은 컨텍스트(예: 청크가 유래한 문서에 대한 정보)를 추가하는 것입니다. 더 자세히 알아보고 싶다면 Anthropic의 이 훌륭한 아티클을 확인해보세요.

Footnotes

  1. 검색 증강 생성(Retrieval-augmented generation, RAG)은 LLM이 AI 응답을 개선하기 위해 외부 소스로부터 새로운 정보에 액세스할 수 있도록 하는 기법입니다. RAG 시스템은 관련 문서를 검색하여 응답을 최신 정보, 도메인 특화 정보 또는 독점 정보에 근거하도록 하여 원래의 학습 데이터를 보완합니다. RAG 시스템은 이 외부 데이터를 효율적으로 관리하고 검색하기 위해 벡터 스토어에 의존하는 경우가 많습니다.

  2. AI, 특히 검색 증강 생성(RAG) 맥락에서 근거성(groundedness)과 비근거성(ungroundedness)은 모델의 응답이 소스 정보를 얼마나 정확하게 반영하는지를 나타내는 척도입니다. 모델은 근거 있는 응답을 생성하기 위해 소스 문서를 사용하는 반면, 근거 없는 응답은 해당 소스로 뒷받침되지 않는 추측이나 환각(hallucination)을 포함합니다.

  3. 벡터 스토어, 즉 벡터 데이터베이스는 정보의 수학적 표현을 저장합니다. 임베딩 및 리트리버와 함께 사용하여 AI가 질문에 답할 때 액세스할 수 있는 데이터베이스를 만듭니다.

  4. 임베딩은 벡터를 사용하여 데이터를 수치로 표현한 것입니다. AI는 이를 사용하여 여러 차원에 걸쳐 값을 매핑함으로써 복잡한 데이터와 관계를 해석합니다. 벡터 데이터베이스, 즉 벡터 스토어는 임베딩을 저장하고 액세스하도록 설계된 데이터베이스입니다.