Bidding-Mate 개발 로그 (Engineering Log)
작성자: 오병주 (AI Engineer)
기간: 2025.12.12 ~ 2026.01.05
Phase 1. 데이터 파이프라인 구축 (12.12 ~ 12.16)
12월 12일 (금) | PDF 전처리 및 정제
- 작업 내용:
PyPDF2와 fitz (PyMuPDF) 성능 비교 테스트 진행. fitz가 한글 깨짐 현상이 훨씬 적어 최종 라이브러리로 선정.
- 공고문마다 반복되는 불필요한 헤더/푸터(페이지 번호, 기관명 등)를 제거하기 위해 정규식(Regex) 패턴 작성.
- Issue & Insight:
- 단순 텍스트 추출 시 표(Table) 구조가 무너져 정보가 섞이는 문제 발견. 일단 텍스트 위주로 처리하되, 중요 수치는 별도 메타데이터화 하기로 결정.
12월 15일 (월) | 청킹(Chunking) 전략 수립
- 작업 내용:
- RAG 성능의 핵심인 청킹 실험.
RecursiveCharacterTextSplitter 사용.
- 실험군: (500자/50), (1000자/200), (1500자/300).
- OpenAI
text-embedding-3-small 모델 연동 테스트.
- 결정 사항:
- 1000자는 너무 많은 정보가 섞여 검색 정밀도가 떨어짐. Chunk Size 500 / Overlap 150으로 확정.
12월 16일 (화) | Vector DB 구축 및 자동화
- 작업 내용:
- 로컬 환경에
ChromaDB 구축.
- 팀원 누구나 DB를 생성할 수 있도록
db_maker.py 자동화 스크립트 배포.
- PDF 100건 전량 임베딩 및 적재(Ingestion) 완료.
- 협업 포인트:
- 팀원 간 라이브러리 버전 충돌 발생 →
requirements.txt 버전을 고정(pinning)하여 재배포.
Phase 2. LangGraph 아키텍처 설계 (12.17 ~ 12.23)
12월 17일 (수) | Retriever 구현 및 한계점 파악
- 작업 내용:
- 기본 Cosine Similarity 검색 구현 및 테스트.
- 유사도 기반 검색 시 중복 문서가 많이 잡히는 문제 확인 → MMR(Maximal Marginal Relevance) 알고리즘 도입.
- Issue & Insight:
- 검색된 문서가 질문과 전혀 상관없는 경우에도 답변을 생성하려는 '할루시네이션' 조짐 발견. **검증 단계(Grader)**의 필요성 절감.
12월 18일 (목) | LangGraph 아키텍처 설계
- 작업 내용:
- 선형적 RAG 구조를 탈피하고, 루프와 조건 분기가 가능한 LangGraph 도입 결정.
- State Schema 정의 (
question, documents, generation).
- 전체 흐름 설계:
Retrieve -> Grade -> Generate.