Astro 블로그의 '유사 게시물' 관련성 및 단순성 향상: AI 기반 코사인 유사도 활용 전략
🤖 AI 추천
Astro 기반 블로그를 운영하며 사용자 경험 향상을 위해 '유사 게시물' 추천 기능을 개선하려는 웹 개발자 및 콘텐츠 전략가에게 유용합니다. 특히, AI 및 머신러닝 기술을 적용하여 추천의 정확도를 높이고자 하는 개발자에게 실질적인 가이드라인을 제공합니다.
🔖 주요 키워드

핵심 기술
이 콘텐츠는 Astro 블로그에 AI 기반의 '유사 게시물' 추천 기능을 구현하고, 코사인 유사도 임계값 설정을 통해 추천의 관련성과 단순성을 향상시키는 방법을 다룹니다.
기술적 세부사항
- 기존 유사 게시물 문제점: 초기 구현에서 관련 없는 게시물이 추천되는 문제점을 발견했습니다.
- AI 기반 해결 방안 탐색: ChatGPT의 제안을 바탕으로 임계값 설정을 시도했으나, 경험적 데이터 기반의 계산 방법이 필요했습니다.
- 데이터 수집 및 분석:
src/pages/api/post-similarity.json.ts
엔드포인트를 생성하여 게시물 간 쌍별 코사인 유사도 점수를 수집했습니다.getPairWiseSimilarityScores
함수를src/utils/related-posts.ts
에 추가하여 모든 게시물 쌍의 코사인 유사도를 계산했습니다.- 수집된 유사도 점수의 최소값, 최대값, 평균, 중앙값, 75th, 90th 백분위수 등을 분석했습니다.
- 임계값 결정:
- 데이터 히스토그램 분석 결과, 코사인 유사도 점수가 약 0.65 부근에 밀집된 두 개의 분포(bimodal distribution)를 확인했습니다.
- 가장 높은 관련성을 가진 게시물을 효과적으로 보여주기 위해 0.65를 최종 코사인 유사도 임계값으로 설정했습니다.
- 코드 수정:
src/utils/related-posts.ts
파일 내slugToMostRelatedPosts
함수에서filter((c) => COSINE_THRESHOLD <= c.score)
조건을 추가하여 임계값 이상의 게시물만 필터링하도록 수정했습니다.posts.length > 0
조건을 통해 관련 게시물이 없을 경우 컴포넌트가 렌더링되지 않도록 처리했습니다.
개발 임팩트
- 사용자에게 더 관련성 높고 단순화된 게시물 추천을 제공하여 사용자 경험(UX)을 향상시킵니다.
- 콘텐츠 발견성을 높여 블로그 내 체류 시간을 늘리고 사용자의 만족도를 제고합니다.
- 데이터 기반의 의사결정을 통해 AI 기능을 지속적으로 개선할 수 있는 프레임워크를 구축합니다.
커뮤니티 반응
- (언급되지 않음)
톤앤매너
전문적이고 실용적인 기술 분석 및 구현 가이드
📚 관련 자료
Astro
콘텐츠의 기반이 되는 프레임워크로, Astro의 아키텍처와 컴포넌트 기반 개발 방식이 유사 게시물 컴포넌트 구현에 직접적인 영향을 미칩니다.
관련도: 95%
vectorbt
파이썬 기반의 금융 분석 라이브러리이지만, 효율적인 벡터 연산 및 유사도 계산 관련 아이디어를 얻을 수 있으며, 임베딩 벡터를 활용한 분석 접근 방식에 대한 영감을 줄 수 있습니다.
관련도: 70%
fastText
텍스트 분류 및 임베딩을 위한 라이브러리로, 이 글에서 다루는 '임베딩 벡터' 개념과 코사인 유사도 계산의 기초가 되는 텍스트 표현 방식에 대한 이해를 높이는 데 도움이 될 수 있습니다.
관련도: 60%