← 노드 한 장 전체#60 · Default Data Loader

Default Data Loader

CSV 한 파일에서 본문과 출처까지 Document로 읽기

이 글은 이런 분께파일 하나가 어떻게 본문과 출처 정보를 가진 문서 객체로 읽히는지 알고 싶은 분
Default Data Loader 영상 표지

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

JSON 받기

Document 객체는 본문(pageContent)과 출처 등의 정보(metadata)를 함께 담습니다. 파일 자체와는 다른 개념이에요.

직접 쓴 교육용 CSV 파일 하나를 Default Data Loader로 읽어 봤어요. 실제 회사 자료나 고객 정보가 아닙니다. 헤더 1행과 서로 다른 데이터 3행으로 구성했습니다.

먼저 결과부터

Document는 본문(pageContent)과 출처 등의 정보(metadata)를 함께 가진 객체입니다. 직접 쓴 CSV 1파일(헤더 1행·데이터 3행)을 Binary/CSV, CSV Column=text로 읽었고 실제 로더 문서 3개·저장 청크 3개가 나왔습니다. 세 pageContent 전체가 원본 행과 일치하고 서로 달라 첫 문서 복제가 아님을 확인했어요. sampleFile 메타데이터는 직접 추가한 표시이며 metadata.line을 CSV 물리 행 번호로 단정하면 안 됩니다. Loader는 문서를 읽고 Embeddings는 숫자 표현을 만들며 부모 저장소가 저장을 연결합니다. 임베딩 노드 1회·채팅 모델 0회, 로더 7ms였습니다. 실제 회사 자료가 아닌 샘플이고, 다른 형식·분할 설정에서도 같은 개수가 나온다는 보장은 아닙니다. (실제 실행 #74878)
우리가 실제로 돌린 기록 · 실행 #74878 · 2026-10-30
Default Data Loader 실제 n8n 화면 1
우리가 실제로 돌린 n8n 화면 (실행 #74878, 2026-10-30)
Default Data Loader 실제 n8n 화면 2
우리가 실제로 돌린 n8n 화면 (실행 #74878, 2026-10-30)

따라 하기

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

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

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

Step 2. Code 노드 추가이름: Prepare one sample CSV

JavaScript
// Directly authored educational samples; no actual company/customer data
const csv="sample_id,text\nR1,교육용 샘플입니다. 회의실은 사용 뒤 조명을 끕니다.\nR2,교육용 샘플입니다. 공용 태블릿은 반납 전 화면을 닦습니다.\nR3,교육용 샘플입니다. 인쇄물은 분리수거함에 넣습니다.\n";const data=await this.helpers.prepareBinaryData(Buffer.from(csv,"utf8"),"sample-loader.csv","text/csv");return [{json:{sample:true,fileCount:1,dataRows:3,headerRows:1},binary:{data}}];

Step 3. Simple Vector Store 노드 추가이름: Insert only loader test documents

Operation ModeInsert Documents
Memory KeyTEST_LOADER_STORE
Clear Store꺼짐

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

Type of DataBinary
ModeLoad Specific Data
Input Data Field Namedata
Data FormatCSV
Text SplittingSimple
Options › CSV Separator,
Options › CSV Columntext
Fields to Set 1 › NamesampleFile
Fields to Set 1 › Valuesample-loader.csv
Fields to Set 2 › Namesample
Fields to Set 2 › Valuetrue

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

Modeltext-embedding-3-small

Step 6. Code 노드 추가이름: Verify documents against CSV rows

JavaScript
const expected=["교육용 샘플입니다. 회의실은 사용 뒤 조명을 끕니다.","교육용 샘플입니다. 공용 태블릿은 반납 전 화면을 닦습니다.","교육용 샘플입니다. 인쇄물은 분리수거함에 넣습니다."];const docs=$input.all().map(i=>i.json);return [{json:{sample:true,sourceFiles:1,headerRows:1,sourceDataRows:3,registeredDocuments:docs.length,uniquePageContents:new Set(docs.map(d=>d.pageContent)).size,allRowsPresent:expected.every(t=>docs.some(d=>d.pageContent===t)),allContentMatches:docs.every(d=>expected.includes(d.pageContent)),allHaveMetadata:docs.every(d=>d.metadata&&Object.keys(d.metadata).length>0),documents:docs}}];

가져와서 쓸 때 확인할 것

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