개요
LLM 검색 기능 개선 PoC
섹션 제목: “LLM 검색 기능 개선 PoC”프로젝트 정보
섹션 제목: “프로젝트 정보”| 항목 | 내용 |
|---|---|
| 브랜치 | feature/openai-search-poc |
| 기반 브랜치 | feature/sllm-search-poc |
| 작성일 | 2026-01-26 |
| 상태 | 진행 중 |
1. 배경
섹션 제목: “1. 배경”1.1 기존 상황
섹션 제목: “1.1 기존 상황”- 기존 PoC:
feature/sllm-search-poc브랜치에서 로컬 SLLM(Ollama + qwen3:8b) 기반 키워드 확장 기능 구현 완료 - 문제점: 웹서버 배포 시 응답 속도 문제 우려 (로컬 GPU 리소스 의존)
1.2 해결 방향
섹션 제목: “1.2 해결 방향”- OpenAI 상용 API를 병행 테스트하여 성능 비교
- 최적 솔루션 도출을 위한 벤치마크 테스트 수행
- PageIndex 기반 심층 분석 기능 추가 검토
2. 목표
섹션 제목: “2. 목표”2.1 주요 목표
섹션 제목: “2.1 주요 목표”- OpenAI API 통합: gpt-4o 모델 기반 키워드 확장 클라이언트 구현
- RAG 기능 강화: Elasticsearch 메타데이터를 컨텍스트로 활용한 확장 RAG
- PageIndex 심층 분석: 인사이트/모니터링 리포트에 대한 추론 기반 검색
- 벤치마크 테스트: 30개+ 검색어로 객관적 성능 비교
2.2 비교 항목
섹션 제목: “2.2 비교 항목”| 항목 | 설명 |
|---|---|
| 응답 속도 | API 호출~응답 완료 시간 (ms) |
| 응답 품질 | 키워드 관련성, 정확도 |
| 비용 | API 호출당 예상 비용 |
| 안정성 | 오류율, 타임아웃 빈도 |
3. 범위
섹션 제목: “3. 범위”3.1 구현 범위
섹션 제목: “3.1 구현 범위”services/llm-search/├── app/│ ├── config.py # 환경변수 설정│ ├── services/│ │ ├── llm_client.py # 기존 Ollama 클라이언트│ │ ├── openai_client.py # [신규] OpenAI 클라이언트│ │ ├── llm_factory.py # [신규] Provider 팩토리│ │ ├── rag_service.py # [신규] RAG 컨텍스트 서비스│ │ └── pageindex_client.py # [신규] PageIndex 클라이언트│ ├── routes/│ │ ├── keywords.py # 키워드 API (확장)│ │ ├── benchmark.py # [신규] 벤치마크 API│ │ └── pageindex.py # [신규] PageIndex API│ └── data/│ ├── context/ # RAG 컨텍스트 데이터│ └── indexes/ # PageIndex 트리 인덱스├── tests/│ ├── benchmark.py # 벤치마크 스크립트│ └── test_queries.json # 테스트 검색어 (30+)└── .env # 환경변수 (gitignore)3.2 문서 범위
섹션 제목: “3.2 문서 범위”Docs/LLM-Search-PoC/├── 00_개요.md # 본 문서├── 01_환경설정.md # 설치 및 환경 구성 가이드├── 02_OpenAI_클라이언트.md # OpenAI 클라이언트 구현 문서├── 03_RAG_서비스.md # RAG 서비스 구현 문서├── 04_PageIndex_통합.md # PageIndex 통합 문서├── 05_API_엔드포인트.md # API 명세 문서├── 06_벤치마크_테스트.md # 테스트 방법론├── 07_비교테스트_결과.md # 최종 비교 분석 결과└── 08_운영배포_가이드.md # 프로덕션 배포 가이드4. 아키텍처
섹션 제목: “4. 아키텍처”4.1 전체 구조
섹션 제목: “4.1 전체 구조”┌─────────────────────────────────────────────────────────────────┐│ 사용자 검색 쿼리 │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ 1. 키워드 확장 (LLM) ││ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ││ │ Ollama │ │ OpenAI │ │ OpenAI+RAG │ ││ │ (qwen3:8b) │ │ (gpt-4o) │ │ (컨텍스트) │ ││ └──────────────┘ └──────────────┘ └──────────────┘ │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ 2. 콜렉션 검색 (Elasticsearch) ││ - 원본 검색어 + 확장 키워드로 multi_match 검색 ││ - 데이터 인덱스 (519건) / 사진 인덱스 │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ 3. 심층 분석 (PageIndex) - 선택적 ││ - 인사이트 리포트, 모니터링 리포트 등 장문 콘텐츠 ││ - 계층적 트리 인덱스 생성 → 추론 기반 검색 │└─────────────────────────────────────────────────────────────────┘4.2 Provider 선택 전략
섹션 제목: “4.2 Provider 선택 전략”| Provider | 사용 시나리오 | 특징 |
|---|---|---|
| Ollama | 로컬 개발/테스트, 비용 민감 환경 | 무료, 느림 |
| OpenAI | 프로덕션 배포, 빠른 응답 필요 | 유료, 빠름 |
| OpenAI+RAG | 고품질 키워드 필요, 도메인 특화 | 유료, 높은 품질 |
| PageIndex | 장문 문서 심층 분석 | 추론 기반, 높은 정확도 |
5. 일정
섹션 제목: “5. 일정”| 단계 | 작업 | 예상 소요 |
|---|---|---|
| 1 | 환경 설정 및 문서 구조 | 25분 |
| 2 | OpenAI 클라이언트 구현 | 30분 |
| 3 | RAG 서비스 구현 | 45분 |
| 4 | PageIndex 통합 | 55분 |
| 5 | API 엔드포인트 확장 | 35분 |
| 6 | 벤치마크 테스트 | 60분 |
| 7 | 결과 문서 작성 | 30분 |
| 총계 | 약 4시간 40분 |
6. 관련 문서
섹션 제목: “6. 관련 문서”- 01_환경설정.md - 설치 및 환경 구성
- 02_OpenAI_클라이언트.md - OpenAI 클라이언트 상세
- 07_비교테스트_결과.md - 최종 테스트 결과
7. PR 체크리스트
섹션 제목: “7. PR 체크리스트”코드 품질
섹션 제목: “코드 품질”- 코드 스타일 준수 (PEP 8, Black)
- 타입 힌트 적용
- 에러 핸들링 구현
- 로깅 추가
테스트
섹션 제목: “테스트”- 단위 테스트 작성
- 벤치마크 테스트 완료
- API 통합 테스트 완료
- 모든 구현 문서 작성 완료
- API 명세 문서 작성
- 환경설정 가이드 작성
- 운영배포 가이드 작성
- 환경변수 설정 검증
- 의존성 버전 고정
- Docker 설정 (필요시)