Skip to main content
Output 단계는 정리하고 청크로 나누고 강화한 데이터가 마지막으로 놓이는 곳입니다. 블록은 Vector, Blob, Action, DB Upsert 네 가지입니다. Output 블록이 하나도 없으면 실행 결과가 어디에도 남지 않으니, 정제라인마다 적어도 하나는 두세요.
Vector 블록 설정 — 백엔드, 컬렉션, 거리 척도를 정한다

Vector

청크를 임베딩과 함께 벡터 인덱스에 씁니다. 대부분 정제라인의 기본 목적지이고, Agent의 리트리벌이 여기서 검색합니다.
  • 백엔드 pgvector(기본값), Qdrant, Milvus, Weaviate
  • 컬렉션 / 테이블 기본 documents
  • 거리 척도 기본 코사인
상류에 Embed 블록을 두어 청크마다 벡터를 만들어 두어야 합니다.

Blob

원본 바이트를 그대로 보존합니다. Vector 옆에 나란히 두고, 검색은 벡터로 하되 인용할 때는 원본을 보여주는 구성에 씁니다.
  • Backend S3 호환 스토리지
  • Bucket / path 저장 위치
  • Encrypt at rest 저장 시 암호화

Action

레코드마다 외부 REST API에 HTTP POST/PUT을 보냅니다. 웹훅, Slack, 사내 시스템처럼 Nora 밖에서 결과를 받아 볼 곳이 있을 때 씁니다.
  • 엔드포인트 · 헤더 · 파라미터 Web / API 소스와 같은 방식이고 cURL에서 가져오기도 됩니다.

DB Upsert

레코드를 관계형 데이터베이스 테이블에 upsert 합니다. INSERT … ON CONFLICT(Postgres) 또는 ON DUPLICATE KEY(MySQL)로 동작해, 같은 실행을 다시 돌려도 중복 행이 생기지 않습니다.
  • DSN postgres://, mysql://, mariadb:// 스킴이 엔진을 결정합니다.
  • Table 식별자는 엔진에 맞게 인용 처리됩니다.
  • Conflict key(s) 쉼표로 구분한 컬럼들. Postgres는 ON CONFLICT (cols)를 쓰고, MySQL은 테이블의 UNIQUE INDEX에 기대므로 인덱스가 있어야 합니다.
  • On conflict 기본은 UPDATE(upsert)

목적지 나누기

Output 블록은 여럿 둘 수 있습니다. 이를테면 Vector와 Blob을 나란히 두어 검색용 인덱스와 인용용 원본을 함께 남기고, 조건에 따라 다른 목적지로 보내고 싶으면 상류에 Branch 블록을 두세요.