요약

역할 및 성과

IBM의 Client Engieering 팀에서 Technology Engineer Intern으로 LLM 모델을 사용해 다량의 자동차 관련 도메인 논문을 요약하고 제안해주는 챗봇 개발 프로젝트에 참여했습니다.

비동기를 적용해 데이터 전처리 파이프라인의 실행시간이 90% 감소되었고, 답변 정확도를 10% 올릴 수 있었습니다.

주요 역할로는 데이터 전처리를 담당했습니다. 데이터 정형화 및 임베딩, 벡터 db적재등의 데이터 파이프라인을 개발했습니다. Pdf 라이브러리와 OCR 엔진을 사용해 pdf논문들을 정형화하고, 레이크하우스에 적재 한 후, Langchain을 활용해 텍스트 임베딩 및 벡터DB에 정형화한 데이터를 저장했습니다.

고객과 직접 대면하며, 도면 작성 및 코드 모듈화 또한 담당했습니다. 비전문가 대상으로 기술적인 내용을 전달하기 위해 데이터 전처리와 답변 생성과정을 기술 설명과 함께 도면으로 작성해 전달했습니다. 또한, 코드를 모듈화하고 문서를 작성해, 작성한 코드의 사용 방법을 명확히 했습니다.

진행 과정 및 기능

LLM에 데이터를 활용하기 전에 데이터의 정확도가 중요하기 때문에, PDF에서 원하는 텍스트를 깔끔하게 추출하는 부분이 중요했습니다. 텍스트와 이미지, 표를 구분하고, 그 중 텍스트를 추출해 Intro, Body, Conclusion으로 나누어 적재했습니다. 문서의 메타데이터를 추출하고, 논문 사이트에서 제공한 메타데이터와 결합해, DB에 저장했습니다.

추출한 텍스트를 기반으로 주어진 항목에서 llm을 활용해 분류(classification)를 진행했습니다. 항목이 제대로 분류되는지 여러차례 테스트 후, 분류한 항목과 문서 데이터를 임베딩해 벡터 DB에 저장했습니다.

llm이 벡터 db를 기반으로 질문에 해당하는 텍스트들을 요약해 답변을 생성했습니다. 어플리케이션에서 기본적인 llm 파라메터와 가중치를 설정할 수 있도록 해, 고객이 직접 조정할 수 있도록 했습니다.

PDF 문서 전처리 단계 도면

Data Processing - IBM.png

Tech Stack

Python, LLM (llama2, granite 등), GCP, streamlit, Spark, Langchain

문제해결