semantic-search

4 개의 포스트

Modernizing the Facebook Groups Search to Unlock the Power of Community Knowledge (새 탭에서 열림)

페이스북은 커뮤니티 내 방대한 정보를 사용자가 더 쉽고 정확하게 찾을 수 있도록 그룹 검색 시스템을 하이브리드 검색 아키텍처로 전면 개편했습니다. 기존의 단순 키워드 매칭 방식에서 벗어나 의미론적 이해를 더한 결과, 검색 정확도와 사용자 참여도가 크게 향상되었으며 오류율은 안정적으로 유지되었습니다. 특히 Llama 3를 활용한 자동화된 모델 기반 평가 시스템을 도입함으로써, 대규모 데이터 환경에서도 고도화된 품질 관리가 가능해졌습니다. ### 기존 커뮤니티 검색의 세 가지 마찰 지점 * **발견의 한계(Discovery):** 과거의 어휘 기반 검색은 정확한 키워드가 일치해야만 결과를 반환했습니다. 예를 들어 사용자가 '프로스팅을 얹은 작은 케이크'를 검색할 때, 게시물에 '컵케이크'라는 단어만 있다면 검색 결과에 노출되지 않는 언어적 간극이 존재했습니다. * **소비의 피로도(Consumption):** 사용자가 원하는 답을 얻기 위해 수많은 댓글을 일일이 읽고 합의된 의견을 찾아내야 하는 '노력의 세금(Effort Tax)' 문제가 발생했습니다. * **검증의 어려움(Validation):** 중고 거래나 전문적인 결정이 필요한 상황에서 커뮤니티의 집단 지성을 활용하고 싶어도, 흩어져 있는 전문 지식과 검증된 조언을 체계적으로 수집하기가 쉽지 않았습니다. ### 현대적인 하이브리드 검색 아키텍처 * **병렬 검색 전략:** 쿼리가 들어오면 토큰화 및 정규화를 거친 후, 어휘적 경로와 의미론적 경로라는 두 가지 파이프라인을 동시에 가동합니다. * **어휘적 경로 (Unicorn):** 페이스북의 역색인(Inverted Index) 시스템인 Unicorn을 사용해 고유 명사나 특정 문구가 포함된 게시물을 정확하게 찾아냅니다. * **의미론적 경로 (SSR):** 12레이어, 2억 개의 파라미터를 가진 검색 의미론적 리트리버(SSR) 모델이 쿼리를 벡터로 변환합니다. 이후 Faiss 벡터 인덱스에서 근사 최근접 이웃(ANN) 검색을 수행하여, 키워드가 겹치지 않더라도 개념적으로 유사한 콘텐츠를 추출합니다. ### MTML 아키텍처 기반의 L2 랭킹 * **특징 통합:** 검색 단계에서 수집된 후보군들을 대상으로 TF-IDF, BM25와 같은 어휘적 점수와 코사인 유사도 같은 의미론적 점수를 통합하여 분석합니다. * **다중 작업 다중 레이블(MTML) 모델:** 단일 목표가 아닌 클릭, 공유, 댓글 등 여러 사용자 참여 지표를 동시에 최적화하는 슈퍼모델 구조를 채택했습니다. 이를 통해 단순히 관련성만 높은 글이 아니라, 실제 커뮤니티에서 의미 있는 상호작용을 이끌어낼 수 있는 양질의 콘텐츠를 상위에 노출합니다. ### Llama 3 기반 자동화 평가 * **LLM 판독관 도입:** 고차원 벡터 공간에서의 검색 품질을 사람이 일일이 검증하기 어려운 한계를 극복하기 위해, Llama 3를 빌드 검증 테스트(BVT) 과정에 통합했습니다. * **정교한 품질 측정:** 검색 결과를 단순히 '좋음/나쁨'으로 나누지 않고, 주제나 도메인이 일치하는 '다소 관련 있음' 등의 세분화된 범주를 두어 검색 결과의 다양성과 미세한 관련성 개선 수치를 측정합니다. --- **실용적 제언** 방대한 커뮤니티 데이터를 다루는 서비스라면 단순 키워드 검색만으로는 사용자의 자연어 의도를 충족하기 어렵습니다. 페이스북의 사례처럼 정확도를 보장하는 **어휘적 검색**과 맥락을 파악하는 **의미론적 검색**을 병렬로 운영하고, 랭킹 단계에서 **사용자 반응 데이터(클릭, 공유 등)**를 다각도로 결합하는 하이브리드 전략이 검색 만족도를 높이는 핵심입니다. 또한, LLM을 평가 도구로 활용하면 수동 라벨링 비용을 줄이면서도 정교한 품질 관리가 가능해집니다.

Dash가 더 스마트한 AI를 위해 (새 탭에서 열림)

Dropbox Dash는 단순한 검색 시스템을 넘어 사용자의 의도를 이해하고 실행하는 에이전트형 AI로 진화하면서, 모델에 제공되는 정보를 정교하게 관리하는 '컨텍스트 엔지니어링'을 핵심 전략으로 채택했습니다. 단순히 많은 정보를 제공하는 것이 아니라 모델이 추론하고 행동하는 데 꼭 필요한 정보만을 선별하여 전달함으로써, AI의 '분석 마비' 현상과 토큰 낭비를 방지했습니다. 결과적으로 이러한 전략적 컨텍스트 관리는 모델의 판단 속도와 작업 정확도를 동시에 높이는 성과를 거두었습니다. ### 도구 정의의 최소화와 통합 인터페이스 구축 * 모델에게 너무 많은 API 호출 선택지를 주면 판단 속도가 느려지고 정확도가 떨어지는 현상이 발생했습니다. 이를 해결하기 위해 개별 서비스(Confluence, Jira, Google Docs 등)의 검색 도구를 하나로 묶은 '유니버설 검색 인덱스' 기반의 단일 도구를 구축했습니다. * Model Context Protocol(MCP)을 활용하여 도구 설명을 간결하게 유지함으로써, 모델의 컨텍스트 창(Context Window)이 사용자 요청이라는 본연의 목적에 더 많이 할애되도록 설계했습니다. * 하나의 일관된 인터페이스를 통해 정보를 검색하게 함으로써 모델의 계획 수립 과정을 단순화하고 효율성을 극대화했습니다. ### 지식 그래프를 통한 맥락적 데이터 필터링 * 단순히 여러 API에서 데이터를 가져오는 것에 그치지 않고, 검색된 결과 중 가장 관련성 높은 정보만 모델에 전달되도록 필터링 시스템을 강화했습니다. * 통합 인덱스 위에 사람, 활동, 콘텐츠 간의 관계를 연결한 '지식 그래프'를 구축하여 사용자별 맞춤형 순위 산출이 가능하게 했습니다. * 모델이 런타임에 방대한 정보를 직접 분석하는 대신, 이미 관계가 정립된 고가치 정보만 수신함으로써 추론의 질을 높이고 성능 저하를 방지했습니다. ### 복잡한 작업을 위한 전담 에이전트 도입 * 검색 쿼리 생성과 같이 복잡한 지침과 예시가 필요한 작업은 메인 모델의 컨텍스트 창을 과도하게 점유하는 문제를 일으켰습니다. * 이를 해결하기 위해 메인 에이전트는 전체적인 계획만 세우고, 구체적인 쿼리 작성은 별도의 '전담 에이전트'에게 위임하는 구조를 도입했습니다. * 역할 분담을 통해 메인 모델은 복잡한 세부 사항에 매몰되지 않고 전체 작업의 흐름에 집중할 수 있으며, 각 에이전트는 자신에게 할당된 컨텍스트 내에서 최적의 결과를 도출합니다. 효과적인 에이전트형 AI를 구축하기 위해서는 무조건 많은 데이터를 입력하기보다 모델이 처리해야 할 정보의 양과 질을 전략적으로 제어해야 합니다. 도구의 통합, 지식 그래프 기반의 정교한 필터링, 그리고 전문 에이전트로의 역할 분담은 성능 향상과 비용 절감을 동시에 달성할 수 있는 실무적인 context engineering 방안이 될 것입니다.

Figma에서 AI 기반 검색을 (새 탭에서 열림)

피그마의 AI 검색 인프라는 수십억 개의 디자인 레이어를 실시간으로 처리하고 의미론적으로 검색할 수 있도록 구축되었습니다. 대규모 벡터 데이터베이스와 멀티모달 임베딩 모델을 결합하여 단순 텍스트 매칭을 넘어 시각적 유사성을 기반으로 한 검색 경험을 제공합니다. 이 시스템은 데이터 프라이버시를 엄격히 준수하면서도 디자인 파일의 빈번한 수정을 즉각적으로 검색 결과에 반영하는 고성능 데이터 파이프라인을 핵심으로 합니다. **멀티모달 임베딩을 통한 디자인의 수치화** * 디자인 파일 내의 레이어, 텍스트, 이미지를 고차원 벡터로 변환하기 위해 멀티모달 임베딩 모델(예: CLIP 변형 모델)을 사용합니다. * 단순한 시각적 특징뿐만 아니라 디자인의 구조적 맥락과 텍스트 정보를 함께 학습하여 "로그인 페이지", "네비게이션 바"와 같은 추상적인 검색어에도 정확한 결과를 반환합니다. * AWS SageMaker를 활용해 모델 추론을 확장 가능하게 관리하며, 다양한 해상도의 이미지 자산을 효율적으로 처리하기 위한 전처리 과정을 포함합니다. **실시간 변경 사항을 반영하는 증분 인덱싱 파이프라인** * 피그마 디자인은 수시로 수정되기 때문에, 전체 데이터를 다시 인덱싱하는 대신 변경된 부분만 업데이트하는 증분(Incremental) 업데이트 방식을 채택했습니다. * 사용자가 디자인을 수정하면 해당 이벤트가 Kafka를 통해 실시간 스트리밍되며, Flink와 같은 처리 엔진을 거쳐 즉시 벡터 데이터베이스에 반영됩니다. * 이 과정을 통해 수만 명의 사용자가 동시에 작업하는 환경에서도 검색 결과와 실제 디자인 사이의 시차를 최소화합니다. **벡터 데이터베이스와 하이브리드 검색 최적화** * 대규모 벡터 검색을 위해 Pinecone과 같은 전문 벡터 데이터베이스를 활용하여 밀집 벡터(Dense Vector) 검색을 수행합니다. * 단순히 유사도만 측정하는 것이 아니라, 파일 이름, 생성 날짜, 프로젝트 위치 등 구조화된 메타데이터를 함께 필터링하는 하이브리드 검색 방식을 사용합니다. * 검색 성능을 높이기 위해 사용자별, 팀별로 데이터를 논리적으로 분할하여 검색 범위를 최적화하고 응답 속도를 밀리초(ms) 단위로 유지합니다. **엄격한 권한 관리와 데이터 격리** * AI 검색 결과는 피그마의 복잡한 권한 체계(Permissions)를 완벽히 준수해야 하므로, 검색 요청 시 실시간으로 사용자의 접근 권한을 확인하는 레이어가 포함됩니다. * 인덱싱 단계에서부터 각 벡터에 조직 및 파일 식별자(ID)를 메타데이터로 부여하여, 사용자가 접근할 수 없는 디자인 데이터가 검색 결과에 노출되는 것을 원천 차단합니다. * 데이터 보안을 위해 테넌트(Tenant) 간 데이터 격리를 보장하며, 모델 학습과 추론 과정에서도 민감한 정보가 유출되지 않도록 설계되었습니다. 피그마와 같이 데이터 업데이트가 빈번하고 권한 체계가 복잡한 환경에서 AI 검색을 구현하려면, 단순히 성능 좋은 모델을 사용하는 것을 넘어 실시간 데이터 파이프라인과 메타데이터 필터링 시스템을 정교하게 결합하는 것이 필수적입니다. 효율적인 비용 관리와 낮은 지연 시간을 동시에 달성하고자 하는 팀에게 피그마의 증분 인덱싱 및 하이브리드 검색 아키텍처는 훌륭한 벤치마킹 사례가 될 것입니다.

피그마 AI 검색의 (새 탭에서 열림)

Figma는 수십억 개의 디자인 레이어 속에서 사용자가 원하는 자산을 직관적으로 찾을 수 있도록 AI 기반의 시각적 검색(Visual Search) 기능을 도입했습니다. 이 시스템은 디자인의 시각적 특징과 맥락을 수학적 벡터 값으로 변환하는 임베딩 기술을 핵심으로 하며, 이를 통해 키워드 일치 여부를 넘어선 '의미론적 검색'을 구현했습니다. Figma는 성능과 정확도, 보안이라는 세 가지 요소를 동시에 충족하기 위해 정교한 머신러닝 파이프라인과 실시간 인덱싱 아키텍처를 구축하는 데 성공했습니다. ### 시각적 의미를 포착하는 벡터 임베딩 시스템 * **CLIP 모델의 활용**: 텍스트와 이미지를 동일한 벡터 공간에 매핑하는 CLIP(Contrastive Language-Image Pre-training) 기반 모델을 사용하여, 사용자가 입력한 검색어와 디자인 프레임 간의 유사도를 측정합니다. * **디자인 특화 데이터 처리**: 일반적인 사진과 달리 디자인 파일은 복잡한 레이어 구조를 가집니다. Figma는 검색 최적화를 위해 개별 프레임을 고해상도로 래스터화(Rasterization)하여 모델이 디자인의 시각적 요소를 정확히 이해하도록 학습시켰습니다. * **다국어 지원 및 시각적 검색**: 벡터 공간 내에서 유사도를 계산하므로, 특정 언어에 구속되지 않고 전 세계 사용자의 쿼리를 처리할 수 있으며 유사한 디자인 스타일을 찾는 이미지 기반 검색도 가능해졌습니다. ### 대규모 데이터 처리를 위한 검색 파이프라인 * **실시간 인덱싱 아키텍처**: 사용자가 디자인을 수정할 때마다 실시간으로 검색 인덱스가 업데이트되어야 합니다. Figma는 Kafka와 같은 메시지 큐를 활용해 디자인 변경 사항을 감지하고, 이를 비동기적으로 처리하여 벡터 데이터베이스에 반영합니다. * **효율적인 데이터 샘플링**: 수조 개에 달하는 레이어 전체를 인덱싱하는 대신, 의미 있는 단위인 '프레임'과 '컴포넌트'를 중심으로 인덱싱하여 저장 공간을 절약하고 검색 효율을 극대화했습니다. * **벡터 데이터베이스 운용**: 고차원 벡터 검색을 빠르게 수행하기 위해 전문적인 벡터 DB 솔루션을 도입하여, 수 밀리초(ms) 내에 수십억 개의 후보군 중 가장 유사한 결과를 반환하도록 설계했습니다. ### 보안과 권한 관리를 고려한 검색 설계 * **엄격한 테넌트 격리**: 기업 고객의 데이터 보안을 위해 각 조직의 데이터는 논리적으로 완전히 격리됩니다. AI 모델은 공유될 수 있지만, 검색 결과는 철저히 사용자가 접근 권한을 가진 범위 내에서만 노출됩니다. * **사후 필터링(Post-filtering) 메커니즘**: 벡터 검색 결과가 나오면, 시스템은 즉시 사용자의 권한(RBAC)을 확인하여 접근할 수 없는 파일은 결과에서 제외합니다. 이는 속도와 보안 사이의 균형을 맞추기 위한 핵심적인 단계입니다. * **개인정보 보호**: 학습 및 검색 과정에서 민감한 정보를 보호하기 위해 데이터 비식별화 처리를 거치며, 사용자가 자신의 데이터가 AI 학습에 활용될지 여부를 직접 선택할 수 있는 옵션을 제공합니다. 효과적인 AI 검색 시스템 구축을 위해서는 고성능 모델 못지않게 데이터의 권한 관리와 실시간 동기화 인프라가 중요합니다. 단순히 벡터 DB를 도입하는 것에 그치지 않고, 자사 서비스의 데이터 특성(Figma의 경우 프레임 단위의 계층 구조)을 모델이 어떻게 학습하게 할지 고민하는 과정이 실제 사용자 경험의 차이를 만듭니다.