분류 전체보기 36

[스나이퍼팩토리] 한컴AI 2기 - 성과발표회 회고록

문서를 이해하는 시스템을 만들며이번 성과발표회는 단순히 결과물을 보여주는 자리가 아니라, 그동안 내가 어떤 문제를 고민했고, 어떤 방식으로 해결해 왔는지를 스스로 정리하는 과정이었다. 프로젝트를 시작할 때와 지금을 비교해 보면, 생각보다 많이 달라져 있었다.(1) 이번 프로젝트/성과발표회를 통해 배우고 느낀 점가장 크게 깨달은 점가장 크게 느낀 점은 기술을 구현하는 것과, 기술을 설명하는 것은 완전히 다른 능력이라는 것이다. 기능 자체는 어느 정도 구현되어 있었지만, 발표를 준비하면서왜 이 구조를 선택했는지기존 방식과 무엇이 다른지이게 실제로 어떤 가치를 주는지를 설명하려다 보니, 내가 만든 시스템을 내 언어로 다시 이해해야만 했다.발표 준비·협업 과정에서 느낀 변화초반에는 일단 되는 걸 만들자에 가까웠..

한컴AI 2기 2025.12.18

[스나이퍼팩토리] 한컴AI 2기 - BACKEND 통합 테스트 및 오류 수정 리포트

제출 목적전체 Backend API에 대한 통합 테스트 수행 결과 정리테스트 과정에서 발견된 오류 및 수정 내역 기록Docker 기반 배포 환경에서 재현 가능한 실행 상태 검증1. 테스트 개요본 테스트는 5차 과제 요구사항에 따라Swagger Docs 기반 API 테스트 및 실제 Docker 배포 환경에서 수행하였다.테스트 범위문서 업로드 → 파싱/청킹 → 임베딩 → Vector Store 저장 → 검색 → RAG 응답비동기 작업(Celery) 연동 여부스트리밍 응답 API 동작 여부테스트 환경API Server: FastAPI (Docker)Worker: Celery (Docker)DB: MySQLVector Store: ChromaDB (Persistent)배포 방식: docker-compose2. ..

한컴AI 2기 2025.12.12

[스나이퍼팩토리] 한컴AI 2기 - Vercel - FastAPI Mixed Content 트러블 슈팅 (무료 도메인, Nginx https, 서트봇)

이번 글은 내가 진행했던 RAG 프로젝트 환경 세팅 중,무료 도메인 확보 → 서버 연결 → HTTPS 적용 → Nginx 리팩토링 전 과정을 정리한 기록이다.AWS EC2에서 FastAPI 백엔드를 운영하고 있었는데,Vercel 프론트엔드에서 API 요청을 보내려면 반드시 HTTPS가 필요했다.하지만 초기 상태는 HTTP IP 기반 서버뿐이라브라우저에서 "Mixed Content" 에러가 터졌다.그래서 결국 무료 도메인 확보 → Nginx HTTPS 구성 → Certbot 발급을 직접 해보기로 했다.1. 무료 도메인 확보 — alain.r-e.kr프로덕션용이 아니라 연구 프로젝트였기 때문에, 우선 HTTPS를 빠르게 적용하는 것이 목표였다.무료 도메인을 제공하는 내도메인.한국 사이트에서 alain.r-e..

한컴AI 2기 2025.12.04

[스나이퍼팩토리] 한컴AI 2기 - 알랭 서비스 통합

아키텍처 흐름도2차멘토링과 중간발표에서 사용자 흐름에 따른 데이터 이동에 대한 질문을 받았었다. 말로 설명했지만 충분한 전달이 이뤄지지 않았는데, 결국 그림이 필요했다. gemini3.0이 공개되고, 나노 바나나 프로가 사용가능해진 타이밍이 실로 적절했다. 우리의 서비스에 대한 설명을 기반으로 이미지를 만들어달라고 했더니, 꽤 그럴싸하게 만들어줬다. 해당 이미지에서 몇가지 수정 또한 프롬프팅으로 가능했다. 비동기 문서 업로드 파이프라인과 질의 응답 파이프라인은 서비스의 중요한 축이고, 전체 흐름도로부터 별도로 보여줄 필요가 있었다.사용자 → 프론트엔드에 문서 업로드 → 백엔드 FastAPI로 전달 → Celery 워커의 처리(파싱-청킹-임베딩) → DB 의 흐름이 잘 표현되었다.사용자 → 프론트엔드에 질..

한컴AI 2기 2025.11.28

[스나이퍼팩토리] 한컴AI 2기 - 알랭 프로젝트 중간발표 회고

중간발표가 끝났다. 결과만 놓고 보면 발표는 조금 흔들렸지만,발표 과정 자체가 이번 프로젝트에서 가장 많은 배움을 남긴 순간이었다.이 글에서는 중간발표 준비 과정에서 배운 점과 프로젝트 자체의 기술적/협업적 인사이트를 정리해보고자 한다.🧩 1. 중간발표가 남긴 것들발표를 준비하면서 처음 느낀 건,우리가 만든 기능들이 많아질수록 설명해야 할 맥락도 비례해 폭발적으로 많아진다는 사실이었다.HWP/HWPX 파싱, OWPML, 청킹, 임베딩, RAG, 권한 시스템, 문서 Diff, 프론트 구조, 크롤러…하고 있는 건 분명 많았지만, 그것들을 한 문장으로 압축해서 말하는 능력은 부족했다.이번 발표는 그 공백을 정확히 드러냈다.“핵심 메시지가 너무 많다.”“한 번에 전달할 스토리가 정리되지 않았다.”“기술을 보여..

한컴AI 2기 2025.11.21

[스나이퍼팩토리] 한컴AI 2기 - Docker CE 및 Nginx를 활용한 GPU 서버 구축 과정

AWS EC2에서 NVIDIA GPU를 사용하는 FastAPI 백엔드 서버를 Docker Compose로 구동하고, Nginx 리버스 프록시를 통해 외부 접속 환경을 구축했다. 최종적으로 안정적인 배포 환경을 확보했지만, 그 과정은 결코 순탄하지만은 않았다.우선 프로젝트 경로에 back 레포지토리를 클론했다.ubuntu@hancom-team2:~/project$ git clone https://github.com/Newrun-way/back.git'back'에 복제합니다...remote: Enumerating objects: 175, done.remote: Counting objects: 100% (175/175), done.remote: Compressing objects: 100% (116/116),..

한컴AI 2기 2025.11.12

[스나이퍼팩토리] 한컴AI 2기 - 알랭 RAG 로컬 도커에서의 구동기 (w FAISS 샤딩)

샤딩 (Sharding)FAISS의 특성상, (성능 개선을 기대할 수 없는) 사후필터링만이 가능해서, 초기의 업로드부터 권한별로 분산해서 저장하면 어떨까? 하는 아이디어로 샤딩을 시도했다. (샤딩은 DB 트래픽을 분산할 수 있는 중요한 수단이다.)경로 통일 이전의 스크린샷이라, 벡터스토어는 app/data/uploads에 들어가있고, 문서파일은 data/uploads에 들어가있다 ㅎㅎ.. 나중에 다시 app/data/uploads로 통합했다.hwpx RAG 구현 in 도커metadata 내에 dept_id, project_id, user_id 임의로 넣어봤다. 구조 확장엔 큰 문제가 없어보인다.hwp를 파싱했는데, 왜인지 text_content가 하나의 통문자열 리스트로 왔다.hwpx파일은 hwp와 달리..

한컴AI 2기 2025.11.10

[스나이퍼팩토리] 한컴AI 2기 - OWPML 프로젝트 알랭 1주차 회고

프로젝트 2팀 '뉴런웨이'의 1주차가 정신없이 지나갔다. 우리 팀의 목표는 OWPML 기반의 문서 Q&A 서비스인 알랭(AlAIn)을 개발하는 것. 이번 1주차의 핵심 목표는 인프라, 백엔드, 프론트엔드의 완전한 통합 개발 환경을 구축하고, 가장 핵심적인 문서 파싱 기능을 구현하는 것이었다. 돌아보니, 단순한 '환경 설정'을 넘어 프로젝트의 뼈대 전체를 세운 한 주였다.1. INFRA: 견고한 개발 생태계 구축기프로젝트의 성패는 팀원 모두가 동일하고 안정적인 환경에서 개발할 수 있느냐에 달려있다고 생각한다. 우리는 1주차에 이 '개발 생태계'를 구축하는 데 총력을 기울였다.A. 협업 도구 통일 우선 파편화된 소통을 막기 위해 협업 도구를 명확히 정했다.Notion: 모든 프로젝트 관리의 허브로 사용한다..

한컴AI 2기 2025.11.09

[스나이퍼팩토리] 한컴AI 2기 - OWPML 프로젝트 CLI와 백엔드 FastAPI 세팅

처음 목표는 명확했다. 한글(HWP, HWPX) 문서를 AI가 이해하게 만들자.그런데 막상 열어보니 구조가 너무 복잡했다.텍스트는 있지만 의미 단위로 구분되지 않았고, 문단과 표, 각주가 한데 엉켜 있었다.OWPML(Open Word Processor Markup Language) 필터를 활용해한글 문서를 XML 구조로 풀 수 있다면, AI가 이해할 수 있는 데이터로 바꿀 수 있을 것 같았다.그 순간 “이걸 파싱해서 RAG 구조에 얹으면 되겠다”는 감이 왔다.2️⃣ extract.py — 문서를 뜯어내는 과정HWPX 파일은 내부적으로 ZIP 형식이었다.압축을 풀면 XML 파일들이 나오고, 그 안에 는 문단, 은 표를 의미했다.파이썬의 xml.etree.ElementTree로 태그를 읽고, 문단과 표를 각..

한컴AI 2기 2025.11.03