<< [[2025-01-11|Before]] | [[2025-01-14|Next]] >> ## Goal - Image Refine LCEL Chain 구현하기 - Streamlit 환경 설정하기 ## TODO > [!TODO] TODO > - [v] 이미지 Refine LCEL Chain 구현하기 > - [v] 이미지 분석 CrewAI 구현하기 > - [v] Streamlit 설치하기 > - [v] 문서 업로드 UI 제작 > - [v] CrewAI fileSelector 기능 연걸 > - [v] 문서 탐색 조건 선택 옵션 UI 구현 ## Issue/Solution #### Issue 1 > [!blank] > >> [!warning]+ Problem >> `Langchain`의 `UnstructuredImageLoader`을 사용하여 이미지를 `RAG`을 수행하였다. >> 해당 과정을 수행하면서 `Excalidraw`로 만들어진 이미지의 경우 데이터의 정보가 너무나 커서 `gpt`의 **context window** 값을 넘겨 오류가 발생하였다. > >> [!summary]+ Solution >>`CrewAI`의 `VisionTool`을 사용해본 결과 이유는 알 수 없지만 정상적으로 이미지를 `Load`하여 분석할 수 있었다. >>따라서 `Image`의 경우 `CrewAI`을 활용하여 **Custom Refine Chain**을 만들었다. #### Issue 2 > [!blank] > >> [!warning]+ Problem >> Streamlit의 `upload file` 기능에서는 `directory`을 지정하지 못한다. >> 현재 `CrewAI`는 파일 경로에서 모든 문서들과 이미지를 찾고 이를 분석하기 때문에 경로를 지정하지 못하면 현 기능들은 사용하지 못한다. > >> [!summary]+ Solution >> `directory`을 직접 지정할 수 없기 때문에 **zip 형태**로 `directory` 받을 수 있게 구현하였다. >> python에서 지원하는 `import zipfile`을 활용해 `zip` 형태의 `directory`을 압축 해제하고 압축 해제된 경로를 `CrewAI`에게 전달하여 해당 문제를 해결해였다. #### Issue 3 > [!blank] > >> [!warning]+ Problem >> 현재 `Crew`는 `markdown file`만을 찾아 불러온다. >> 범용성 높은 프로그램을 만들기 위해서는 여러 확장자의 파일들을 불러와야 한다. > >> [!summary]+ Solution >> `Streamlit`을 이용해 사용자가 어떠한 확장자를 가진 파일을 불러올 지를 결정할 수 있게 구현하였다. >> 또한 사용자에게 키워드를 받게 하여 해당 키워드에 맞는 핵심 문서와 관련 문서들을 불러오도록 구현하였다. ## Reference - [LangChain Image Loader](https://api.python.langchain.com/en/latest/document_loaders/langchain_community.document_loaders.image.UnstructuredImageLoader.html) - [[Streamlit#uploading file|Streamlit upload file]] ## Git commit contents - [build : Image 분석하는 Refine LCEL Chain 구현](https://github.com/Donghyeon-Shin/DocumentSecretary/commit/a091ecdab864cf054aabe21028190ef2163cf1a2 "build : Image 분석하는 Refine LCEL Chain 구현") - [Fix : 이미지를 Refine Chain 대신 CrewAI 통해 분석하도록 수정](https://github.com/Donghyeon-Shin/DocumentSecretary/commit/ad9f62d3ba4ab5a3132ced019856130e37636029 "Fix : 이미지를 Refine Chain 대신 CrewAI 통해 분석하도록 수정") - [docs : test image 삭제](https://github.com/Donghyeon-Shin/DocumentSecretary/commit/8cb6fbe4d0931ba01c2498e841cf12db24751524 "docs : test image 삭제") - [docs : package list 수정(Streamlit 설치)](https://github.com/Donghyeon-Shin/DocumentSecretary/commit/28bcf17e8bacbaa6f058610c9aa158ea6aa78b30 "docs : package list 수정(Streamlit 설치)") - [build : document Search 및 fileSelector에 Streamlit UI 기능 추가](https://github.com/Donghyeon-Shin/DocumentSecretary/commit/810257c6a1d0717a1e904074d4b79732244389de "build : document Search 및 fileSelector에 Streamlit UI 기능 추가") ## What should I do more - `imgPathCrew` 연결하기 - `file Select`의 전체적인 UI 구현하기