DEV, Gemini Embeddings 2로 똑똑해진 피드 공개!

by DD
1주 전
조회수 6

DEV 플랫폼은 클릭 수 중심의 피드가 아닌, 고품질 콘텐츠를 제공하기 위해 Gemini Embeddings 2를 도입

pgvector를 활용하여 사용자의 관심사를 반영하는 개인화된 피드(Personalized Feed)를 구축하고, 유사도(Similarity) 기반의 콘텐츠 추천을 구현

Ai::Base 및 Ai::Embedding 래퍼 클래스를 통해 유연하고 감사 가능한 아키텍처를 구축하고, 모델 사용 내역 및 비용 추적을 용이하게 함

TrendDetector를 활용하여 최신 트렌드를 감지하고, Gemini API를 통해 핵심 토론 내용을 요약하여 사용자에게 제공

텍스트뿐 아니라 이미지, 오디오, 비디오 등 멀티모달(Multimodal) 데이터를 처리할 수 있도록 시스템을 미래 지향적으로 설계

Gemini Embeddings 2를 활용한 개인화 피드 아키텍처

DEV는 Gemini Embeddings 2(Gemini Embeddings 2)를 활용하여 사용자의 관심사를 반영하는 개인화된 피드를 구축했다. 사용자의 상호작용을 통해 생성된 interest_embedding을 pgvector를 사용하여 PostgreSQL(PostgreSQL) 쿼리에 직접 주입한다.

Cosine Similarity: articles.semantic_embedding과 user_interest 간의 코사인 유사도(Cosine Similarity)를 계산하여 관련성 높은 콘텐츠를 추천

FeedConfig: FeedConfig를 통해 SQL 쿼리를 컴파일하여 게시물 점수를 매기고 순위를 결정

유연성 확보: Ai::Base 및 Ai::Embedding 래퍼 클래스를 사용하여 API 호출을 캡슐화하고, 감사 추적(Audit Trail)을 용이하게 함

이러한 아키텍처는 사용자 관심사 기반의 콘텐츠 추천과 함께, 다양한 소셜 시그널(Social Signal)을 통합하여 균형 잡힌 피드를 제공한다.

Gemini Embeddings 2의 멀티모달 지원과 미래 확장성

Gemini Embeddings 2는 텍스트뿐만 아니라 이미지, 오디오, 비디오 등 멀티모달(Multimodal) 입력을 지원하여 DEV 플랫폼의 미래 확장성을 확보했다. 기존 텍스트 기반 임베딩 모델과 달리, Gemini Embeddings 2는 3,072차원의 벡터(Vector)를 사용하여 모든 유형의 데이터를 단일 의미 공간에 매핑한다.

미래 지향적 설계: 이미지, 오디오, 비디오 게시물을 동일한 데이터베이스 아키텍처에서 처리 가능

코드 변경 최소화: 새로운 유형의 콘텐츠가 추가되어도 피드 로직을 재작성할 필요 없음

개념적 관련성 기반 추천: 사용자의 interest_embedding을 기반으로 관련 튜토리얼, 팟캐스트 에피소드 등을 추천 가능

이러한 멀티모달 지원은 DEV 플랫폼이 다양한 콘텐츠 형식을 수용하고, 사용자 경험을 지속적으로 개선하는 데 기여할 것이다.

TrendDetector를 활용한 트렌드 감지 및 요약

DEV는 TrendDetector를 사용하여 시의적절하고 구체적인 토론을 감지하고, Gemini API를 통해 핵심 내용을 요약한다. 이는 태그 기반 분류의 한계를 보완하고, 최신 트렌드를 효과적으로 파악하기 위한 전략이다.

클러스터링 알고리즘: 6시간마다 실행되는 백그라운드 작업으로, 리더 클러스터링(Leader Clustering) 알고리즘을 사용하여 게시물을 클러스터링

유사도 측정: 코사인 거리를 기반으로 게시물 간의 유사성을 측정하고, 0.15 이하인 경우 기존 클러스터에 추가

Gemini API 활용: 클러스터에 10개 이상의 게시물이 포함되면 Gemini API를 호출하여 핵심 토론 내용을 요약

이러한 과정을 통해 DEV는 커뮤니티의 최신 트렌드를 파악하고, 사용자에게 관련성 높은 정보를 제공할 수 있다.

유연하고 감사 가능한 아키텍처 구축

DEV는 Ai::Base 및 Ai::Embedding 래퍼 클래스를 활용하여 유연하고 감사 가능한 아키텍처를 구축했다. 이는 코드베이스 전반에 걸쳐 API 호출을 직접 사용하는 대신, 추상화 레이어를 도입하여 시스템의 유지보수성과 확장성을 높이는 데 기여한다.

Ai::Base 및 Ai::Embedding: API 호출을 캡슐화하고, 각 서비스가 래퍼를 통해 API에 접근하도록 설계

AiAudit 모델: 벡터 생성 및 트렌드 분석 시 사용된 모델, 호출자 클래스, 페이로드, 지연 시간, 토큰 수를 기록하여 감사 추적(Audit Trail)을 제공

디버깅 및 비용 추적: 감사 로그를 통해 문제 해결 및 비용 관리를 용이하게 함

이러한 아키텍처는 코드의 가독성(Readability)을 향상시키고, 시스템의 변경에 유연하게 대응할 수 있도록 돕는다.

DEV 플랫폼의 커뮤니티 중심 접근 방식

DEV는 Gemini Embeddings 2를 활용하여 커뮤니티 중심의 피드를 구축하고, 사용자 참여를 유도한다. 이는 단순히 알고리즘에 의존하는 것이 아니라, 사람의 판단과 기여를 결합하여 플랫폼의 가치를 높이는 전략이다.

인간 큐레이션(Human Curation): 커뮤니티 및 편집진의 큐레이션을 통해 고품질 콘텐츠를 보장

벡터 검색(Vector Search) 활용: Gemini Embeddings 2를 통해 유사 콘텐츠를 추천하고, 사용자의 관심사를 반영

개발자 중심 플랫폼: 코드 공유 및 토론을 위한 최고의 공간을 만들기 위해 노력

이러한 접근 방식은 DEV 플랫폼이 지속적으로 성장하고, 개발자 커뮤니티에 기여하는 데 중요한 역할을 한다.

How we're using Gemini Embeddings to build a smarter, community-driven feed on DEV

댓글 0

첫 번째 댓글을 남겨보세요!