홈 / n8n 워크플로 템플릿 / OpenAI 및 Qdrant를 사용한 자동화된 문서 임베딩 및 벡터 저장

OpenAI 및 Qdrant를 사용한 자동화된 문서 임베딩 및 벡터 저장

Qdrant Vector Database Embedding Pipeline

이 워크플로는 FTP를 통해 JSON 파일을 가져오고, 이를 문서로 변환하고, 텍스트를 청크로 분할하고, OpenAI 임베딩을 생성하고, 의미 검색을 위해 Qdrant 벡터 데이터베이스에 저장하는 프로세스를 자동화합니다.

수동 실행노드 9개AI·머신러닝AI벡터 데이터베이스데이터 처리

워크플로 소개

Qdrant 벡터 데이터베이스 임베딩 파이프라인: 종합 개요

**"Qdrant Vector Database Embedding Pipeline"**이라는 제목의 이 N8n 워크플로우 템플릿은 OpenAI의 임베딩을 사용하여 JSON 문서를 추출, 처리 및 벡터 데이터베이스(Qdrant)에 임베딩하는 프로세스를 자동화합니다. 이는 비정형 또는 반정형 텍스트 데이터를 검색 가능한 고차원 벡터로 변환해야 하는 의미론적 검색 애플리케이션을 위해 설계되었습니다.

이 파이프라인은 FTP를 통한 파일 처리, 문서 구문 분석, 텍스트 청킹, AI 기반 임베딩 생성 및 벡터 저장 기능을 n8n 자동화 플랫폼 내에서 오케스트레이션합니다. 이를 통해 조직은 최소한의 수동 개입으로 확장 가능한 검색 증강 생성(RAG) 시스템, 지식 기반 또는 지능형 검색 엔진을 구축할 수 있습니다.


워크플로우 기능

이 워크플로우는 엔드투엔드 데이터 수집 및 벡터화 파이프라인을 수행합니다.

  1. 지정된 디렉터리의 모든 .json 파일을 나열하기 위해 FTP 서버에 연결합니다.
  2. 각 파일을 이진 형식으로 반복적으로 다운로드합니다.
  3. JSON 콘텐츠를 LangChain 호환 문서 객체로 구문 분석합니다.
  4. 정의된 구분 기호("chunk_id")를 기반으로 텍스트 콘텐츠를 더 작은 청크로 분할합니다.
  5. OpenAI의 text-embedding-ada-002 모델을 사용하여 각 텍스트 청크에 대한 임베딩을 생성합니다.
  6. 임베딩된 청크(메타데이터 포함)를 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)에 맞게 수정하기 쉽습니다.

단계별 워크플로우 로직

  1. 트리거 실행

    • 워크플로우는 사용자가 "테스트 워크플로우"를 클릭하면 시작됩니다(수동 트리거).
    • 제어는 모든 파일 나열 노드로 전달됩니다.
  2. FTP에서 파일 목록 가져오기

    • FTP 노드는 서버에 연결하고 /Oracle/AI/embedding/svenska의 모든 파일을 나열합니다.
    • 파일 항목(이름, 크기, 날짜 등)의 배열을 출력합니다.
  3. 파일 하나씩 반복

    • 배치로 분할 노드는 반복마다 하나의 파일을 처리합니다.
    • 안정성을 보장하고 다운스트림 서비스의 과부하를 방지합니다.
  4. 현재 파일 다운로드

    • 다른 FTP 노드는 동적 경로를 사용하여 선택한 파일을 다운로드합니다.
      =Oracle/AI/embedding/svenska/{{ $json.name }}
    • 파일을 binary.data에 이진 데이터로 저장합니다.
  5. 이진 JSON을 문서로 구문 분석

    • 기본 데이터 로더는 이진 JSON을 읽고 LangChain Document 객체로 변환합니다.
    • 각 문서는 pageContent(텍스트)와 metadata를 포함합니다.
  6. 텍스트를 청크로 분할

    • 문자 텍스트 분할기는 "chunk_id"가 나타나는 곳마다 문서 텍스트를 분할합니다.
    • 의미론적 경계가 존중되도록 합니다(예: 섹션별 또는 레코드별 분할).
    • 균일한 벡터화를 위해 선택 사항이지만 권장됩니다.
  7. 임베딩 생성

    • 임베딩 OpenAI 노드는 각 텍스트 청크를 OpenAI API로 보냅니다.
    • 텍스트의 의미론적 의미를 나타내는 1536차원 벡터를 반환합니다.
  8. Qdrant에 벡터 저장

    • Qdrant 벡터 스토어 노드는 임베딩과 원본 문서를 모두 받습니다.
    • sv_lang_data 컬렉션에 삽입합니다.
    • 최적의 성능을 위해 배치 크기 100을 사용합니다.
    • Qdrant 컬렉션이 다음과 같이 사전 생성되었다고 가정합니다.
      {
        "vectors": {
          "size": 1536,
          "distance": "Cosine"
        }
      }
      
  9. 완료될 때까지 반복

    • 모든 파일이 처리될 때까지 루프가 계속됩니다.
    • 최종 출력은 모든 문서의 성공적인 인덱싱을 확인합니다.

이 워크플로우는 n8n이 코드를 작성하지 않고도 복잡한 AI/데이터 파이프라인을 오케스트레이션하는 방법을 보여주며, 파일 작업, 언어 모델 및 벡터 데이터베이스를 강력하고 프로덕션 준비가 된 솔루션으로 결합합니다.

사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.