파일 업로드 및 텍스트 추출 기능을 구현하기 위해 몇 가지 핵심 단계가 제시됩니다. 첫째, PDF, Word 문서, PowerPoint, Excel 파일 등 다양한 파일 형식의 콘텐츠를 읽기 위해 langchain
라이브러리에서 사용되는 여러 Ruby Gem들을 추가하고 설치해야 합니다. 이는 파일 유형에 따라 별도의 처리 로직을 구현할 필요 없이 통일된 방식으로 파일 콘텐츠를 로드할 수 있게 합니다.
둘째, 파일 처리 작업을 비동기적으로 수행하기 위해 백그라운드 잡스(Background Jobs)가 생성됩니다. 구체적으로 jobs/ai_process_file_upload_job.rb
라는 파일 처리 작업을 정의하여 업로드된 파일의 내용을 처리하도록 합니다. 이어서, 파일 업로드 정보를 저장할 file_upload
모델이 생성됩니다. 이 모델은 사용자 및 팀 참조와 더불어, 처리된 텍스트 요약을 저장할 t.text
타입의 text_summary
필드를 포함합니다. 또한, has_one_attached_file
설정을 통해 파일 첨부 기능을 활성화합니다.
파일 처리 로직은 ai_process_file_upload_job
내에서 구현됩니다. 이 작업은 업로드된 파일을 가져와 langchain
로더를 사용하여 파일 내용을 로드하고 텍스트 청크를 추출합니다. langchain
의 강점은 파일 유형에 관계없이 자동으로 콘텐츠를 파싱하여 텍스트 데이터를 반환한다는 점입니다. 추출된 텍스트 청크는 두 개의 새 줄을 사용하여 결합된 후, file_upload
모델의 text_summary
필드에 저장되며, 처리 완료 시간(processed_at
)도 함께 업데이트됩니다.
마지막으로, 구현된 기능의 테스트 방법을 시연합니다. RSpec
과 같은 테스트 프레임워크를 사용하여 파일 픽스처(예: 마크다운 파일)를 업로드하고, 백그라운드 작업을 실행한 후, text_summary
필드에 올바른 텍스트 콘텐츠가 포함되어 있고 processed_at
타임스탬프가 존재하는지 확인합니다. 이 테스트 과정을 통해 파일 처리 파이프라인이 예상대로 작동함을 검증합니다. 이러한 구조는 간단하지만, AI 에이전트에 지능을 부여하여 파일 컨텍스트를 쉽게 제공하고 반복 가능한 방식으로 지식 기반을 구축할 수 있게 합니다.