{
  "name": "rag-ingest",
  "nodes": [
    {
      "name": "When clicking Execute workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [-320, 0],
      "parameters": {}
    },
    {
      "name": "Read handbook files",
      "type": "n8n-nodes-base.readWriteFile",
      "typeVersion": 1.1,
      "position": [-80, 0],
      "parameters": {
        "fileSelector": "/home/node/.n8n-files/docs/*.md",
        "options": {}
      }
    },
    {
      "name": "Postgres PGVector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePGVector",
      "typeVersion": 1.3,
      "position": [180, 0],
      "parameters": {
        "mode": "insert",
        "tableName": "docs",
        "embeddingBatchSize": 200,
        "options": {
          "columnNames": {
            "values": {
              "idColumnName": "id",
              "vectorColumnName": "embedding",
              "contentColumnName": "text",
              "metadataColumnName": "metadata"
            }
          }
        }
      },
      "credentials": {
        "postgres": {
          "id": "REPLACE_ME",
          "name": "Postgres (pgvector)"
        }
      }
    },
    {
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "typeVersion": 1.2,
      "position": [80, 240],
      "parameters": {
        "model": "text-embedding-3-small",
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "REPLACE_ME",
          "name": "OpenAI"
        }
      }
    },
    {
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "typeVersion": 1.1,
      "position": [280, 240],
      "parameters": {
        "dataType": "binary",
        "binaryMode": "allInputData",
        "loader": "textLoader",
        "textSplittingMode": "custom",
        "options": {}
      }
    },
    {
      "name": "Recursive Character Text Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "typeVersion": 1,
      "position": [300, 460],
      "parameters": {
        "chunkSize": 1000,
        "chunkOverlap": 200,
        "options": {}
      }
    }
  ],
  "connections": {
    "When clicking Execute workflow": {
      "main": [
        [
          {
            "node": "Read handbook files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read handbook files": {
      "main": [
        [
          {
            "node": "Postgres PGVector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Postgres PGVector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Postgres PGVector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}
