{
 "name": "[노드 한 장] Default Data Loader · CSV 한 파일에서 문서 객체 읽기",
 "nodes": [
  {
   "id": "m",
   "name": "Run manually",
   "type": "n8n-nodes-base.manualTrigger",
   "typeVersion": 1,
   "position": [
    0,
    0
   ],
   "parameters": {}
  },
  {
   "id": "p",
   "name": "Prepare one sample CSV",
   "type": "n8n-nodes-base.code",
   "typeVersion": 2,
   "position": [
    220,
    0
   ],
   "parameters": {
    "jsCode": "// Directly authored educational samples; no actual company/customer data\nconst 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}}];"
   }
  },
  {
   "id": "i",
   "name": "Insert only loader test documents",
   "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
   "typeVersion": 1.3,
   "position": [
    440,
    0
   ],
   "parameters": {
    "mode": "insert",
    "memoryKey": {
     "__rl": true,
     "mode": "id",
     "value": "TEST_LOADER_STORE"
    },
    "clearStore": false
   }
  },
  {
   "id": "v",
   "name": "Verify documents against CSV rows",
   "type": "n8n-nodes-base.code",
   "typeVersion": 2,
   "position": [
    660,
    0
   ],
   "parameters": {
    "jsCode": "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}}];"
   }
  },
  {
   "id": "d",
   "name": "Default Data Loader",
   "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
   "typeVersion": 1.1,
   "position": [
    440,
    240
   ],
   "parameters": {
    "dataType": "binary",
    "binaryMode": "specificField",
    "binaryDataKey": "data",
    "loader": "csvLoader",
    "textSplittingMode": "simple",
    "options": {
     "separator": ",",
     "column": "text",
     "metadata": {
      "metadataValues": [
       {
        "name": "sampleFile",
        "value": "sample-loader.csv"
       },
       {
        "name": "sample",
        "value": "true"
       }
      ]
     }
    }
   }
  },
  {
   "id": "e",
   "name": "Embeddings OpenAI",
   "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
   "typeVersion": 1.2,
   "position": [
    620,
    240
   ],
   "parameters": {
    "model": "text-embedding-3-small",
    "options": {}
   }
  }
 ],
 "connections": {
  "Run manually": {
   "main": [
    [
     {
      "node": "Prepare one sample CSV",
      "type": "main",
      "index": 0
     }
    ]
   ]
  },
  "Prepare one sample CSV": {
   "main": [
    [
     {
      "node": "Insert only loader test documents",
      "type": "main",
      "index": 0
     }
    ]
   ]
  },
  "Insert only loader test documents": {
   "main": [
    [
     {
      "node": "Verify documents against CSV rows",
      "type": "main",
      "index": 0
     }
    ]
   ]
  },
  "Default Data Loader": {
   "ai_document": [
    [
     {
      "node": "Insert only loader test documents",
      "type": "ai_document",
      "index": 0
     }
    ]
   ]
  },
  "Embeddings OpenAI": {
   "ai_embedding": [
    [
     {
      "node": "Insert only loader test documents",
      "type": "ai_embedding",
      "index": 0
     }
    ]
   ]
  }
 },
 "settings": {
  "executionOrder": "v1",
  "timezone": "Asia/Seoul"
 },
 "meta": {
  "templateCredsSetupCompleted": false,
  "source": "datapopcorn.ai/workflow/nodes"
 }
}