n8n Question and Answer Chain 노드: 모든 문서로 검색 증강 (RAG) 워크플로우 구축하기 [무료 워크플로우 JSON
요약
n8n의 Question and Answer Chain 노드를 활용하여 코드 없이 RAG(검색 증강 생성) 워크플로우를 구축하는 방법을 설명합니다. 벡터 스토어 연결, 설정 옵션, 주의 사항 및 실무용 워크플로우 패턴을 다룹니다.
핵심 포인트
- n8n QA Chain 노드로 검색, 증강, 생성의 RAG 패턴 구현 가능
- Chat Model과 Vector Store Retriever 연결이 필수적임
- Top K 설정을 통해 컨텍스트 양과 토큰 비용 간의 균형 조절 가능
- 소스 문서 반환 옵션으로 답변의 근거 확인 및 디버깅 지원
Question and Answer Chain 노드는 n8n의 내장 RAG (Retrieval-Augmented Generation, 검색 증강 생성) 노드입니다. 이 노드를 벡터 스토어 (Vector Store)에 연결하고 사용자 질문을 입력하면, 관련 문서 청크 (Chunks)를 검색하여 언어 모델 (Language Model)에 전달하고 근거 있는 답변을 반환합니다. 이 모든 과정은 코드를 작성할 필요 없이 이루어집니다.
이 가이드에서는 노드의 작동 방식, 전체적인 연결 패턴, 설정 옵션, 사람들이 자주 실수하는 6가지 주의 사항, 그리고 무료 JSON이 포함된 3가지 프로덕션 준비 완료 워크플로우 패턴을 다룹니다.
Question and Answer Chain 노드가 하는 일
QA Chain 노드는 전형적인 RAG 패턴을 구현합니다:
- Retrieve (검색) — 사용자의 질문을 임베딩 (Embed)하고 벡터 스토어에서 의미론적으로 유사한 청크를 쿼리합니다.
- Augment (증강) — 검색된 청크를 컨텍스트 (Context)로서 프롬프트 (Prompt)에 주입합니다.
- Generate (생성) — 증강된 프롬프트를 언어 모델에 전달하여 답변을 반환합니다.
그 결과, 단순히 LLM이 환각 (Hallucination)을 일으킨 응답이 아니라, 실제 문서에 근거한 답변을 얻을 수 있습니다.
일반적인 입력:
- 사용자 질문 (Webhook, Form 또는 Chat Trigger로부터)
- 데이터가 채워진 벡터 스토어 (Pinecone, Qdrant, Weaviate, In-memory)
일반적인 출력:
- 검색된 컨텍스트에 근거한 텍스트 답변
- 선택 사항: 소스 청크 메타데이터 (답변이 어떤 문서에서 왔는지에 대한 정보)
노드 연결 (Node Wiring)
QA Chain에는 두 가지 필수적인 서브 노드 (Sub-node) 연결이 필요합니다:
[질문 소스 — Webhook / Chat Trigger / Form Trigger]
↓
[Question and Answer Chain]
...
필수 연결 항목:
- Chat Model — 답변을 생성하는 LLM (OpenAI, Anthropic, Gemini, Ollama 등)
- Vector Store Retriever — 데이터가 채워진 벡터 스토어를 감싸는 리트리버 (Retriever) 서브 노드
Vector Store Retriever를 연결하는 방법:
- Vector Store 노드(예: Pinecone Vector Store)를 추가합니다.
- 모드를 **Retrieve Documents (For Agent/Chain)**로 설정합니다.
- QA Chain의 Vector Store Retriever 입력에 연결합니다.
설정 옵션 (Configuration Options)
Query 필드
들어오는 아이템(incoming item)에서 사용자의 질문이 포함된 필드입니다. 기본값은 query입니다. 만약 질문이 다른 필드(예: message, text, question)에 있다면 이를 변경하십시오.
검색할 문서 수 (Top K)
쿼리당 벡터 스토어(Vector Store)에서 가져올 청크(Chunk)의 개수입니다. 기본값은 일반적으로 4입니다. 값이 높을수록 LLM(대규모 언어 모델)에 더 많은 컨텍스트(Context)를 제공하지만, 토큰 비용이 증가하고 관련성이 희석될 수 있습니다. 대부분의 사용 사례에서는 3~6개가 적당합니다.
소스 문서 반환 (Return source documents)
이 옵션을 활성화하면 노드가 출력에 소스 청크 메타데이터(어떤 문서, 페이지 또는 청크에서 답변이 왔는지)를 포함합니다. 인용 기반의 답변을 생성하거나 디버깅(Debugging)을 할 때 필수적입니다.
6가지 주의사항 (Gotchas)
1. 벡터 스토어에 데이터가 미리 채워져 있어야 합니다
QA 체인(QA Chain)은 기존의 벡터 스토어에서 정보를 검색할 뿐, 문서를 직접 수집(Ingest)하지 않습니다. 문서를 임베딩(Embedding)하고 저장하는 별도의 수집(Ingestion) 워크플로우가 필요합니다. QA 체인은 쿼리 시점에 읽기 전용(Read-only)으로 작동합니다.
2. 임베딩 모델이 수집 모델과 일치해야 합니다
쿼리를 실행할 때, n8n은 Vector Store Retriever에 연결된 임베딩(Embeddings) 모델을 사용하여 질문을 임베딩합니다. 이 모델은 반드시 문서를 처음 수집할 때 사용했던 것과 동일한 모델(및 동일한 차원)이어야 합니다. 임베딩이 일치하지 않으면 잘못된 검색 결과가 생성되며, 코사인 유사도(Cosine Similarity) 점수가 무의미해집니다.
3. 쿼리 필드 불일치는 빈 답변을 반환합니다
들어오는 질문은 message에 있는데 노드가 query를 읽도록 설정되어 있다면, 벡터 스토어에 빈 문자열을 전달하게 됩니다. 이 경우 리트리버(Retriever)는 아무런 청크도 반환하지 않으며, LLM은 자신의 학습 데이터만으로 답변하거나 "모릅니다"라고 답변하게 됩니다. 항상 Query 필드 설정이 실제 데이터 구조와 일치하는지 확인하십시오.
4. 청크 크기가 답변 품질에 영향을 미칩니다
청크(chunks)가 너무 작으면 (< 100 tokens), 검색된 컨텍스트 (context)가 파편화되어 LLM (Large Language Model)이 완전한 답변을 합성할 수 없습니다. 반대로 청크가 너무 크면 (> 1000 tokens), 컨텍스트 제한 (context limits)에 더 빨리 도달하게 되고 쿼리 (query)당 비용이 더 많이 발생합니다. 대부분의 문서 유형에 대해 약 50토큰의 오버랩 (overlap)을 포함하여 청크당 300~500토큰을 설정하는 것이 좋은 기본값입니다.
5. 가드레일 (guardrails) 없이는 LLM이 여전히 환각 (hallucination)을 일으킵니다
QA 체인 (QA Chain)은 검색된 컨텍스트 (context)를 기반으로 LLM을 근거 있게(grounding) 만들지만, 검색된 청크 (chunks)가 질문에 완전히 답하지 못할 경우 여전히 환각 (hallucination)을 일으킬 수 있습니다. 컨텍스트 (context)가 불충분할 때 "그 질문에 답변할 충분한 정보가 없습니다"라고 응답하도록 프롬프트 (prompt)에 명시적인 지침을 추가하십시오. 일부 벡터 스토어 (vector store) + 체인 (chain) 조합은 이를 기본적으로 지원하므로, 노드의 프롬프트 템플릿 (prompt template) 옵션을 확인하십시오.
6. 인메모리 벡터 스토어 (In-Memory Vector Store)는 실행 간에 유지되지 않습니다
n8n의 내장 인메모리 벡터 스토어 (in-memory vector store)는 워크플로우 (workflow)가 실행될 때마다 초기화됩니다. 이는 테스트나 단일 실행 배치 작업 (batch jobs)에는 유용하지만, 동일한 코퍼스 (corpus)를 반복적으로 쿼리 (query)해야 하는 라이브 QA 시스템에는 적합하지 않습니다. 프로덕션 (production) 환경에서는 Pinecone, Qdrant 또는 Weaviate를 사용하십시오.
3가지 워크플로우 패턴 (Workflow Patterns)
패턴 1: 내부 지식 베이스 봇 (Internal Knowledge Base Bot)
시나리오: 팀에 Notion 위키, 내부 문서 또는 Confluence 공간이 있습니다. 실제 문서를 검색하여 직원의 질문에 답변하는 Slack 또는 Teams 봇을 만들고 싶습니다.
흐름 (Flow):
수집 워크플로우 (Ingestion workflow, 한 번 또는 스케줄에 따라 실행):
HTTP Request (Notion/Confluence API에서 문서 가져오기)
→ Code node (텍스트를 약 400토큰 세그먼트로 청킹)
→ Embeddings node (OpenAI text-embedding-3-small)
...
쿼리 워크플로우 (Query workflow, 각 질문 시 실행):
Webhook Trigger (Slack 슬래시 명령어 또는 Events API)
→ Question and Answer Chain
↑ Chat Model (GPT-4o 또는 Claude)
...
작동 원리: 수집 워크플로우 (ingestion workflow)가 벡터 스토어 (vector store)를 최신 상태로 유지합니다. 쿼리 워크플로우 (query workflow)는 상태가 없고 (stateless) 빠릅니다. 즉, 각 Slack 질문이 실시간 검색 (retrieval) + 생성 (generation) 사이클을 트리거합니다. 소스 문서의 메타데이터 (metadata)를 사용하면 답변에 링크를 포함할 수 있습니다.
무료 JSON: Knowledge Base Bot 워크플로우 다운로드 →
패턴 2: PDF 문서 Q&A (고객 대응용)
시나리오: 제품 매뉴얼, 컴플라이언스 (compliance) 문서 또는 법적 계약서가 PDF 형식으로 존재합니다. 고객이나 내부 사용자가 문서를 처음부터 끝까지 읽지 않고도 특정 문서에 대해 질문해야 합니다.
흐름 (Flow):
수집 (Ingestion) 워크플로우:
HTTP Request (URL 또는 S3에서 PDF 다운로드)
→ Extract From File 노드 (PDF를 텍스트로 읽기)
→ Code 노드 (400-토큰 세그먼트로 청킹 (chunking), doc_id 메타데이터 태깅)
...
쿼리 (Query) 워크플로우:
Webhook Trigger (POST: { doc_id: "...", question: "..." })
→ Question and Answer Chain
↑ Chat Model
...
작동 원리: doc_id를 통한 네임스페이싱 (Namespacing)을 통해 하나의 벡터 스토어 (vector store)에 수천 개의 문서를 호스팅하고, 각 질문의 범위를 관련 문서로 제한할 수 있습니다. 사용자는 일반적인 LLM 응답이 아닌, 실제 텍스트에 근거한 답변을 받게 됩니다.
무료 JSON: PDF Q&A 워크플로우 다운로드 →
패턴 3: 지원 티켓 자동 응답기
시나리오: 지원 팀에 검증된 답변이 포함된 수백 개의 해결된 티켓이 있습니다. 새로운 티켓이 도착하면 과거의 유사한 답변을 기반으로 응답 초안을 자동으로 작성하고, 발송 전 검토를 위해 담당자에게 전달하고자 합니다.
흐름 (Flow):
수집 (Ingestion) 워크플로우 (배치 (batch), 주기적 실행):
HTTP Request (Zendesk/Linear API에서 해결된 티켓 가져오기)
→ Filter 노드 ("resolved" 상태 + agent_rating > 4인 티켓만 필터링)
→ Code 노드 ("Problem: ... Solution: ..." 청크 형식으로 포맷팅)
...
쿼리 (Query) 워크플로우:
Webhook (새 티켓 생성됨)
→ Question and Answer Chain
↑ Chat Model (시스템 프롬프트 포함: "제공된 컨텍스트 (context)에만 기반하여 지원 답변 초안을 작성하세요")
...
작동 원리: LLM은 일반적인 학습 데이터가 아닌 검증된 과거 답변을 기반으로 초안을 작성합니다. 카테고리별 필터링은 검색 정밀도 (retrieval precision)를 향상시킵니다. 발송 전 단계에 포함된 인간 참여 (human-in-the-loop) 단계는 높은 품질을 유지해 줍니다.
무료 JSON: Support Auto-Responder 워크플로우 다운로드 →
QA Chain vs 기타 n8n AI 노드
| 노드 | 최적의 용도 |
|---|---|
| Question and Answer Chain | 미리 구축된 문서 코퍼스 (corpus)로부터 근거 있는 답변 제공 |
| ... |
본인의 문서에 근거한 (grounded in your own documents) 답변이 필요한 경우에는 QA Chain을 사용하세요. 모델의 학습된 지식만으로도 충분하다면 Basic LLM Chain을 사용하면 됩니다.
빠른 참조 (Quick Reference)
노드: Question and Answer Chain
필수 하위 노드:
- Chat Model (필수)
...
무료 워크플로우 JSON 받기
위의 세 가지 패턴은 모두 Gumroad에서 제공되는 n8n Workflow Packs에 포함되어 있습니다. 한 번의 다운로드로 즉시 액세스할 수 있으며, JSON을 n8n 인스턴스에 붙여넣기만 하면 바로 시작할 수 있습니다.
이 내용이 유용했나요? 아래에 댓글을 남겨주세요. 특히 어떤 벡터 스토어 (vector store)를 사용하고 계시는지, 그리고 어떤 문서 코퍼스 (document corpus)를 기반으로 QA를 구축하고 계시는지 정말 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기