Code Docs
Merge Inputs Node (입력값 통합 노드)
Data flow node (데이터 플로우 노드) 그룹
개요
Merge Inputs 노드는 여러 입력 소스를 하나의 출력 스트림으로 통합하는 기능을 제공합니다. 다양한 데이터 타입과 통합 모드를 지원하여, 그래프 내에서 데이터 흐름을 유연하게 제어할 수 있습니다. 이 노드는 특히 반복 처리 과정에서 데이터를 통합하거나, 여러 소스의 데이터를 하나로 결합해야 할 때 매우 유용하게 사용됩니다.
데이터 플로우 히스토리
플로우 그래프가 실행되는 동안 각 노드의 출력 커넥터는 그 출력 값과 해당 값이 생성된 단계 번호의 기록을 유지합니다.
루프나 사이클이 없는 플로우 그래프에서는 모든 기록이 단일 값으로 구성되지만, 순환 플로우에서는 각 출력과 이를 연결하는 데이터 흐름 라인이 여러 값을 가질 수 있습니다. 일반적인 처리 과정에서 대부분의 노드에 연결된 입력은 출처 노드가 생성한 가장 최신 값을 사용합니다.
일부 노드는 입력에 대한 과거 기록을 활용하는데, 예를 들어 Call LLM 노드는 이 기록을 사용하여 호출된 LLM에 대한 대화의 과거 기록을 포함하는 복합적인 프롬프트를 구축합니다.
Merge Inputs 노드는 다음의 세 가지 고유한 결합 모드를 통해 히스토리를 효과적으로 제어할 수 있도록 해줍니다:
-
최신 항목만 사용 (기본값):
이전 히스토리는 모두 제거하고, 입력 포트 중 하나에서 전달된 가장 최근 값만 출력합니다.
과거 기록은 무시하고 최신 데이터만 필요할 때 유용합니다.
-
히스토리 순차 결합 (Interleave history):
모든 입력의 히스토리를 실행 순서(step number)에 따라 시간순으로 결합합니다.
입력 간의 전체 타임라인을 보존하므로, 원래 순서를 유지하는 시퀀스 생성에 적합합니다.
-
히스토리 병합 (Merge history):
모든 입력 히스토리의 값을 하나의 통합된 값으로 결합합니다. 결합 방식은 데이터 타입에 따라 다릅니다:
- Text: 값들을 줄바꿈(newline)으로 이어 붙입니다.
- Numbers: 병합을 지원하지 않으며, 오류가 발생합니다.
- Content / Segments / Embeddings: 개별 항목들을 하나의 선택 가능한 세트로 결합합니다.
- Knowledge: 지식 세그먼트를 하나의 지식 값으로 통합하며, 가능한 경우 순위를 유지합니다.
사용 가이드라인
- 데이터 타입 선택
- 워크플로우에 적합한 데이터 타입을 선택하세요
- 모든 입력은 선택한 타입과 호환되어야 합니다
- 올바른 연결을 위해 입력을 연결하기 전에 설정하는 것이 좋습니다
- 결합 모드 설정
- Most-recent: 최신 값만 중요할 때 사용
- Interleave history: 시간 순서를 유지해야 할 때 사용
- Merge history: 데이터를 집계하거나 결합할 때 사용
- 히스토리 범위 제어
- Interleave 또는 Merge history 모드 사용 시, 얼마나 이전 히스토리까지 포함할지 지정할 수 있습니다
- 전체 히스토리를 포함하려면 "all", 최근 항목만 포함하려면 숫자를 입력하세요
- 입력 관리
- 필요한 입력 수를 설정하세요 (2~20개 지원)
- 각 입력 포트에 소스를 연결하세요
- 모든 입력은 선택 사항이며, 일부만 연결되어도 노드는 정상 작동합니다
워크플로우 패턴
-
기본 결합 플로우
입력 1 → Merge Inputs → 결합된 출력.
입력 2 ↗
-
대화 히스토리 관리
사용자 입력 → Merge Inputs → 전체 히스토리.
LLM 응답 ↗ (Interleave)
-
데이터 집계
데이터 소스 1 → Merge Inputs → 집계된 데이터.
데이터 소스 2 ↗ (Merge)
-
모드 예시
// Most-recent 모드
입력 1: [A(step 1), B(step 3)]
입력 2: [C(step 2), D(step 4)]
출력: [D(step 4)] // 가장 최신 값인 D만 유지됨.
// Interleave history 모드
입력 1: [A(step 1), B(step 3)]
입력 2: [C(step 2), D(step 4)]
출력: [A(step 1), C(step 2), B(step 3), D(step 4)] // 시간 순서대로 정렬됨.
// Merge history 모드 (텍스트 기준)
입력 1: [A(step 1), B(step 3)]
입력 2: [C(step 2), D(step 4)]
출력: ["A\\nC\\nB\\nD"] // 모든 값이 줄바꿈으로 이어붙여짐.
주요 특징
- 텍스트, 숫자, 콘텐츠, 세그먼트, 임베딩, 지식 등 다양한 입력 데이터 타입을 처리합니다.
- 서로 다른 히스토리 처리 방식에 대응하는 세 가지 유연한 결합 모드를 지원합니다.
- 세밀한 제어를 위한 히스토리 범위 설정이 가능합니다.
- 입력 포트를 동적으로 생성할 수 있으며, 2개부터 최대 20개까지 지원합니다.
- 노드 화면에서 결합된 결과를 시각적으로 확인할 수 있습니다.
이럴 때 사용하세요
- 여러 데이터 소스를 하나로 모아야 할 때
- 챗봇에서 대화 히스토리를 정리해 이어가고 싶을 때
- 병렬로 처리된 데이터를 한데 모아야 할 때
- 다양한 소스로부터 콘텐츠를 수집해 하나로 정리하고자 할 때
- 반복 처리나 루프 기반 플로우를 구성할 때
- 여러 입력을 시간 순서대로 섞어 하나의 시퀀스를 만들고 싶을 때
이렇게 사용하세요
- 워크플로우에 맞는 적절한 데이터 타입을 선택하세요.
- 사용 사례에 가장 적합한 결합 모드를 신중하게 고려하세요:
- Most-recent: 최신 데이터만 중요할 때.
- Interleave history: 순서와 타이밍이 중요할 때.
- Merge history: 데이터를 결합하거나 집계해야 할 때.
- 대용량 히스토리를 다룰 경우, 히스토리 범위 설정을 통해 최근 데이터만 처리하도록 제한하세요.
- 숫자(Number) 타입은 Merge history 모드를 사용할 수 없습니다.
- 텍스트(Text) 결합 시, 줄바꿈 외의 구분자를 원한다면 사전에 텍스트를 전처리하는 것이 좋습니다.
- 반복(loop) 내에서 사용할 경우, 반복될수록 히스토리가 누적된다는 점에 유의하세요.
구현 세부사항
- 입력 포트는
mergeable: true로 설정되어 여러 연결을 지원합니다.
- 히스토리 범위 제한은 Interleave 및 Merge history 모드 모두에 적용됩니다.
- Most-recent 모드에서는 노드가 기존 출력 히스토리를 지웁니다.
- Merge history 모드의 동작 방식은 다음과 같습니다:
- 텍스트(Text): 모든 값을 줄바꿈으로 이어붙입니다.
- 콘텐츠/세그먼트/임베딩: ID 목록을 이어붙입니다.
- 지식(Knowledge): 지식 세그먼트 목록을 병합합니다.
- Interleave history 모드는 각 값들을 원래 step 인덱스에 따라 세션 히스토리에 직접 기록하는 방식으로 작동합니다.
- 노드는 DataValue 클래스 시스템을 사용하여 타입 변환과 유효성 검사를 처리합니다.
파라미터
| --- | --- | --- | --- |
입력 형식
| --- | --- | --- |
연결 가능한 출력 형식
| --- | --- | --- |