AI에 관심이 있는 개발자라면 Embedding(임베딩)부터 시작해보세요! 😉

:pytorch:PyTorchKR:kr:

  • 최근 AI와 관련된 앱 개발에 관심이 있는 개발자라면, 벡터 임베딩(vector embeddings)이 좋은 출발점이 될 수 있습니다. 임베딩은 텍스트나 이미지와 같은 비정형 데이터를 압축한 숫자의 배열로, 검색과 추천 등에 사용할 수 있습니다. HackerNews에 소개된 이 글에서는 벡터 임베딩을 사용하여 어떻게 검색 경험을 향상시킬 수 있는지, 그리고 어떠한 기술 스택을 선택했는지 등을 설명하고 있습니다.


소개

임베딩은 검색 및 추천 시스템에서 유사성을 측정하는 데 유용합니다. 예를 들어, 영어가 아닌 일본어나 프랑스어와 같은 다양한 언어의 입력에도 효과적으로 반응할 수 있습니다. 특히, 이 글에서는 PostgreSQL 확장 기능인 Pgvector를 사용하여 임베딩을 저장하고 조회하는 방법을 소개합니다. Pgvector는 기존의 SQL 로직과 임베딩 작업을 결합할 수 있는 강력한 도구로, 별도의 서비스 추가 없이도 데이터베이스 내에서 임베딩을 관리할 수 있습니다.

저자는 임베딩 활용을 위해 사용 가능한 다양한 도구들의 옵션 중, 몇 가지 옵션들을 선택하고 설명하고 있습니다. 저자가 강조하는 요점은 다음과 같습니다:

  • 벡터 임베딩은 임의의 입력과 보유하고 있는 데이터들 사이의 유사성을 측정하는데 주로 사용됩니다. 이러한 유사성은 검색 및 추천에 적합하며, 서로 다른 언어들 사이에서도 동작합니다.

  • PostgreSQL의 확장 기능인 Pgvector을 활용하여 임베딩 검색과 비즈니스 로직을 통합합니다. 이는 벡터 데이터베이스가 가장 빠르지는 않지만, 여러 데이터 소스간 결과를 비교할 필요 없이 단일 시스템에서 관리할 수 있는 이점을 제공합니다.

  • LLM과는 다르게, 임베딩 작업은 (우리가 그동안 다뤄왔던) 일반적인 결정론적 코드처럼 느껴집니다.

  • 벡터 임베딩 모델: OpenAI의 임베딩 모델을 사용하여 텍스트 입력에서 벡터 임베딩을 출력으로 전환합니다. 이는 다양한 검색 쿼리에 대해 코사인 유사도를 기반으로 결과를 제공합니다.


저자는 이 글에서 아이콘을 쉽게 찾는데 도움을 주는 icon app을 만들었던 경험을 설명하고 있습니다. Icon App을 만들며 임베딩을 통해 아이콘 데이터를 인코딩하는 전략을 설정하고, 이를 데이터베이스에 적용하여 사용자 쿼리와의 유사성을 기반으로 검색 결과를 반환합니다. 예를 들어, 아이콘 검색 시 특정 아이콘에 대한 유사성 점수를 계산하여 가장 관련성 높은 결과를 제공합니다.

이러한 과정을 설명하며 어떠한 도구들을 선택하는 것이 나은지, 임베딩 검색은 전통적인 텍스트 매칭 검색이나 전체 텍스트 검색과 비교할 때 더 유연하고 정확한 결과를 제공할 수 있습니다. 특히, 다양한 언어로 된 입력에 대해서도 효과적으로 반응할 수 있는 장점이 있습니다.

원문에서 설명하고 있는 선택한 도구 및 선택 이유는 다음과 같습니다:

  • 벡터 데이터베이스: pgvector/Postgres를 선택했으며, MongoDB와 같은 다른 표준 데이터베이스를 포함하여 다양한 옵션이 있습니다.

  • Pgvector 클라이언트: TypeScript에서 drizzle-orm을 사용했으며, 필요에 따라 다른 클라이언트 라이브러리를 선택할 수 있습니다.

  • 데이터베이스 호스트: 앱은 Neon에서 호스팅되며, 이전에는 fly.io를 사용했었지만 현재는 Supabase와 같은 관리형 솔루션을 사용할 수 있습니다.

  • 임베딩 모델: OpenAI의 text-embedding-3-small을 선택했으며, 다른 모델을 시도하고 싶다면 Huggingface의 리더보드를 확인할 수 있습니다.

  • 임베딩 문자열: 아이콘을 가장 잘 설명하는 키와 값의 쌍을 임베딩했으며, 주요 결정 요인은 키만 임베딩할지 값도 포함할지입니다.

  • 거리 측정 기준: 코사인 유사도를 거리 함수로 사용했으며, 이는 OpenAI가 그들의 임베딩에 추천하는 방식입니다. 다른 임베딩은 다른 전략에 최적화될 수 있습니다.

  • 검색 크기: 상위 50개 결과로 쿼리를 제한했으며, 특정 거리 임계값을 설정하여 검색 범위를 조절할 수도 있습니다.

더 자세한 내용은 원문을 참고해주세요.

더 읽어보기

원본 글

PgVector 확장

이 글에 대한 HackerNews 사용자들의 반응

함께 읽어보면 좋은 :pytorch::kr:의 글들 :wink:

임베딩 및 유사도 검색

직접 설치하여 사용할 수 있는 임베딩 모델 및 도구 관련 글들

직접 설치하여 사용할 수 있는 VectorDB 및 도구 관련 글들

임베딩을 활용한 생성형 AI 서비스 및 RAG 관련 글들




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: