안녕하세요, 여러분. 오늘은 최근에 접한 흥미로운 프로젝트, 바로 '멀티모달 이력서 첨삭 튜터'에 대해 이야기해보려 합니다. 이 프로젝트는 GPT-4 기반의 인공지능을 활용하여 이력서 작성과 첨삭을 돕는 혁신적인 시도인데요, 그 세부 내용을 한번 살펴보겠습니다.
멀티모달 이력서 첨삭 튜터의 개발 배경
이 프로젝트의 출발점은 사람들이 널리 사용하는 인공지능 이력서 서비스에 GPT-4 기반의 기능을 추가하여 더 향상된 서비스를 제공하고자 하는 아이디어였습니다. 특히, 비전 관련 기능을 첨삭하는 부분에 초점을 맞추었죠. 이는 기존의 텍스트 중심 이력서 서비스를 한 단계 끌어올리는 시도라고 할 수 있습니다.
기능 및 사용 방법
사용자는 자신의 이력서를 PDF 형식으로 업로드하고, 이력서와 관련된 질문을 입력합니다. 그러면 AI가 이력서와 질문을 분석하여 관련 답변을 제공하는 방식이죠. 이 과정은 사용자 친화적인 웹 애플리케이션을 통해 이루어집니다.
멀티모달 CV.py 함수 코드 로직
이 로직은 PDF 문서 처리, 텍스트 요약 및 처리, 이미지 처리 및 요약, 멀티모달 검색 시스템 구축, 실행 및 결과 처리 등 다양한 단계를 포함합니다. 특히, GPT-4 모델을 활용하여 데이터를 처리하고 요약하는 부분이 인상적입니다.
- PDF 문서 처리:
- extract_pdf_elements: PDF 파일에서 이미지, 테이블, 텍스트를 추출합니다.
- categorize_elements: 추출된 요소를 테이블과 텍스트로 분류합니다.
- 텍스트 요약 및 처리:
- generate_text_summaries: 텍스트 요소를 요약합니다. 요약은 GPT-4 모델을 사용하여 생성됩니다.
- 이미지 처리 및 요약:
- encode_image, image_summarize, generate_img_summaries: 이미지를 base64 인코딩으로 변환하고 요약합니다. 여기에서도 GPT-4 모델이 사용됩니다.
- 멀티모달 검색 시스템 구축:
- create_multi_vector_retriever: 텍스트, 테이블, 이미지의 요약을 인덱싱하여 검색할 수 있게 만듭니다. 이 과정에서 InMemoryStore, MultiVectorRetriever 등이 사용됩니다.
- split_image_text_types, img_prompt_func, multi_modal_rag_chain: 검색 쿼리를 처리하기 위한 멀티모달 RAG 체인을 구성합니다. 이 체인은 검색 쿼리에 따라 텍스트와 이미지를 결합하여 GPT-4 모델에 전달합니다.
- 실행 및 결과 처리:
- run_rag_chain: 구성된 RAG 체인을 실행하여 사용자 쿼리에 대한 결과를 반환합니다.
- 멀티모달 임베딩 : 다양한 유형의 데이터(이미지, 텍스트, 문서, 표 등)를 공통적인 벡터 공간에 매핑하여 이해할 수 있는 과정입니다. 이를 통해 모델은 이미지의 시각적 콘텐츠와 텍스트의 언어적 콘텐츠를 동일한 방식으로 처리할 수 있습니다. 각 유형의 데이터는 처리 및 요약되어 다음 단계로 전달됩니다.
- 벡터 리트리버는 멀티모달 임베딩을 통해 생성된 벡터를 사용하여 데이터를 검색하는 시스템입니다. 이 시스템은 복잡한 쿼리에 대응할 수 있도록 다양한 데이터 유형에서 관련 정보를 찾아내고, 이를 다음 단계의 처리(예: 대형 언어 모델)로 전달합니다.
- 옵션 1: 'Retrieve raw image' - 원본 이미지를 검색하여 'Multimodal LLM'(대형 언어 모델)에 전달하고, 그 결과를 'Answer'로 제공합니다.
- 옵션 2: 'Retrieve image summary' - 이미지 요약을 검색하여 LLM에 전달하고, 그 결과를 'Answer'로 제공합니다.
- 옵션 3: 'Retrieve image summary but pass raw image to LLM for synthesis' - 이미지 요약을 검색하지만 원본 이미지를 LLM에 전달하여 종합하고, 그 결과를 'Answer'로 제공합니다.
사용한 Langchain
- ChatOpenAI: OpenAI의 언어 모델을 활용하여 대화형 방식으로 응답을 생성하는 채팅 모델입니다.
- ChatPromptTemplate: 채팅 모델의 입력을 구조화하는 데 사용되는 템플릿입니다. 특정 형식으로 문맥과 질문을 정의할 수 있습니다.
- StrOutputParser: 채팅 모델의 출력을 읽기 쉽도록 문자열 형식으로 변환하는 출력 파서입니다.
- CharacterTextSplitter: 긴 텍스트를 지정된 청크 크기와 겹침에 따라 작은 청크로 분할할 수 있는 텍스트 분할기입니다.
- HumanMessage: 채팅 대화에서 사람이 보낸 메시지를 나타냅니다.
- OpenAIEmbeddings: 텍스트를 숫자 표현으로 인코딩할 수 있는 임베딩 모델입니다.
- MultiVectorRetriever: 여러 벡터 저장소를 사용하여 벡터 기반 문서 검색을 수행할 수 있는 리트리버입니다.
- Document: 관련 메타데이터와 함께 텍스트를 나타냅니다.
- InMemoryStore: 메모리에 문서를 저장하고 검색할 수 있는 저장 시스템입니다.
- Chroma: 크로마 값을 기반으로 벡터를 저장하고 검색할 수 있는 벡터 저장소입니다.
- RunnableLambda: 체인에서 실행할 사용자 정의 함수를 정의할 수 있는 런처블입니다.
- RunnablePassthrough: 입력값을 체인에서 수정하지 않고 통과시키는 런너블입니다.
- PyPDFLoader: PDF 파일에서 텍스트를 로드할 수 있는 문서 로더입니다.
미래의 이력서 작성 및 검토 방식에 미치는 영향
이 프로젝트는 이력서 작성 및 검토 방식에 혁신을 가져올 잠재력을 지니고 있습니다. 특히, 멀티모달 접근 방식은 텍스트뿐만 아니라 이미지와 같은 다양한 형태의 데이터를 통합적으로 분석하고 활용할 수 있게 해줍니다. 이는 이력서 작성자가 자신의 경험과 역량을 더 풍부하고 다층적으로 표현할 수 있게 도와줄 것입니다.
다른 분야에의 적용 가능성
이 기술은 이력서 첨삭에만 국한되지 않고, 교육, 컨설팅, 콘텐츠 제작 등 다양한 분야에 응용될 수 있습니다. 예를 들어, 교육 분야에서는 학생들의 과제나 레포트를 첨삭하는 데 사용될 수 있으며, 컨설팅 분야에서는 비즈니스 보고서나 프레젠테이션 자료의 질을 향상시키는 데 기여할 수 있습니다.
이처럼 '멀티모달 이력서 첨삭 튜터'는 단순한 이력서 작성 도구를 넘어서, 다양한 형태의 데이터를 통합적으로 분석하고 활용하는 새로운 방식의 AI 기술을 제시하고 있습니다. 앞으로 이 기술이 어떻게 발전하고 다양한 분야에 적용될지 기대가 됩니다. 여러분은 이 기술에 대해 어떻게 생각하시나요?
'AI > Contents' 카테고리의 다른 글
전참시에 나온 ChatGPT를 사용하는 ZionT (2) | 2023.12.12 |
---|---|
OpenAI의 Assistants API로 개인 수학 튜터 만들기 (2) | 2023.12.05 |
Andrew Ng prompt for ChatGPT (2) | 2023.11.27 |
ChromaDB로 RAG(Retrieval-Augmented Generation)방식의 챗봇 구현하기 (1) | 2023.11.24 |
GPT가 자동으로 블로그 글을 업로드하는 건에 대하여..(1) (1) | 2023.11.24 |