콘텐츠로 이동

작업보고서 - 2026-01-14

SI-DATA 문서 / 검색시스템 설계 문서

서울연구데이터서비스(si-data) 프로젝트 로컬 개발환경 구성 및 SLLM 검색 시스템 PoC 착수


  • MySQL 버전 마이그레이션: MariaDB 10.11 → MySQL 8.0
  • 컨테이너 재구성: 기존 컨테이너 삭제 후 새로 생성
  • 최종 환경 설정:
    • PHP: 8.3
    • MySQL: 8.0
    • Elasticsearch: 7.17.14
    • Webserver: nginx-fpm
si-data/
├── config/sync/ # 811개 yml 설정 파일
├── Docs/ # 작업문서 (gitignore)
├── web/
│ ├── modules/custom/si_data/ # 핵심 커스텀 모듈
│ ├── themes/custom/datasi/ # 메인 테마
│ ├── themes/custom/silicon/ # 보조 테마
│ ├── phpr/ # PHPExcel 레거시
│ └── R/ # R 차트 HTML
└── vendor/ # Composer 의존성
타입용도
data_seoul데이터로 본 서울
digital_photo사진으로 본 서울
collection사진 컬렉션
charts데이터 차트
si_survey조사 데이터
archi근현대 유산
insight_report인사이트 리포트
data_intro데이터 소개
data_collection데이터 컬렉션
front_page프론트 페이지
suggest제안
suggestion제안 (구버전)
page기본 페이지
article기사
drag_and_drop_pageDXPR 페이지
경로기능컨트롤러
/data데이터로 본 서울SiDataController
/photo사진으로 본 서울SiPhotoController
/node/search통합검색SearchController
/map/view지도 보기MapController
/chart/api/*차트 APIChartController
  • AGENTS.md 업데이트: 개발환경 정보 추가, 콘텐츠 타입 목록 확장
  • Docs 폴더 생성: 작업보고서/결과내역서 저장용
  • .gitignore 업데이트: Docs 폴더 버전관리 제외

  • 신규 브랜치: feature/sllm-search-poc
  • 목적: 운영 배포에 영향을 미치지 않도록 격리
항목상태상세
Ollama✅ 설치 완료v0.14.0 via Homebrew
LLM 모델✅ 다운로드 완료Qwen3 8B (5.2GB) - EEVE 대신 사용
FastAPI 서비스✅ 구현 완료services/llm-search/
Drupal 연동✅ 구현 완료Vue.js 통합검색 수정
services/llm-search/
├── README.md
├── requirements.txt
├── venv/ # Python 가상환경
└── app/
├── __init__.py
├── main.py # FastAPI 엔트리포인트
├── routes/
│ ├── __init__.py
│ └── keywords.py # 키워드 확장 API
├── services/
│ ├── __init__.py
│ └── llm_client.py # Ollama 클라이언트
└── data/
└── synonyms.json # 동의어 사전 (17개 카테고리)
경로메서드기능
/healthGET서비스 상태 확인
/api/keywords/expandPOST검색어 확장 (LLM)
/api/keywords/suggestPOST동의어 제안
/api/keywords/testGETLLM 연결 테스트

수정된 파일:

파일변경 내용
si-combine-search.jsLLM 확장 검색 기능 추가 (~200줄)
si-search.html.twigAI 연관 검색어 UI, 확장 결과 섹션 추가
si-combine-search.cssLLM UI 스타일 (신규 파일)
si_data.libraries.ymlCSS 의존성 추가

구현된 기능:

  1. AI 연관 검색어 태그 - 검색창 아래에 클릭 가능한 확장 키워드 표시
  2. ON/OFF 토글 - AI 검색 기능 켜고 끄기
  3. 로딩 스피너 - “AI가 연관 검색어를 찾고 있습니다…”
  4. AI 추천 연관 콘텐츠 - 확장 검색 결과 (데이터 + 사진)
  5. AI 배지 - 확장 검색 결과 아이템에 보라색 “AI” 배지
이슈원인해결
$.isEmptyObject 에러jQuery 로드 순서Object.keys() 사용으로 대체
hits.total 객체 표시ES7+ 응답 형식 변경객체/숫자 분기 처리
grid01 is not definedMasonry 전역 변수typeof 체크 추가
Masonry 레이아웃 깨짐Vue 동적 렌더링 타이밍CSS Grid로 대체
┌─────────────────────────────────────────────────────────────┐
│ 사용자 검색: "서울 인구" │
├─────────────────────────────────────────────────────────────┤
│ 1. 즉시 검색 (기존 Elasticsearch) │
│ → 결과 바로 표시 │
├─────────────────────────────────────────────────────────────┤
│ 2. LLM 확장 검색 (비동기) │
│ → FastAPI (localhost:8000) 호출 │
│ → AI 연관 검색어 표시: "인구 통계", "인구 변화" 등 │
│ → 확장 키워드로 추가 검색 │
│ → "AI 추천 연관 콘텐츠" 섹션에 점진적 표시 │
└─────────────────────────────────────────────────────────────┘

항목파일/폴더
개발환경 설정.ddev/config.yaml
프로젝트 지침AGENTS.md
작업문서 폴더Docs/
Git 제외 설정.gitignore
SLLM 계획서Docs/SLLM_검색시스템_계획서_v1.0.md
설치 가이드Docs/SLLM_로컬환경_설치가이드.md
FastAPI 서비스services/llm-search/
통합검색 JSweb/modules/custom/si_data/js/si-combine-search.js
통합검색 Twigweb/modules/custom/si_data/templates/si-search.html.twig
LLM 스타일web/modules/custom/si_data/css/si-combine-search.css

항목상태
DDEV 환경✅ 정상 동작 (MySQL 8.0)
URLhttps://si-data.ddev.site
Git 브랜치feature/sllm-search-poc
Ollama✅ 실행 중 (brew services start ollama)
LLM 모델✅ Qwen3 8B (5.2GB)
FastAPI✅ 구현 완료 (localhost:8000)
Drupal 연동✅ 통합검색 수정 완료
테스트✅ 기본 기능 동작 확인

  1. 동의어 사전 통합 - synonyms.json을 FastAPI에서 활용하여 LLM 호출 전 로컬 매칭
  2. 검색 품질 개선 - LLM 프롬프트 튜닝, 확장 키워드 품질 향상
  3. 에러 핸들링 강화 - LLM 타임아웃, 네트워크 오류 대응
  1. CTR 추적 구현 - 사용자 클릭 데이터 수집 (검색어, 클릭한 결과)
  2. 캐싱 구현 - 자주 검색되는 쿼리 결과 캐싱
  3. 성능 최적화 - LLM 응답 시간 모니터링 및 개선
  1. 관리자 UI - 동의어 사전 관리 인터페이스
  2. A/B 테스트 준비 - LLM 검색 효과 측정 기반 마련
  3. 문서화 - 운영 배포 가이드 업데이트

11434/api/tags
# 1. Ollama (LLM 서버)
brew services start ollama
# 2. FastAPI (키워드 확장 API)
cd services/llm-search
source venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8000
# 확인: curl http://localhost:8000/health
# 3. DDEV (Drupal)
ddev start
# 확인: https://si-data.ddev.site/node/search?query=서울+인구
# 캐시 클리어
ddev drush cr

문서경로
SLLM 계획서Docs/SLLM_검색시스템_계획서_v1.0.md
설치 가이드Docs/SLLM_로컬환경_설치가이드.md
콘텐츠 타입 분석Docs/콘텐츠_타입_분석.md
데이터로 본 서울 분석Docs/데이터로_본_서울-현_콘텐츠_택소노미_분석.md