피드로 돌아가기
Dev.toAI/ML
원문 읽기
Keyword Matching을 Semantic Embedding으로 전환해 유사도 인식률 0%에서 최대 89%로 개선
We upgraded our AI agent from string matching to actual understanding
AI 요약
Context
OUROBOROS 시스템 내 22개 Primitives가 Jaccard Similarity 기반의 단순 문자열 매칭에 의존하여 유사 의미의 문장을 인식하지 못하는 한계 발생. 특히 'optimize database queries'와 'speed up SQL performance'를 완전히 다른 작업으로 판단하는 등 Semantic Gap으로 인한 시스템 지능 저하 확인.
Technical Solution
- all-MiniLM-L6-v2 모델 기반의 Shared Semantic Embedding Layer를 구축하여 개별 Primitives의 로직을 통합 관리하는 구조 설계
- 384차원 Vector Embedding과 Dot Product 연산을 통한 Cosine Similarity 구현으로 문맥적 의미 파악 가능
- lru_cache(maxsize=512)를 적용하여 반복되는 텍스트 인코딩 비용을 제거하고 캐시 히트율 60-70% 달성
- try/except 패턴을 통한 Graceful Degradation을 구현하여 모델 로드 실패 시 Jaccard Similarity로 자동 Fallback 하는 안정성 확보
- Primitive별 특성에 따라 Deduplication(0.75), Similarity(0.60), Contradiction(0.50)으로 임계값을 차등 설정하여 Precision과 Recall 최적화
Impact
- Jaccard Similarity 0.0 수준이던 유사 문장의 Semantic Similarity를 최대 0.891까지 상향
- CPU 환경(Ryzen 5)에서 문장당 80ms의 추론 속도 확보 및 캐시 적용 시 지연 시간 0ms 근접
- 22MB의 경량 모델과 3MB의 캐시 메모리 사용으로 리소스 제약 환경에서도 동작 가능한 효율성 증명
Key Takeaway
개별 기능 단위의 파편화된 최적화보다 공통 인프라(Shared Layer)를 구축하는 것이 유지보수 비용을 낮추고 전체 시스템의 성능을 상향 평준화하는 전략적 선택임
실천 포인트
- 단순 키워드 매칭 기반의 로직이 Semantic Gap을 유발하는지 전수 조사 - ML 모델 도입 시 GPU 없이 CPU만으로 수용 가능한 latency인지 Batch 작업 기준 검토 - 외부 라이브러리나 모델 의존성 실패 시 시스템 전체가 중단되지 않도록 Fallback 로직 설계 - 단순한 겉모습만 갖춘 'Theater Code'를 제거하여 디버깅 복잡도 감소