1P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 임베딩은 최근 기술 글쓰기 분야에서 혁신적인 발전 가능성을 제공함
  • 입력 텍스트의 크기와 상관없이 고정된 차원의 수치 배열을 반환하는 특징이 있음
  • 이 수치 배열을 통해 임의의 텍스트 간의 수학적 비교가 가능해짐
  • 임베딩은 다차원 공간에서 텍스트 의미에 따른 거리를 계산하며, 관계성 추천, 의미 분석 등 다양한 활용이 가능함
  • 앞으로 기술 문서 사이트들이 임베딩 데이터를 공개함으로써 새로운 도구와 커뮤니티 활용 사례가 확대될 전망임

머신러닝 기반 임베딩 기술 개요

  • 머신러닝 기술에서 텍스트 생성 모델과 달리 임베딩은 기술 글쓰기에 혁신적인 영향을 미칠 잠재력을 지님
  • 최근 몇 년간 임베딩 사용이 훨씬 더 접근 가능함으로 변화됨
  • 임베딩을 통해 기술 작가들은 다양한 텍스트 간의 의미적 비교 및 분석 수행이 가능해짐

임베딩에 대한 직관 쌓기

  • 임베딩은 텍스트(단어, 문장, 여러 문서 등)를 입력하면 고정 크기의 수치 배열을 반환함
  • 입력 텍스트의 길이와 무관하게 항상 동일한 크기의 배열 데이터가 생성됨
  • 이로 인해 서로 다른 길이의 임의 텍스트 간에도 수학적 비교 가능성이 생김

임베딩 생성 방법

  • 주요 서비스 제공자를 통해 코드 몇 줄만으로 임베딩을 생성할 수 있음
  • 사용되는 모델에 따라 임베딩의 배열 크기가 다르며, Gemini의 경우 768개, Voyage AI의 경우 1024개의 수치가 반환됨
  • 제공자나 모델에 따라 임베딩의 의미가 완전히 다르기 때문에 상호 호환성 결여됨

비용 및 환경 영향

  • 임베딩 생성 자체는 비용이 크지 않음
  • 생성 과정은 텍스트 생성 모델에 비해 연산 자원 소모가 낮음으로 추정되나, 환경 영향은 추후 더 많은 정보가 필요함

임베딩 모델 선택 기준

  • 가장 적합한 모델은 대용량 입력 데이터 지원 가능성에 따라 달라짐
  • Voyage AI의 voyage-3는 2024년 기준 가장 높은 입력 한도를 제공함
  • 사용 목적 및 필요에 맞는 모델 선택이 중요함

다차원 공간 개념

  • 임베딩 수치 배열의 각 값은 다차원 공간의 한 좌표에 해당하며, 이 공간의 의미적 위치로 텍스트 특징이 표현됨
  • 예를 들어 ‘king’ - ‘man’ + ‘woman’ ≈ ‘queen’과 같은 연산이 의미적 관계 표현 가능성을 보여줌
  • 임베딩 공간의 각 차원 특징은 대부분 불명확하며 추상적임
  • 이 과정을 통해 기계의 의미 학습 및 텍스트 의미 추론이 가능해짐

임베딩 비교 및 저장

  • 생성된 임베딩은 각 텍스트(예: 페이지 등)별로 데이터베이스 등에 저장함
  • 두 임베딩 간 수학적 거리 계산(선형대수 이용)으로 의미적 유사성 판단이 가능함
  • NumPy, scikit-learn 등 라이브러리 활용으로 복잡한 수식 구현 부담이 적음

임베딩의 응용 예시

  • 기술 문서 사이트에서 관련 페이지 추천 기능에 임베딩이 효과적으로 활용됨
  • 각 페이지별 임베딩 생성 후, 수치적 유사성이 높은 페이지끼리 의미적으로 연관된 문서 추천이 가능함
  • 페이지 내용을 변경할 때마다 임베딩만 새로 고치면 되어 효율성이 뛰어남
  • 실제 [Sphinx] 문서에 적용한 결과 긍정적인 성능 확인됨

커뮤니티 및 오픈 데이터 가능성

  • 향후에는 문서 사이트가 REST API나 well-known URIs를 통해 임베딩 데이터를 제공할 수 있음
  • 이를 통해 커뮤니티가 다양한 응용 도구와 서비스 개발이 가능함

맺음말

  • 수백 차원 공간 개념을 일상 업무와 연결해볼 계기가 되어 흥미로움
  • 임베딩 도입으로 문서 유지보수 및 기능 확장 등에서 획기적인 발전 가능성을 기대할 수 있음
Hacker News 의견
  • 안녕하세요, 제가 이 글을 작성했음에 감사함을 전하고 싶음
    6개월 전에도 비슷한 논의가 있었음을 알림
    "임베딩이 과소평가되고 있다"는 말은 머신러닝 종사자보다는 기술 작가들에게 유용한 도구임을 강조한 것임
    이 글에서 정확히 어떻게 임베딩을 기술 작문에 활용하는지에 대한 상세 내용이 부족함을 인지하고 있음
    임베딩 활용에 관한 프로젝트와 블로그 포스트를 준비 중임
    임베딩은 기술 작문에서 풀기 어려운 3가지 문제를 해결하는 데 도움을 줄 수 있기 때문에 중요함

    • 사용자가 원하는 정보를 쉽게 찾지 못하는 문제에 대해 임베딩을 공개적으로 경험할 수 있도록 UX 레이어로 "semantic scrolling"을 적용해봄
      검색이라기보다는 <details>/<summary> 트리 구조로 클러스터를 거닐 수 있음
      [1]은 시작 지점이며, [2]는 전체 컬렉션(책, 영화, 음악, 애니메이션 등)임
      링크도 공유함

    • 포스트가 머신러닝 전문가보다는 기술 작가들에게 더 매력적으로 다가갈 수 있도록 내용을 구성하는 것이 좋겠음
      예를 들어, "이전에 불가능했던 규모로 텍스트 간의 연결성을 발견할 수 있다"는 부분을 더 자세하게 설명하면 좋겠음
      응용 예시를 더 앞부분에 두면 독자들에게 효과적으로 전달될 것임

    • 임베딩의 기술 작문에 직접적인 응용 예시로 관련 논문을 추천함
      링크 제공

    • 이 글을 읽고 결과물의 품질이 어땠는지 궁금함
      머신러닝 쪽에서 좋아하는 평가(evals)까지 가지 않아도, 대략적으로 결과가 합리적이라고 느껴지는지 알고 싶음

    • 글을 읽었으나 "임베딩"이 무엇인지에 대한 설명을 찾지 못했음
      3번째 단락에서 활용 방법을 말하지만, 임베딩 자체에 대한 정의가 앞부분에 부족함

    • 초보자에게는 너무 기초적인 글로 느껴짐
      읽고 나서 새로운 정보나 통찰을 얻지 못함
      임베딩의 핵심적인 활용 예를 맛보기로라도 보여줬으면 더 다음 글을 기대할 수 있었을 것 같음
      공유해줘서 고맙게 생각함

  • 임베딩과 임베딩 검색의 또 다른 장점은 클라이언트 측에서 부담 적게 구현할 수 있다는 점임
    ONNX 모델은 transformer.js로 로딩 및 실행 가능함
    hnsw 같은 인덱스를 만들어 정적으로 호스팅할 수도 있음
    직접 오픈소스 데모도 만들었음
    인덱스를 queryable parquet 파일로 표현하고 duckdb로 질의하면 됨
    Github Pages를 사용하면 무료 혹은 거의 무료로 가능함

    • 클라이언트 단에서 JS로 임베딩을 할 수 있다는 것은 새로운 발견임
      문서 사이트에 새로운 응용이 열릴 것 같아 기대됨
      Parquet와 Polars는 이전에 읽었던 글로 인해 주목하게 되었음

    • 이런 구현에 대해 궁금한 점이 있었음
      임베딩 기반 검색의 지연(latency)이 걱정되어 도입을 망설여왔음
      모델을 로컬에 두고 렌더하려면 품질이 OpenAI/Google에 비해 어떤지 궁금함
      무료/즉시성은 장점임

    • 데모에서 어떤 일이 일어나고 있는지 자세히 설명해주면 좋겠음
      결과가 이해가 잘 되지 않음

  • "임베딩은 입력 텍스트 크기와 상관없이 항상 같은 크기의 숫자 배열을 반환하므로, 임의의 텍스트를 서로 수학적으로 비교할 수 있다"는 부분이 더 명확히 설명되었으면 함
    해시 함수도 입력 크기와 상관없이 동일한 크기 결과를 내지만, 그 수학적 비교와 임베딩의 비교는 의미가 완전히 다름
    임베딩은 학습 과정에 따라 품질이 결정됨을 강조할 필요가 있음
    임의의 텍스트에 대해 의미 있는 비교가 가능한 "범용 임베딩"은 존재하지 않음

    • 피드백에 감사함을 전하며, Gecko, NV-Embed, Gemini Embedding 등 관련 논문들을 읽고 있어 앞으로 더 정확하게 글을 보완할 예정임
      링크도 함께 공유함
  • 임베딩이 해시처럼 대용량 입력을 압축하여 표현하지만, 해시와 달리 임베딩은 내재적 의미를 가짐
    그렇다면 임베딩에서 역으로 비슷한 의미의 텍스트를 생성하는 "크래킹" 연구가 있는지 궁금함
    LLM 출력에서 다음 토큰 평가에 임베딩과의 유사도나 방향성 변화를 포함할 수도 있을 것 같음
    저자가 언급한 임베딩 벡터 간 연산처럼 전체 문단/책 같은 대규모 텍스트에도 "의미 대수학"을 적용 가능할지 상상해봄
    "친화력" 같은 핵심 개념을 벡터화해서 기존 텍스트에 더하는 것도 가능할지 궁금함

    • "임베딩에서 역으로 의미 비슷한 텍스트를 생성하는 것"은 embedding inversion 혹은 Universal Zero-shot Embedding Inversion이라 불림
      관련 논문도 존재하고, 이미지에서 CLIP 임베딩 활용한 diffusion도 연관됨

    • 임베딩은 대략적으로 말하자면 퍼지 해시(fuzzy hashes)의 역할과 유사함

    • 본 분야 전문가는 아니나, inference-time intervention이라는 연구도 관련 있음
      논문 링크 첨부함

  • "임베딩을 활용해 기술 작문에서 최고 수준의 발전을 이룰 수 있다"는 말이 구체적이지 않아 독자로서 도움이 되지 않음
    기술 문서를 읽거나 쓸 때 일반적으로 "비슷한 페이지" 위젯을 원한 적이 없음

    • 논지(Thesis)는 두 번째 단락에 나와 있음
      임베딩은 기술 작가가 이전에는 발견 불가능했던 방식으로 텍스트 간의 연결을 찾게 해줌
      포스트가 실질적으로 이 논지를 예시로 보여주지 못한 점은 인정함
      여러가지 기술 작문 난제를 임베딩이 해결할 수 있다고 생각하며, 직접적인 예시는 추후 다룰 예정임

    • 연관 문서를 떠나, 기술 문서는 뛰어난 검색이 매우 유익함
      임베딩은 "퍼지 매칭"에 특히 유용하며, 사용자가 정확히 단어를 기억하지 못해도 실질적으로 원하는 기능을 찾아냄
      키워드 검색과 벡터 유사도 검색을 혼합하는 하이브리드 접근이 효율적임
      구체적인 활용 예시를 더 찾고 싶음

  • 2차원 지도 비유는 이해를 돕는 좋은 출발점이지만, 임베딩은 수백~수천 차원에서 작동함
    각 차원이 어떤 의미를 갖는지도 명확하지 않으며, 'king - man + woman = queen' 예시는 "젠더 개념을 가진 차원"이 있기 때문이 아니라 "특정 방향"이 존재하기 때문임
    n차원에서 거의 직교하는 방향은 지수적으로 다양하게 존재함
    1000차원 공간에 수십억 개념을 담을 수 있는 이유임

    • 실제 arXiv 논문에서 임베딩에 남성 단어 1000개를 넣으면 여성 단어 950개를 정확히 찾는 일은 일어나지 않음
      20개 정도는 가시적으로 모아지지만, 차원이 많아서 투영하면 무엇이든 "맞게" 보일 수 있음
      N이 커지면 결과가 불명확해지기 쉬움
      트랜스포머 기반 임베딩은 문맥을 고려하므로 기존 워드 벡터보다 훨씬 우수함
      전체 텍스트 검색에서도 동의어 처리 등에서 문맥 인식 임베딩이 기존 50년간 시도된 정보 검색 분야의 문제를 효과적으로 해결함

    • 자세한 비판에 감사함을 전하며, 단일 차원이 개념과 일대일로 매핑되는 것처럼 설명한 부분이 개념적 오류였음을 인정함
      코사인 유사도 동작 원리와 함께 개념을 더 다듬어 포스트를 수정하겠음
      댓글 덕분에 내 사고의 질이 향상됨을 느낌

    • "거의 직교하는 차원들"보다는 "거의 직교하는 방향들"이 정확한 표현임을 강조함

    • Johnson-Lindenstrauss lemma 관련 정보와 함께, 임베딩의 차원 유지 및 거리 보존 정밀도에 관해 궁금증이 있음
      10% 오차로 거리 보존하려면 약 1만8천 차원이 필요함
      위키 링크도 안내함

    • 더욱 정확하게는 "거의 직교하는 차원들"이 아니라 "거의 직교하는 방향들"임을 지적함

    • 개별 차원이 의미 있는 개념과 일치한다면, 예를 들어 젠더 차원이 있다면 "king"과 "queen" 차이가 단일 차원에만 존재함을 쉽게 알아낼 수 있음
      여러 개념마다 차원이 다르면 그 차이에 따라 직관적으로 개념을 추적할 수 있음

    • 거의 직교 벡터 개념에 관한 좋은 아티클 소개함
      링크 공유함

    • 각 차원을 이진수처럼 취급해 2^n개의 방향을 인코딩할 수 있다는 원리인지, 혹시 오해하고 있는지 궁금함

    • 만일 성별이 두 개의 차원으로 표현된다면, "성별이 다르다"와 "각 차원이 다른 성분을 가진다"를 구분할 수 없는 것 아닌지 질문함

    • 시각화는 불가능할지라도 유클리드 거리는 계산할 수 있음
      UMAP 같은 도구로 차원을 줄일 수 있음

    • king-man+woman=queen 예시와 관련하여, 벡터 합 연산이 항상 바라는 대로 동작하지 않을 수 있음
      단일 벡터 방향 및 크기만으로 의미가 제한 될 수 있으며, 네트워크가 비선형 행동을 학습하므로 시작점에 따라 의미가 달라질 수 있음
      실험적 증거 없이 단순 벡터 연산으로 일반화하는 데는 한계가 있음

  • 임베딩은 알파벳이나 숫자처럼 보편성으로의 새로운 도약임
    링크 공유함

  • 전문가에게 질문함
    임베딩이 콘텐츠, 즉 의미 자체를 벡터로 담고 있다면 "스타일"만을 위한 별도 벡터가 존재하는지 궁금함
    스타일로 문체를 분석하는 연구에서도 임베딩이 쉽게 쓸 수 있으면 큰 진전이 될 것 같다는 생각임

    • 스타일이 비슷한 데이터셋이 있다면 스타일만을 위한 임베딩을 학습해서 만들 수 있음
  • 임베딩 활용에 전적으로 동의함
    Recallify라는 걸 개발하며 온라인에서 읽은 희귀한 정보도 빠르게 다시 찾아낼 수 있게 되었음
    1024차원만 써도 키워드가 아닌 의미 유사성으로 내용을 효과적으로 연결해냄
    모호한 개념을 실행 가능한 인사이트로 바꾸는 데 있어 혁신적인 도구임
    iOS 앱 베타 테스터도 모집 중임

  • 기사에서 기술 작가를 위한 직접적 활용 사례가 등장했는지 모르겠음
    임베딩은 LLM, 시맨틱 검색 등에서 매우 중요하지만, 저자가 암시하는 직접적인 효용에 대한 설명이 부족함

    • 직접적인 응용 예시는 등장하지 않았음
      후속 글과 프로젝트로 다양한 임베딩 활용을 다루려고 했으나 최근 육아(3개월 아기)로 인해 밀렸음
      추후 관련 프로젝트와 글을 준비 중이며, 임베딩은 기술 작문에서 중요한 3가지 난제를 해결하는 데 도움이 됨

    • 임베딩의 실제적 활용은 시맨틱 검색, 분류, 클러스터링임
      검색 분야에서 10년에 한 번씩 큰 발전이 이뤄짐
      임베딩을 만들어 기존 ML 알고리즘에 넣으면 효과적으로 분류 가능함
      Bag-of-Words 방식은 이제 결과가 미흡하며, 임베딩+간단한 알고리즘만으로도 좋은 클러스터를 얻을 수 있음
      가까운 벡터 찾기도 선형대수라기보다 점곱 정도면 충분함

    • 임베딩을 활용해 논문, 문헌 등을 의미적으로 검색하는 것이 매우 유용할 것임
      그러나 임베딩 자체에는 출처 정보가 포함되어 있지 않아 RAG 검색에서는 근원 페이지로만 연결 가능함
      인용, 인증 문제는 여전히 남음
      GraphRAG 등 그래프 기반 인용 모델이 더 발전적임

    • 임베딩 기반 시맨틱 검색으로 RSS 피드 분류기를 만들었음
      임의의 카테고리 기반 분류도 가능함
      현재는 AWS 퇴사로 서비스는 내려감