워크플로 소개
Qdrant 벡터 데이터베이스 임베딩 파이프라인: 종합 개요
**"Qdrant Vector Database Embedding Pipeline"**이라는 제목의 이 N8n 워크플로우 템플릿은 OpenAI의 임베딩을 사용하여 JSON 문서를 추출, 처리 및 벡터 데이터베이스(Qdrant)에 임베딩하는 프로세스를 자동화합니다. 이는 비정형 또는 반정형 텍스트 데이터를 검색 가능한 고차원 벡터로 변환해야 하는 의미론적 검색 애플리케이션을 위해 설계되었습니다.
이 파이프라인은 FTP를 통한 파일 처리, 문서 구문 분석, 텍스트 청킹, AI 기반 임베딩 생성 및 벡터 저장 기능을 n8n 자동화 플랫폼 내에서 오케스트레이션합니다. 이를 통해 조직은 최소한의 수동 개입으로 확장 가능한 검색 증강 생성(RAG) 시스템, 지식 기반 또는 지능형 검색 엔진을 구축할 수 있습니다.
워크플로우 기능
이 워크플로우는 엔드투엔드 데이터 수집 및 벡터화 파이프라인을 수행합니다.
- 지정된 디렉터리의 모든
.json파일을 나열하기 위해 FTP 서버에 연결합니다. - 각 파일을 이진 형식으로 반복적으로 다운로드합니다.
- JSON 콘텐츠를 LangChain 호환 문서 객체로 구문 분석합니다.
- 정의된 구분 기호(
"chunk_id")를 기반으로 텍스트 콘텐츠를 더 작은 청크로 분할합니다. - OpenAI의
text-embedding-ada-002모델을 사용하여 각 텍스트 청크에 대한 임베딩을 생성합니다. - 임베딩된 청크(메타데이터 포함)를
sv_lang_data라는 Qdrant 벡터 데이터베이스 컬렉션에 저장합니다.
스트리밍 및 배치 메커니즘을 활용하여 배치 처리를 지원하고 대규모 데이터셋의 효율적인 처리를 보장합니다.
주요 기능 및 역량
- 자동화된 파일 수집: FTP 노드를 사용하여 JSON 파일을 자동으로 검색하고 다운로드합니다.
- 확장 가능한 배치 처리:
Split In Batches노드를 사용하여 한 번에 하나의 파일을 처리하여 메모리 사용량 및 API 속도 제한을 제어할 수 있습니다. - 유연한 문서 구문 분석: Default Data Loader를 사용하여 이진 JSON 페이로드를 구조화된 LangChain 문서로 변환합니다.
- 구성 가능한 텍스트 청킹: 구분 기호로
"chunk_id"를 사용하여 문자 기반 분할을 적용하여 원본 데이터 구조와 일치하는 논리적 분할을 허용합니다. - OpenAI 기반 임베딩: OpenAI API와 안전하게 통합하여 의미론적 유사성에 최적화된 1536차원 임베딩을 생성합니다.
- Qdrant의 벡터 저장: 임베딩된 문서를 사전 구성된 Qdrant 컬렉션에 푸시하여 빠른 근사 최근접 이웃(ANN) 검색을 지원합니다.
- 메타데이터 보존: 변환 및 저장 중에 원본 파일의 관련 메타데이터를 유지합니다.
- 시각적 문서화: 각 단계를 설명하는 스티커 메모를 포함하여 가독성과 유지 관리성을 향상시킵니다.
주요 노드 및 목적
| 노드 이름 | 유형 | 목적 |
|---|---|---|
| '테스트 워크플로우' 클릭 시 | 수동 트리거 | 테스트 목적으로 워크플로우를 수동으로 시작합니다. |
| 모든 파일 나열 | FTP 노드 (목록 작업) | 원격 FTP 디렉터리 Oracle/AI/embedding/svenska의 모든 파일 목록을 검색합니다. |
| 항목 반복 | 배치로 분할 | 목록에서 한 번에 하나의 파일 항목을 처리하여 순차적이고 제어된 실행을 가능하게 합니다. |
| 항목 다운로드 | FTP 노드 (다운로드) | 현재 파일({{ $json.name }} 참조)을 이진 형식으로 다운로드하고 binary.data 아래에 저장합니다. |
| 기본 데이터 로더 | LangChain 문서 로더 | 다운로드된 이진 JSON 데이터를 후속 NLP 작업에 적합한 LangChain Document 객체로 변환합니다. |
| 문자 텍스트 분할기 | LangChain 텍스트 분할기 | "chunk_id"를 구분 기호로 사용하여 긴 텍스트를 더 작은 청크로 분할합니다. 임베딩 모델의 입력을 준비합니다. |
| 임베딩 OpenAI | LangChain 임베딩 노드 | OpenAI API를 호출하여 각 텍스트 청크에 대한 벡터 임베딩을 생성합니다 (text-embedding-ada-002 사용). |
| Qdrant 벡터 스토어 | LangChain 벡터 스토어 노드 | 생성된 임베딩을 관련 메타데이터와 함께 Qdrant의 sv_lang_data 컬렉션에 삽입합니다. |
추가적으로:
- 스티커 메모는 각 단계를 설명하는 인라인 문서를 제공합니다.
- Qdrant API 자격 증명("QdrantApi svenska") 및 OpenAI API 키는 저장된 자격 증명을 통해 안전하게 참조됩니다.
- FTP 계정은 목록 및 다운로드 작업을 위해 여러 노드에서 재사용됩니다.
사용 사례 및 이점
사용 사례
- 기업 지식 관리: 의미론적 검색을 위해 내부 문서, 지원 티켓 또는 교육 자료를 인덱싱합니다.
- 다국어 의미론적 검색: 스웨덴어 데이터를 구체적으로 대상으로 하므로( "svenska"에서 암시됨) 스칸디나비아 시장에 이상적입니다.
- 데이터 레이크 통합: FTP 서버의 JSON 형식으로 데이터를 저장하는 레거시 시스템에서 수집을 자동화합니다.
- RAG 파이프라인: 컨텍스트 기반을 요구하는 LLM 애플리케이션에 처리 및 임베딩된 콘텐츠를 공급합니다.
- 규정 준수 및 보관 시스템: 자연어 쿼리를 사용하여 보관된 기록을 빠르게 검색할 수 있도록 합니다.
이점
- 엔드투엔드 자동화: 데이터 준비 및 임베딩의 수동 단계를 제거합니다.
- 높은 정확도: 지능형 청킹을 통해 컨텍스트를 보존하고 최첨단 임베딩을 사용합니다.
- 효율적인 확장: 배치 처리는 과부하를 방지하여 수백 또는 수천 개의 파일에 이상적입니다.
- 안전한 자격 증명 처리: 모든 민감한 키(OpenAI, Qdrant, FTP)는 n8n의 암호화된 자격 증명 시스템을 통해 관리됩니다.
- 확장 가능한 디자인: 다른 언어, 임베딩 모델 또는 대체 벡터 데이터베이스(예: Pinecone, Weaviate)에 맞게 수정하기 쉽습니다.
단계별 워크플로우 로직
-
트리거 실행
- 워크플로우는 사용자가 "테스트 워크플로우"를 클릭하면 시작됩니다(수동 트리거).
- 제어는 모든 파일 나열 노드로 전달됩니다.
-
FTP에서 파일 목록 가져오기
- FTP 노드는 서버에 연결하고
/Oracle/AI/embedding/svenska의 모든 파일을 나열합니다. - 파일 항목(이름, 크기, 날짜 등)의 배열을 출력합니다.
- FTP 노드는 서버에 연결하고
-
파일 하나씩 반복
- 배치로 분할 노드는 반복마다 하나의 파일을 처리합니다.
- 안정성을 보장하고 다운스트림 서비스의 과부하를 방지합니다.
-
현재 파일 다운로드
- 다른 FTP 노드는 동적 경로를 사용하여 선택한 파일을 다운로드합니다.
=Oracle/AI/embedding/svenska/{{ $json.name }} - 파일을
binary.data에 이진 데이터로 저장합니다.
- 다른 FTP 노드는 동적 경로를 사용하여 선택한 파일을 다운로드합니다.
-
이진 JSON을 문서로 구문 분석
- 기본 데이터 로더는 이진 JSON을 읽고 LangChain
Document객체로 변환합니다. - 각 문서는
pageContent(텍스트)와metadata를 포함합니다.
- 기본 데이터 로더는 이진 JSON을 읽고 LangChain
-
텍스트를 청크로 분할
- 문자 텍스트 분할기는
"chunk_id"가 나타나는 곳마다 문서 텍스트를 분할합니다. - 의미론적 경계가 존중되도록 합니다(예: 섹션별 또는 레코드별 분할).
- 균일한 벡터화를 위해 선택 사항이지만 권장됩니다.
- 문자 텍스트 분할기는
-
임베딩 생성
- 임베딩 OpenAI 노드는 각 텍스트 청크를 OpenAI API로 보냅니다.
- 텍스트의 의미론적 의미를 나타내는 1536차원 벡터를 반환합니다.
-
Qdrant에 벡터 저장
- Qdrant 벡터 스토어 노드는 임베딩과 원본 문서를 모두 받습니다.
sv_lang_data컬렉션에 삽입합니다.- 최적의 성능을 위해 배치 크기 100을 사용합니다.
- Qdrant 컬렉션이 다음과 같이 사전 생성되었다고 가정합니다.
{ "vectors": { "size": 1536, "distance": "Cosine" } }
-
완료될 때까지 반복
- 모든 파일이 처리될 때까지 루프가 계속됩니다.
- 최종 출력은 모든 문서의 성공적인 인덱싱을 확인합니다.
이 워크플로우는 n8n이 코드를 작성하지 않고도 복잡한 AI/데이터 파이프라인을 오케스트레이션하는 방법을 보여주며, 파일 작업, 언어 모델 및 벡터 데이터베이스를 강력하고 프로덕션 준비가 된 솔루션으로 결합합니다.
사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.