GN⁺: 임베딩 기술은 저평가 되었음
(technicalwriting.dev)- 머신러닝(ML)은 기술 문서 작성에서 최신 기술을 발전시킬 잠재력이 있음
- Claude, Gemini, LLaMa, GPT 등과 같은 텍스트 생성 모델이 아닌 임베딩이 기술 문서 작성에 가장 큰 영향을 미칠 수 있는 ML 기술
- 임베딩은 정확히 새로운 것은 아니지만 최근 몇 년 동안 훨씬 더 널리 접근할 수 있게 되었음
- 임베딩은 기술 작가에게 이전에는 불가능한 규모로 텍스트 간의 연결을 발견할 수 있는 능력을 제공함
임베딩에 대한 직관 쌓기
입력과 출력
- 임베딩을 만들기 위해 입력하는 것은 텍스트
- 매번 동일한 양의 텍스트를 제공할 필요는 없음
- 때로는 단일 문단이 입력이고, 다른 때에는 몇 개의 섹션, 전체 문서 또는 여러 문서일 수도 있음
- 출력은 숫자의 배열
- 단일 단어를 입력하면 출력은
[-0.02387, -0.0353, 0.0456]
과 같은 숫자 배열 - 전체 문서 세트를 입력하면 출력은
[0.0451, -0.0154, 0.0020]
과 같은 형태
- 단일 단어를 입력하면 출력은
- 입력의 크기에 관계없이 항상 동일한 수의 숫자를 얻음
- 이를 통해 임의의 두 텍스트를 수학적으로 서로 비교할 수 있는 방법을 얻게 됨
- 실제 임베딩에서는 배열에 3개가 아닌 수백 또는 수천 개의 숫자가 있음
임베딩을 만드는 방법
- 대형 서비스 제공업체들이 임베딩 생성을 쉽게 만들어줌
- Gemini의
text-embedding-004
모델은 768개의 숫자 배열을 반환하고, Voyage AI의voyage-3
모델은 1024개의 숫자 배열을 반환함 - 서로 다른 제공업체의 임베딩은 호환되지 않음
비용이 많이 드나요?
아니요.
환경에 나쁜가요?
- 임베딩 생성은 텍스트 생성보다 계산 집약적이지 않음
- 그러나 임베딩 모델은 텍스트 생성 모델과 유사한 방식으로 학습되는 것으로 보이며, 이는 에너지 사용을 의미함
- 더 알게 되면 이 섹션을 업데이트할 예정
어떤 모델이 가장 좋나요?
- 이상적으로는 임베딩 모델이 완전한 페이지에 대한 임베딩을 생성할 수 있도록 방대한 양의 입력 텍스트를 받아들일 수 있어야 함
- 2024년 10월 기준으로 입력 크기 면에서
voyage-3
가 가장 우수해 보임 - 입력 제한은 토큰 기반이며 각 서비스는 토큰을 다르게 계산하므로 정확한 숫자에 너무 많은 비중을 두지 말아야 함
매우 이상한 다차원 공간
- 임베딩 숫자의 의미는 무엇인가?
-
지도 상의 좌표에 대해 생각해 보기
- 임베딩은 지도 상의 점과 유사함
- 임베딩 배열의 각 숫자는 X좌표 및 Y좌표와 유사한 차원
- 임베딩 모델이 1000개의 숫자 배열을 반환하면 텍스트가 다른 모든 텍스트에 상대적으로 의미론적으로 1000차원 공간에 존재하는 지점을 알려주는 것
- 두 임베딩 사이의 거리를 비교할 때 실제로 하는 일은 두 텍스트가 서로 얼마나 의미론적으로 가깝거나 떨어져 있는지 파악하는 것
- 관련 항목이 서로 가깝게 군집을 이루는 이러한 다차원 공간에 항목을 배치하는 개념을 latent space라고 함
-
Word2vec 논문의 유명한 예제:
- embedding("king") - embedding("man") + embedding("woman") ≈ embedding("queen")
- 임베딩은 인간에게 직관적으로 느껴지는 방식으로 의미론적 관계를 나타낼 수 있음
- 임베딩은 수백 또는 수천 개의 차원에서 작동하므로 3차원 생물체가 1000차원에서 "거리"가 어떻게 보이는지 시각화하는 것은 불가능함
- 각 차원이 무엇을 나타내는지 알 수 없음
임베딩 비교
- 임베딩을 생성한 후에는 각 임베딩이 어떤 텍스트와 연결되어 있는지 추적하기 위해 일종의 "데이터베이스"가 필요함
- 선형 대수학이 많이 관여되며, NumPy 및 scikit-learn과 같은 수학 및 ML 라이브러리가 무거운 작업을 수행할 수 있음
응용 프로그램
- 임베딩으로 기술 문서 작성의 최신 기술을 어떻게 발전시킬 수 있을지 직접 알아보기
수천 개의 임베딩이 꽃 피도록 하기
- 문서 사이트 소유자로서 REST API 또는 잘 알려진 URI를 통해 콘텐츠에 대한 임베딩을 원하는 사람에게 자유롭게 제공해야 하는지 궁금함
- 커뮤니티가 이 추가 유형의 문서 데이터로 어떤 멋진 것을 구축할 수 있는지 알 수 없음
맺음말
- 3년 전에 768차원 공간이 무엇인지 물었다면 물리학자와 수학자가 알 수 없는 이유로 필요로 하는 추상적 개념일 뿐이라고 말했을 것
- 임베딩은 이 아이디어에 대해 더 깊이 생각하고 실제로 자신의 작업에 적용할 이유를 제공
- 문서 유지 관리 능력에 대한 규모의 개선은 여전히 가능할 수 있으며, 아마도 차수가 더 많은 차원이 필요할 것!
부록
구현
- 각 문서에 대한 임베딩을 생성하기 위한 Sphinx 확장 생성
- 빌드가 완료되면 임베딩 데이터가
embeddings.json
에 저장됨 - 각 문서에 대해 가장 가까운 이웃을 찾는 것이 마지막 단계
- 선형 대수학 기초는 Linear Algebra for Machine Learning and Data Science에서 배움
결과
- 데이터를 해석하는 방법:
-
Target
은 현재 보고 있는 페이지 -
Neighbor
는 추천 페이지가 될 것
-
- 결과 표에서 관련 페이지들이 서로 추천되고 있음을 확인할 수 있음
GN⁺의 의견
- 임베딩 기술은 기술 문서 작성 분야에서 콘텐츠 간 연관성을 파악하고 문서 간 연결을 발견하는데 큰 도움이 될 것으로 보임. 특히 방대한 양의 문서를 다뤄야 하는 대규모 문서 프로젝트에서 더욱 유용할 것임
- 다만 임베딩 모델은 여전히 에너지 소비가 큰 편이고, 윤리적인 우려도 있으므로 도입 시 신중한 검토가 필요해 보임. 충분한 컴퓨팅 자원 확보와 함께 임베딩 생성의 환경적 영향을 최소화하기 위한 노력이 뒷받침되어야 할 것
- 문서 사이트에서 임베딩을 API로 제공하는 것은 개발자 커뮤니티의 창의적인 활용을 촉진할 수 있는 좋은 방안이 될 수 있음. 하지만 데이터 보안 및 개인정보 이슈에 대한 대책 마련이 선행되어야 함
- 기술 문서 분야의 스타트업이나 이니셔티브에서 임베딩 기술을 적극 도입해 볼 만함. 기존 문서 관리 솔루션과의 차별화된 기능을 제공하고 검색, 추천 등에서 보다 인간 친화적인 경험을 제공할 수 있을 것
- 임베딩을 문서 요약, 번역, 토픽 분류 등에 활용하는 연구도 기대해 볼 만함. 최신 자연어 처리 기술과 임베딩을 결합하면 기술 문서 작성과 관리에 혁신을 가져올 수 있을 것
자연어 처리 쪽에서 활용되는 텍스트 임베딩과 훈련과정을 보면 인간이 문법을 거의 모르는 상태에서 언어를 습득하고 구사할 때의 과정과 정말 유사하다는 생각이 들더라구요.
본문에서 말하는 것 처럼 많은 잠재력이 있다고 생각합니다.
Hacker News 의견
-
현대 AI에서 임베딩이 인간에게 더 많은 힘을 주는 유일한 요소로 흥미로움. 이는 스티브 잡스가 말한 "우리의 마음을 위한 자전거"와 같으며, 지능 증폭을 의미함. 컴퓨터 사용성에서 가장 큰 발전은 빠르고 보편적인 로컬 검색의 도입이었음. Firefox의 "페이지에서 찾기" 기능을 자주 사용하며, 검색과 grep을 매일 사용함. 임베딩은 실제로 유용한 퍼지 검색을 제공하여 검색의 가장 큰 약점을 해결할 가능성이 있음
-
문서 사이트 소유자로서, REST API 또는 잘 알려진 URI를 통해 임베딩을 자유롭게 제공하는 것을 고려해야 할지 궁금함. 어떤 임베딩 모델을 사용했는지 명확히 해야 하며, 기술 문서에 적합한 임베딩 모델이 있는지에 대한 질문이 있음
-
환경에 대한 우려가 있지만, AI 사용을 줄이는 것이 기후 문제를 해결할 수 있다는 대중의 의견은 잘못된 것이라고 생각함. 예를 들어, Google Maps를 금지하면 잘못된 경로를 선택하게 되어 더 많은 연료를 소비하게 됨. 임베딩을 사용한 문서 생성도 마찬가지로, 컴퓨팅 자원을 사용하는 것이 더 효율적임
-
임베딩을 사용하여 웹 앱에서 활용하는 방법에 대한 재미있는 경험을 공유함. 문서화를 통해 프로덕션에서 임베딩을 사용하는 방법을 설명함
-
임베딩이 입력 문자열의 모든 것을 나타내어 목표가 없는 것처럼 보임. 특정 응용 프로그램을 위한 임베딩의 차원 축소 방법에 대한 질문이 있음. 예를 들어, 기술 지원 대화를 찾는 시스템을 구축할 때 대화의 내용만을 나타내는 임베딩을 도출하는 방법에 대한 궁금증이 있음
-
벡터 임베딩은 문서의 고유한 요약으로, 해시 코드와 유사함. 임베딩 생성에 대한 보편적인 표준이 있으면 좋겠지만, AI 모델마다 다르기 때문에 해시 코드와 같은 "영구성"을 가질 수 없음. 코사인 유사성 같은 알고리즘을 데이터베이스와 정보 처리 앱에서 활용할 수 있는 방법이 많을 것 같음
-
임베딩이 과소평가되고 있다고 생각함. 정보 검색/발견 분야가 여전히 키워드 기반 발견을 사용하고 있으며, 현대 도구인 의미 기반 발견을 수용하지 않고 있음. 문장을 벡터 임베딩으로 변환하고 k-means 클러스터링을 적용하여 ChatGPT로 요약하는 방법을 사용하여 시간을 절약함
-
기술 작가들이 임베딩의 유용성을 과소평가하고 있다고 제안함. 머신러닝 실무자들은 임베딩을 과소평가하지 않음
-
OpenAI 임베딩 모델이 8191/8192 토큰을 지원하는지에 대한 질문이 있음. 토큰 크기로 승자를 선언하는 것은 오해의 소지가 있으며, 교차 언어 지원과 정밀도 같은 더 중요한 요소가 있음
-
임베딩이 과대평가되었다고 생각하며, 이는 많은 사람들이 기대했던 만능 해결책이 아님. BM25 같은 간단한 방법을 완전히 대체하지 않으며, 제한된 의미 이해만을 제공함. 높은 기대가 임베딩이 정확히 원하는 것을 검색할 것이라는 믿음을 주지만, 결과를 면밀히 검토하지 않으면 불일치를 알아차리기 어려움