카테고리 없음

멀티모달 챗봇 프로젝트 - OCR 이슈와 새로운 방향

깜포메 2024. 10. 7. 13:48

이전에 진행한 3.2 LLaMA 모델을 활용한 멀티모달 챗봇 프로젝트는 이미지의 OCR(광학 문자 인식) 인식 문제로 인해 잠시 보류하게 되었다. 따라서 이번 포스팅에서는 그 이유와 다음으로 진행할 연차 관리 챗봇 프로젝트에 대해 자세히 이야기해보려 한다.

 

🚧 멀티모달 챗봇과 OCR 문제

멀티모달 기능을 활용한 챗봇에서 중요한 역할을 담당하는 OCR 기술이 기대만큼의 성과를 내지 못했다. 특히 한글 텍스트 인식 시 문제가 발생했는데, 폰트 크기가 작거나 화질이 낮은 이미지에서는 텍스트를 제대로 인식하지 못하는 이슈가 있었다.

"특정 표나 이미지에 있는 텍스트를 100% 정확도로 인식하지 못한다면, 서비스로 제공하기엔 어려움이 큽니다."

이미지 전처리로 어느 정도 정확도를 개선할 수 있지만, 완벽한 정확도를 보장하지 못하는 한 상용화하기는 어렵다고 판단하여 해당 프로젝트를 보류하기로 결정했다.

 

📅 연차 관리 챗봇 프로젝트 기획

새롭게 진행할 프로젝트는 LLM 모델을 활용한 연차 관리 자동화이다. 이번 프로젝트는 연차를 신청, 변경, 취소하는 과정을 자동화하는 파이프라인을 구성하는 것을 목표로 한다.

이 과정에서 테디노트의 RAG 비법노트: Langchain 강의를 참고하였으며, 크게 8단계로 나누어 기획하였다.

각 단계에 대한 자세한 설명은 다음과 같다.


1. 문서 로드

RAG에 사용될 문서를 로드하는 과정이다. 연차 신청과 관련된 정보를 템플릿 형태로 제공할 예정이다. 기본적으로 PDF-Loader를 사용할 계획이지만, 필요에 따라 다른 파일 형식도 고려하고 있다. 나중에는 야근 식대 신청, 출장 신청 같은 다양한 템플릿도 추가할 수 있도록 확장성을 고려하고 있다.

 

2. 텍스트 스플릿

템플릿은 문단 단위로 구분하고, CharacterTextSplitter를 사용하여 처리할 예정이다. 템플릿 간 길이가 비슷하다고 가정하고 있지만, 추후 차이가 발생하면 SemanticChunker를 도입할 계획이다.

3, 임베딩

복잡한 임베딩 과정은 없을 예정이며, OpenAIEmbeddings를 사용해 속도와 효율성을 중시할 예정이다. 이 때, 임베딩되는 문서는 정해져 있으므로 캐시형태로 저장하여 재사용할 것이다.

4. 벡터 DB

벡터 DB는 일반적인 로컬 환경에서 Chroma를 사용할 예정이다. 또한 사용자별로 멀티턴 대화 데이터를 관리할 수 있는 SQLChatMessageHistory를 활용할 계획이다. 이를 통해 연차 신청 시 필요한 정보를 한 번만 입력하면 이후에는 자동으로 기입될 수 있도록 할 예정이다.

5. 검색(Retriever)

LLM 모델을 통해 연차 신청을 관리할 때 MultiQueryRetriever를 사용해 다양한 사용자 요청을 처리할 수 있도록 할 계획이다. 예를 들어 "연차 쓰고 싶어" 같은 요청을 다양한 표현으로 처리할 수 있도록 쿼리를 자동 생성할 예정이다.

예: "연차 쓰고 싶어" → "연차를 신청하고 싶어", "연차를 사용하고 싶어" 등 자동 쿼리 생성

 

6. 프롬프트 설정

FewShotChatMessagePromptTemplateExample Selector를 활용해 챗봇의 답변 형식을 정형화하고, 필수 요소를 빠짐없이 포함하도록 할 계획이다.

7. 모델 선택

하드웨어 성능과 비용 측면을 고려해 OpenAI API를 사용할 예정이다. 사내에서 연차 관리 용도로만 사용되기 때문에 성능과 비용이 적절한 선택이다.

8. 결과 평가 및 피드백

챗봇의 응답 결과는 피드백 루프를 통해 개선할 계획이다. 잘못된 날짜나 연차 종류 입력 시 오류 처리 기능도 포함할 예정이다.


 

⚙️ 파이프라인 자동화: Zapier vs Integromat

ZapierIntegromat을 비교한 결과, 초기에는 Zapier를 사용해 간단한 워크플로우 자동화를 구현하고, 필요에 따라 Integromat으로 확장할 예정이다.

도구 용도 주요 기능 기술 난이도 적합성
Zapier 단순 워크플로우 자동화 다양한 앱 간 통합 및 자동화 낮음 연차 관리동화에 매우 적합
Integromat 복잡한 조건 및 데이터 처리 API 통합, 데이터 변환, 복잡한 워크플로우 중간 좀 더 복잡한 비즈니스 규칙 처리에 적합

💡 결론: 초기에는 Zapier를 통해 간단한 자동화를 구현하고, 필요 시 Integromat으로 확장하는 방향으로 진행합니다.

 

 

연차 관리 같은 업무는 굳이 챗봇으로 구현하지 않아도 다른 방식으로 충분히 처리할 수 있다. 하지만 챗봇을 통해 업무를 처리하는 방식은 향후 많은 시간을 절약할 수 있을 것이다. 앞으로는 웹이나 프로그램에 접근할 필요 없이 많은 업무를 챗봇으로 처리할 수 있는 환경을 구현하고자 한다.

 

또한 이러한 프로젝트를 진행함으로써, LLM 모델을 목적에 맞게 튜닝하고, 정확도를 높이기 위해 다양한 시도들을 하며 파이프라인을 구축하여 서비스를 하는 일련의 과정들을 통해 스스로 큰 성장을 가져올 것이라고 생각하고 있다.