피드로 돌아가기
Dev.toAI/ML
원문 읽기
Hybrid Search와 Sentiment Dial을 통한 지능형 뉴스 애그리게이터 고도화
Two Weeks of My News Aggregator: RAG Chat and a Sentiment Dial
AI 요약
Context
단순 피드 수집과 AI 요약 기능에 그친 초기 Symfony 기반 아키텍처의 한계 직면. 정교한 정보 검색을 위한 대화형 인터페이스와 사용자 감성 상태에 따른 콘텐츠 랭킹 제어 시스템의 필요성 대두.
Technical Solution
- pgvector 기반의 Semantic Search와 SEAL/Loupe 기반의 Keyword Search를 결합한 Hybrid Retrieval 구조 설계로 검색 정확도 향상
- symfony/ai-agent의 #[AsTool] 속성을 통한 Tool Calling 메커니즘 도입으로 LLM이 직접 DB 검색 기능을 수행하는 Agentic Workflow 구현
- ModelDiscoveryService 내 'tools' 파라미터 필터링 로직을 추가하여 일반 텍스트 생성 모델과 Tool Calling 지원 모델의 Pool을 분리 운용
- OpenRouter의 고지연(5~30s) 문제 해결을 위해 SSE(Server-Sent Events) 상태 이벤트 전송 패턴을 도입하여 Connection Timeout 방지 및 사용자 경험 개선
- AI 기반 Sentiment Score(-1.0 to +1.0)를 기본으로 하되, 가중치 기반 Rule-based Scoring을 Fallback으로 배치하여 시스템 가용성 확보
- 사용자 설정 슬라이더 값(-10 to +10)에 따라 콘텐츠를 Re-ranking하고 특정 임계치 이하의 데이터를 필터링하는 다이나믹 랭킹 로직 적용
실천 포인트
1. LLM 기반 서비스 설계 시 Tool Calling 가능 여부에 따라 모델 풀(Model Pool)을 분리했는가
2. 외부 API의 높은 First-token Latency 발생 시 SSE Keep-alive 상태 메시지로 사용자 이탈을 방지하고 있는가
3. AI 판단의 불확실성을 보완하기 위해 상한선이 정해진 Rule-based Fallback 로직을 갖추었는가
4. 하이브리드 검색 구현 시 Semantic의 모호함과 Keyword의 경직성을 상호 보완하는 Score Combine 로직을 설계했는가