Search

14. 파이썬을 활용한 데이터 전처리

섹션
5. Agent: 사내 QnA 봇

파이썬을 활용한 데이터 전처리

기존 처리 방식 검토

문서 처리 프로세스

문서 분할: 작은 청크로 나누기
벡터 저장: 분할된 청크를 벡터 스토어에 저장
질문 처리: 사용자 질문에 해당하는 문서만 추출
AI 답변: 필요한 부분만 전달하여 답변 생성

효율성 고려사항

토큰 비용 절약: 전체 문서 대신 필요 부분만 전달
처리 속도 향상: 토큰 수 감소로 딥러닝 모델 계산 시간 단축

테이블 처리의 문제점과 해결책

N8n 텍스트 분할의 한계

컨텍스트 손실: 행과 열이 잘려 내용 의미 파악 어려움
테이블 구조 파괴: 표 형태 데이터의 관계성 정보 손실

Markdown vs HTML 선택

Markdown 선택 이유 (권장)

토큰 효율성: 텍스트 기반으로 토큰 사용량 적음
식별자 최소화: 하나의 식별자로 구조 표현

HTML의 단점

토큰 과다 사용: TR, TD 등 태그로 인한 토큰 증가
Merge Cell 지원: 일부 장점 있으나 전체적으로 비효율

py-zerox 라이브러리 활용

라이브러리 특징 및 장점

테이블 인식: 테이블 구조 인식에 특히 강점
사용 편의성: PIP install로 간단한 설치
Python 지원: 다양한 Python 환경에서 활용 가능

설치 및 환경 설정

Windows 사용자: Poppler 별도 설치 필요
기존 강의 경험: py-zerox 활용한 PDF to Markdown 변환

PDF to Markdown 변환 과정

멀티모달 LLM 활용

GPT-4o-2024-11-20: 테이블 파싱 성능 우수
다양한 모델 지원: Claude, Azure OpenAI, Gemini, Bedrock 등
시스템 프롬프트: 큰 영향 없어 기본 설정 사용

변환 코드 구현

기본 설정

환경변수 호출: OpenAI API 키 등
파일 경로: PDF 파일 위치 지정
출력 디렉토리: MD 파일 저장 위치

파일명 처리

영어 변환: ChatGPT로 파일명을 영어로 변경
인코딩 문제: 한글 파일명으로 인한 오류 방지

실행 시 주의사항

Event Loop 오류: Jupyter 커널에서 asyncio 직접 실행 시 오류
추가 작업 필요: 특별한 처리 코드 필요
UV 패키지: 패키지 사용으로 문제 해결 가능

Markdown Header Splitter 활용

새로운 분할 방식

Markdown Header Splitter: 헤더 기반 문서 분할
계층적 구조: # ## ### 헤더 구조 활용
컨텍스트 보존: 상위 헤더 정보를 하위에 포함

계층적 데이터 구조

헤더 레벨 정의

1단계 (title): 문서 제목
2단계 (chapter): 장
3단계 (section): 절

메타데이터 중첩

계층 정보: title, chapter, section 정보 포함
컨텍스트 제공: 상위 정보를 하위에 전달
검색 성능: 더 나은 검색 결과

메타데이터 파일명 저장

파일명 포함의 장점

문서 구분: 동일 내용이 여러 문서에 있을 때 구분
실무 경험: 산림청과 환경부의 다른 해석 사례
전문성 활용: 담당자는 어떤 문서를 봐야 할지 앎

검색 최적화

문서별 분할: 전체 검색 대신 문서별 검색
성능 향상: 필요한 문서만 검색하여 성능 개선
프롬프트 활용: 실제 사람처럼 특정 문서 지정

Pinecone 업로드 및 연동

인덱스 생성

Pinecone 대시보드: 새 인덱스 생성
화면 변경: A-B 테스트로 인한 UI 변화
기본 옵션: Pinecone 제공 모델 사용에서 변경

API 통합

동일 API: N8n과 Python이 같은 API 사용
상호 호환: Python 처리 데이터를 N8n에서 활용
인덱스명 복사: 생성된 인덱스명으로 연결

데이터 업로드 실행

텍스트 처리: 분할된 텍스트 데이터 업로드
업로드 확인: 데이터 정상 업로드 검증
Retriever 활용: N8n 클래스의 asRetriever 메소드
Invoke 메소드: N8n의 runnable 특성 활용

다음 단계: LangGraph 활용

봇 개발 방향

데이터 업로드 완료: 전처리된 데이터 준비 완료
LangGraph 활용: 고급 봇 개발 도구 사용
통합 시스템: 전처리부터 봇까지 완전한 시스템