임베딩
텍스트 임베딩은 의미적 유사성을 측정할 수 있게 해주는 텍스트의 수치적 표현입니다. 이 가이드는 임베딩, 그 응용 분야, 그리고 검색, 추천, 이상 탐지와 같은 작업을 위한 임베딩 모델 사용 방법을 소개합니다.
임베딩 구현 전 고려사항
임베딩 제공자를 선택할 때, 귀하의 필요와 선호도에 따라 고려할 수 있는 여러 요소들이 있습니다:
- 데이터셋 크기 & 도메인 특수성: 모델 학습 데이터셋의 크기와 임베딩하고자 하는 도메인과의 관련성. 더 크거나 도메인에 특화된 데이터는 일반적으로 해당 도메인에서 더 나은 임베딩을 생성합니다
- 추론 성능: 임베딩 검색 속도와 종단간 지연 시간. 이는 특히 대규모 프로덕션 배포에서 중요한 고려사항입니다
- 커스터마이제이션: 비공개 데이터에 대한 지속적인 학습 옵션이나 매우 특정한 도메인을 위한 모델의 특수화. 이는 고유한 어휘에 대한 성능을 향상시킬 수 있습니다
Anthropic으로 임베딩을 얻는 방법
Anthropic은 자체 임베딩 모델을 제공하지 않습니다. 위의 모든 고려사항을 포괄하는 다양한 옵션과 기능을 가진 임베딩 제공자 중 하나는 Voyage AI입니다.
Voyage AI는 최첨단 임베딩 모델을 만들고 금융과 의료와 같은 특정 산업 도메인을 위한 맞춤형 모델이나 개별 고객을 위한 맞춤 미세조정 모델을 제공합니다.
이 가이드의 나머지 부분은 Voyage AI에 대한 것이지만, 귀하의 특정 사용 사례에 가장 적합한 것을 찾기 위해 다양한 임베딩 공급업체를 평가해보시기를 권장합니다.
Voyage AI 시작하기
Voyage 임베딩에 접근하려면:
- Voyage AI 웹사이트에서 가입하세요
- API 키를 받으세요
- 편의를 위해 API 키를 환경 변수로 설정하세요:
공식 voyageai Python 패키지나 HTTP 요청을 사용하여 임베딩을 실행할 수 있습니다. 아래에서 설명합니다.
Voyage Python 패키지
voyageai
패키지는 다음 명령어를 사용하여 설치할 수 있습니다:
그런 다음 클라이언트 객체를 생성하고 이를 사용하여 텍스트를 임베딩할 수 있습니다:
result.embeddings
는 각각 1024개의 부동소수점 숫자를 포함하는 두 개의 임베딩 벡터 리스트가 됩니다.
위의 코드를 실행하면 두 임베딩이 화면에 출력됩니다:
임베딩을 생성할 때 embed()
함수에 몇 가지 다른 인수를 지정할 수 있습니다. 다음은 명세입니다:
voyageai.Client.embed(texts : List[str], model : str, input_type : Optional[str] = None, truncation : Optional[bool] = None)
- texts (List[str]) -
["I like cats", "I also like dogs"]
와 같은 문자열 리스트 형태의 텍스트 리스트. 현재 리스트의 최대 길이는 128이며, 리스트의 총 토큰 수는voyage-2
의 경우 최대 320K,voyage-large-2
/voyage-code-2
의 경우 120K입니다. - model (str) - 모델의 이름. 권장 옵션:
voyage-2
,voyage-large-2
,voyage-code-2
. - input_type (str, 선택사항, 기본값
None
) - 입력 텍스트의 유형. 기본값은None
. 다른 옵션:query
,document
- input_type이
None
으로 설정되면 입력 텍스트는 Voyage의 임베딩 모델에 의해 직접 인코딩됩니다. 또는 입력이 문서나 쿼리일 때 사용자는input_type
을 각각query
또는document
로 지정할 수 있습니다. 이러한 경우 Voyage는 입력 텍스트에 특별한 프롬프트를 추가하고 확장된 입력을 임베딩 모델에 전송합니다 - 검색/검색 사용 사례의 경우, 검색 품질을 향상시키기 위해 쿼리나 문서를 인코딩할 때 이 인수를 지정하는 것을 권장합니다.
input_type
인수를 사용하거나 사용하지 않고 생성된 임베딩은 호환됩니다
- input_type이
- truncation (bool, 선택사항, 기본값
None
) - 입력 텍스트를 컨텍스트 길이에 맞게 잘라낼지 여부.True
인 경우, 길이가 초과된 입력 텍스트는 컨텍스트 길이에 맞게 잘려서 임베딩 모델에 의해 벡터화됩니다False
인 경우, 주어진 텍스트가 컨텍스트 길이를 초과하면 오류가 발생합니다- 지정되지 않은 경우(기본값
None
), 입력 텍스트가 컨텍스트 윈도우 길이를 약간 초과하면 Voyage는 임베딩 모델에 보내기 전에 텍스트를 잘라냅니다. 컨텍스트 윈도우 길이를 크게 초과하면 오류가 발생합니다
Voyage HTTP API
터미널에서 curl
명령을 통해 HTTP 요청을 보내는 방식으로도 임베딩을 얻을 수 있습니다:
응답으로 임베딩과 토큰 사용량이 포함된 JSON 객체를 받게 됩니다:
Voyage AI의 임베딩 엔드포인트는 https://api.voyageai.com/v1/embeddings
(POST)입니다. 요청 헤더에는 API 키가 포함되어야 합니다. 요청 본문은 다음 인수를 포함하는 JSON 객체입니다:
- input (str, List[str]) - 단일 텍스트 문자열 또는 문자열 리스트 형태의 텍스트 리스트. 현재 리스트의 최대 길이는 128이며, 리스트의 총 토큰 수는
voyage-2
의 경우 최대 320K,voyage-large-2
/voyage-code-2
의 경우 120K입니다. - model (str) - 모델의 이름. 권장 옵션:
voyage-2
,voyage-large-2
,voyage-code-2
. - input_type (str, 선택사항, 기본값
None
) - 입력 텍스트의 유형. 기본값은None
. 다른 옵션:query
,document
- truncation (bool, 선택사항, 기본값
None
) - 입력 텍스트를 컨텍스트 길이에 맞게 잘라낼지 여부True
인 경우, 길이가 초과된 입력 텍스트는 임베딩 모델에 의해 벡터화되기 전에 컨텍스트 길이에 맞게 잘립니다False
인 경우, 주어진 텍스트가 컨텍스트 길이를 초과하면 오류가 발생합니다- 지정되지 않은 경우(기본값
None
), 입력 텍스트가 컨텍스트 윈도우 길이를 약간 초과하면 Voyage는 임베딩 모델에 보내기 전에 텍스트를 잘라냅니다. 컨텍스트 윈도우 길이를 크게 초과하면 오류가 발생합니다
- encoding_format (str, 선택사항, 기본값
None
) - 임베딩이 인코딩되는 형식. Voyage는 현재 두 가지 옵션을 지원합니다:- 지정되지 않은 경우(기본값
None
): 임베딩은 부동소수점 숫자의 리스트로 표현됩니다 "base64"
: 임베딩은 Base64 인코딩으로 압축됩니다
- 지정되지 않은 경우(기본값
Voyage 임베딩 예시
이제 Voyage로 임베딩을 얻는 방법을 알았으니, 간단한 예시로 실제 작동을 살펴보겠습니다.
검색할 6개의 문서로 구성된 작은 코퍼스가 있다고 가정해봅시다
먼저 Voyage를 사용하여 각 문서를 임베딩 벡터로 변환하겠습니다
임베딩을 사용하면 벡터 공간에서 의미적 검색/검색을 수행할 수 있습니다. 이제 예시 쿼리를 변환할 수 있습니다.
이를 임베딩으로 변환한 다음, 임베딩 공간에서의 거리를 기반으로 가장 관련성 높은 문서를 찾기 위해 최근접 이웃 검색을 수행합니다.
문서와 쿼리를 임베딩할 때 각각 input_type="document"
와 input_type="query"
를 사용한다는 점에 주목하세요. 더 자세한 명세는 여기에서 찾을 수 있습니다.
출력은 쿼리와 가장 관련성이 높은 5번째 문서가 될 것입니다:
사용 가능한 Voyage 모델
Voyage는 다음과 같은 임베딩 모델을 권장합니다:
모델 | 컨텍스트 길이 | 임베딩 차원 | 설명 |
---|---|---|---|
voyage-large-2 | 16000 | 1536 | Voyage AI의 가장 강력한 범용 임베딩 모델. |
voyage-code-2 | 16000 | 1536 | 코드 검색에 최적화되었으며(대안보다 17% 더 나음), 일반 목적 코퍼스에서도 SoTA 성능을 보임. 자세한 내용은 이 Voyage 블로그 포스트를 참조하세요. |
voyage-2 | 4000 | 1024 | 지연 시간과 품질 모두를 최적화한 기본 범용 임베딩 모델. |
voyage-lite-02-instruct | 4000 | 1024 | 분류, 클러스터링, 문장 텍스트 유사도 작업을 위해 명령어 튜닝되었으며, 이러한 작업만이 이 모델의 권장 사용 사례입니다. |
voyage-2
와 voyage-large-2
는 범용 임베딩 모델로, 도메인 전반에 걸쳐 최첨단 성능을 달성하면서도 높은 효율성을 유지합니다. voyage-code-2
는 코드 분야에 최적화되어 있어 더 유연한 사용을 위해 4배의 컨텍스트 길이를 제공하지만, 상대적으로 더 높은 지연 시간을 가집니다.
Voyage는 더 발전된 특수 모델을 적극적으로 개발하고 있으며, 개별 고객을 위한 맞춤형 모델을 만들기 위한 미세조정 서비스도 제공합니다. 맞춤형 모델에 대한 자세한 정보는 Anthropic 계정 관리자에게 이메일을 보내거나 Anthropic 지원팀에 문의하세요.
voyage-finance-2
: 출시 예정voyage-law-2
: 출시 예정voyage-multilingual-2
: 출시 예정voyage-healthcare-2
: 출시 예정
AWS Marketplace의 Voyage
Voyage 임베딩은 AWS Marketplace에서도 사용할 수 있습니다. AWS에서 Voyage에 접근하는 방법은 다음과 같습니다:
- 모델 패키지 구독
- 모델 패키지 목록 페이지로 이동하여 배포할 모델을 선택합니다
Continue to subscribe
버튼을 클릭합니다Subscribe to this software
페이지의 세부 사항을 주의 깊게 검토합니다. 표준 최종 사용자 라이선스 계약(EULA), 가격 책정 및 지원 조건에 동의하면 “Accept Offer”를 클릭합니다Continue to configuration
을 선택하고 지역을 선택한 후, Product Arn이 표시됩니다. 이는 Boto3를 사용하여 배포 가능한 모델을 생성하는 데 필요한 모델 패키지 ARN입니다- 선택한 지역에 해당하는 ARN을 복사하여 다음 셀에서 사용합니다
- 모델 패키지 배포
여기서부터는 Sagemaker Studio에서 JupyterLab 공간을 만들고, Voyage의 노트북을 업로드한 다음, 노트북 내의 지침을 따르세요.
FAQ
가격
최신 가격 정보는 Voyage의 가격 페이지를 방문하세요.