← 노드 한 장 전체#55 · Question and Answer Chain

Question and Answer Chain

규칙 문서를 찾아서 답하게 하기

이 글은 이런 분께AI가 직접 제공한 문서를 검색하고 그 근거로 답하게 하는 흐름을 실제 입력·검색·답변으로 확인하고 싶은 분
Question and Answer Chain 영상 표지

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요

JSON 받기

규칙 문서를 찾아서 답하게 하기.

노드 한 장 #55 · Question and Answer Chain

먼저 결과부터

RAG는 문서를 검색해 그 내용을 모델에게 주고 답하게 하는 방식이에요. 직접 쓴 가상 환불 규칙 1문서를 독립 벡터 키에 넣었고, 실제 lookup은 1문서·각 질문의 검색도 1문서였어요. 두 모델 입력 모두 검색 원문을 포함했고 환불 질문에는 샘플 규칙의 ‘3영업일’, 회원 적립률 질문에는 문서에서 확인 불가라고 답했어요. 두 번째도 문서는 검색됐지만 그 안에 답이 없었어요. 샘플 문서·실제 AI 출력이며 정답 보장이나 영구 보존 검증은 아니에요. 실행 #74857.
우리가 실제로 돌린 기록 · 실행 #74857 · 2026-10-30

따라 하기

실제로 실행한 워크플로우를 바탕으로 정리했어요. 계정·식별자는 공개용 값으로 치환했고, 그 밖의 차이는 아래 주의사항에 표시했어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 다운로드 JSON의 설정값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.

Step 1. Manual Trigger 노드 추가이름: Run manually

설정 없이 그대로 추가해요.

Step 2. Code 노드 추가이름: Self-written sample policy

JavaScript
return [{json:{sample:true,source:"SELF_WRITTEN_SAMPLE_RULES",policy:"가상 별빛상점 실습용 규칙입니다. 이 문서는 직접 작성한 샘플이며 실제 회사나 고객 정책이 아닙니다.\n환불 접수는 상품 수령일로부터 3영업일 안에 해야 합니다.\n포장 파손 문의에는 사진 한 장과 샘플 주문 코드가 필요합니다."}}];

Step 3. Simple Vector Store 노드 추가이름: Insert only own sample vector

Operation ModeInsert Documents
Memory KeyTEST_QA_VECTOR_KEY
Clear Store켜짐

Step 4. Embeddings OpenAI 노드 추가이름: Embeddings OpenAI

Modeltext-embedding-3-small

Step 5. Default Data Loader 노드 추가이름: Default Data Loader

Type of DataJSON
ModeLoad Specific Data
Data{{ $json.policy }}
Text SplittingSimple
Options › Metadata › Fields to Set › Namesource
Options › Metadata › Fields to Set › ValueSELF_WRITTEN_SAMPLE_RULES

Step 6. Simple Vector Store 노드 추가이름: Direct lookup evidence

Operation ModeGet Many
Memory KeyTEST_QA_VECTOR_KEY
Prompt환불 접수 기한
Limit5
Include Metadata켜짐

Step 7. Code 노드 추가이름: Prepare sample questions

JavaScript
return [{json:{sample:true,case:"document_answer",question:"물건을 받은 뒤 며칠 안에 환불 신청을 넣어야 하나요?"}},{json:{sample:true,case:"not_in_document",question:"회원 등급별 적립률은 몇 퍼센트인가요?"}}];

Step 8. Question and Answer Chain 노드 추가이름: Question and Answer Chain

Source for Prompt (User Message)Define below
Prompt (User Message){{ $json.question }}
Options › System Prompt Template
당신은 가상 규칙 문서 실습의 질의응답 도우미입니다. 다음 검색된 문서 내용만 근거로 질문에 한국어로 답하세요. 문서에 답이 없으면 추측하거나 상식으로 보충하지 말고 "제공된 샘플 문서에서는 확인할 수 없습니다."라고만 답하세요. 답에 근거가 있으면 짧게 설명하고 샘플 문서 기준이라고 명시하세요.
검색된 문서:
{context}
Options › Batch Processing › Batch Size1

Step 9. OpenAI Chat Model 노드 추가이름: OpenAI Chat Model

Modelgpt-4.1-mini
Use Responses API꺼짐
Options › Sampling Temperature0
Options › Maximum Number of Tokens200

Step 10. Vector Store Retriever 노드 추가이름: Vector Store Retriever

Limit1

Step 11. Code 노드 추가이름: Show sample AI answers

JavaScript
return $input.all().map((i,n)=>({json:{sample:true,question:$('Prepare sample questions').all()[n].json.question,answer:i.json.response??i.json.text??i.json.output??JSON.stringify(i.json),note:'직접 쓴 가상 규칙 · 실제 AI 출력'}}));

Step 12. Simple Vector Store 노드 추가이름: Retrieve own sample vector

Operation ModeRetrieve Documents (As Vector Store for Chain/Tool)
Memory KeyTEST_QA_VECTOR_KEY

가져와서 쓸 때 확인할 것

노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.