> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Source 블록

> 클라우드 드라이브, 데이터베이스, API, 파일에서 원시 데이터를 끌어옵니다

**Source** 단계는 파이프라인이 바깥 세계에 처음 닿는 곳입니다. Source 블록이 원시 항목(파일, 레코드, 메시지)을 파이프라인으로 내보내면, 다음 단계들이 그걸 가지고 일합니다.

<Frame>
  <img src="https://mintcdn.com/conscience-technology/Jo24V8Wx9hATIxJq/images/docs/foundry-ingest-inspector.png?fit=max&auto=format&n=Jo24V8Wx9hATIxJq&q=85&s=b51dcefa08e712194b94acc1aa7fe7b0" width="400" alt="Source 블록 설정 — 라이브러리 폴더를 가리키고 파일을 올린다" data-path="images/docs/foundry-ingest-inspector.png" />
</Frame>

## Source 블록 종류

### 클라우드 폴더

연결한 클라우드 드라이브(Google Drive, OneDrive, S3 호환)에서 파일을 끌어옵니다.

* **Folder** 연결한 계정에서 고릅니다.
* **Recurse** 하위 폴더 포함. 기본 켜짐.
* **File types** `.pdf`, `.docx`, `.md`, `.csv` 등으로 제한합니다. 처리 못 하는 바이너리는 건너뜁니다.
* **Since**이 시각 뒤에 고친 파일만. 런 페이로드 시각과 엮어 증분 파이프라인을 만듭니다.

파일마다 항목 하나를 내보냅니다. `content`(바이트), `path`, `mime_type`, `modified_at`, `source_id`(이름을 바꿔도 안 변합니다)를 담습니다.

### 문서 스토어

이미 있는 Nora 문서 컬렉션에서 끌어옵니다. 다른 파이프라인이 이미 골라 둔 데이터 위에 하류 파이프라인을 얹을 때 좋습니다.

### 데이터베이스 쿼리

연결한 Postgres/MySQL/SQL Server에 SQL 쿼리를 돌려 행을 스트리밍합니다.

* **Query** 파라미터를 쓰는 SQL. 런 페이로드는 `:key`로 참조합니다.
* **Batch size** 내보내는 항목마다 담는 행 수. 배치가 크면 효율적이고, 작으면 하류 단계가 병렬로 잘 돕니다.

행마다 하나씩(배치가 1보다 크면 배치마다 하나씩) 내보냅니다.

### HTTP fetch

커스텀 HTTP GET/POST 입니다. 응답 본문을 내보냅니다.

이렇게 정합니다.

* URL(런 페이로드로 템플릿을 쓸 수 있습니다).
* Method, headers, body.
* **Follow pagination** 멈출 조건까지 자동으로 돕니다. 커서 파라미터, 페이지 수, 또는 "빈 응답까지".

### 웹훅 페이로드

Webhook 트리거의 페이로드를 소스로 씁니다. 바깥 호출이 없습니다. 페이로드가 이미 메모리에 있으니까요.

### 수동 업로드

파이프라인을 수동으로 돌릴 때 파일을 올릴 수 있게 해 주는 빈 Source 입니다. 테스트에 좋습니다.

## 멱등성과 중복 제거

내보낸 항목마다 안정된 **콘텐츠 해시**가 붙습니다. 같은 소스를 나중에 다시 돌리면 해시를 다시 계산해, 안 바뀐 항목은 처음부터 끝까지 건너뜁니다.

그래서 큰 폴더를 스케줄로 파운더리 실행해도 쌉니다. 바뀐 것만 건드리니까요.

파이프라인 하류가 바뀌었으면 \*\*Run → Rerun (ignore cache)\*\*로 전체를 다시 처리하도록 강제할 수 있습니다.

## 변경 감지

Watch 트리거에서는 소스 항목이 사라지면 Source 블록이 **삭제 이벤트**도 내보냅니다. 하류 단계가 삭제를 다뤄야 합니다. 새 청크가 아니라 Output 단계에 supersede를 밀어 넣는 방식이 흔합니다. [Supersede](/ko/build/knowledge/supersede)를 참고하세요.

## 제한

* **Max items per run** 기본 5만. 더 크면 날짜 범위로 쪼갭니다.
* **Max total bytes** 기본 5 GB. Enterprise 플랜에서 올립니다.
* **Per-item byte cap** 파일당 기본 100 MB. 더 크면 건너뛰고 로그에 남깁니다.
