파이썬을 활용한 데이터 전처리
기존 처리 방식 검토
문서 처리 프로세스
•
문서 분할: 작은 청크로 나누기
•
벡터 저장: 분할된 청크를 벡터 스토어에 저장
•
질문 처리: 사용자 질문에 해당하는 문서만 추출
•
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 활용: 고급 봇 개발 도구 사용
•
통합 시스템: 전처리부터 봇까지 완전한 시스템