{
  "aboutHtml": "<p>voyage-4-large는 Voyage 4 계열에 속하는 Voyage AI의 주력 텍스트 임베딩 모델입니다. 범용 및 다국어 검색을 위해 원문 구절과 쿼리를 수치 벡터로 표현합니다. 두 가지 구별되는 특징은 전문가 혼합 모델 설계와 voyage-4-large, voyage-4, voyage-4-lite, voyage-4-nano가 사용하는 공유 임베딩 공간입니다.</p><h4>공유 공간: 말뭉치와 쿼리에서 별도로 선택하기</h4><p>제조사는 비대칭 검색을 설명합니다. 문서는 voyage-4-large로 임베딩하고, 쿼리 벡터는 다른 Voyage 4 계열 모델로 준비할 수 있습니다. 예를 들어 Large로 표현한 말뭉치를 voyage-4 쿼리로 검색할 수 있습니다. 이는 검색의 양쪽에서 서로 다른 모델을 선택하면서도 문서화된 호환 공간을 유지하게 합니다.</p><p>따라서 실제 자료 모음에서는 Large로 안정적인 문서 구절을 준비하고 쿼리 측 모델을 독립적으로 선택할 수 있습니다. 문서는 말뭉치를 만들거나 갱신할 때 임베딩하고, 쿼리는 사용자가 검색할 때 벡터화합니다. 계열 발표는 호환 계열 안에서 쿼리 모델만 바꾸는 경우 그 변경만을 위해 문서 말뭉치를 다시 벡터화할 필요가 없다고 설명합니다. 비교하는 벡터의 차원 수를 맞추고 검색 시스템이 함께 해석할 수 있는 표현을 유지하세요.</p><h4>전문가 혼합 임베딩 설계</h4><p>밀집 피드포워드 레이어는 모든 토큰을 전체 파라미터 집합으로 처리합니다. voyage-4-large에 설명된 MoE 방식은 라우터와 전문가 피드포워드 네트워크를 사용해 각 토큰을 처리할 전문가를 선택합니다. 이는 전체 모델 용량과 특정 토큰에 활성화되는 파라미터를 구별합니다. Voyage는 top-k 라우팅을 사용하는 이 모델의 MoE 설계에서 활성화 비율을 1/10로 보고합니다.</p><p>제조사의 기술 설명은 개발 과정의 두 가지 선택도 다룹니다. 전문가 용량은 넘치는 토큰이 잔차 경로로 전문가 레이어를 우회하는지에 영향을 줍니다. 팀은 검색 품질 손실을 피하기 위해 실현 가능한 가장 큰 용량 계수를 선택했습니다. 최종 학습 단계에서는 원본 모델을 보간할 때 학습된 전문가 선택 라우팅이 바뀌지 않도록 모델 병합 전에 라우터 파라미터를 고정합니다. 이는 모델 준비의 특성이며, 입력을 준비할 때 사용하는 텍스트 길이나 잘림 설정과는 별개입니다.</p><h4>차원 수와 출력 표현</h4><p>공식 모델 표는 32,000토큰 컨텍스트 창과 선택 가능한 256, 512, 1024, 2048차원 임베딩을 명시하며 기본값은 1024입니다. 이 계열은 중첩된 표현 크기를 위해 Matryoshka 학습을 사용하고, 32비트 부동소수점, 부호가 있거나 없는 8비트 정수, 압축된 바이너리 출력이라는 양자화 선택지를 지원합니다.</p><p>바이너리 출력에서는 바이트마다 임베딩 비트 여덟 개가 들어가므로 반환되는 바이트 목록 길이는 선택한 차원 수의 8분의 1입니다. 차원 수와 데이터 유형 선택을 색인과 함께 보관하고 해당 표현을 지원하는 비교 방법을 사용하세요. 더 작거나 압축된 벡터는 검색에 사용하는 표현을 바꿉니다. 자료 모음에 채택하기 전에 실제 질문에서 반환된 구절의 관련성을 평가하세요.</p><h4>문서와 쿼리 입력 준비하기</h4><p>Voyage는 말뭉치 구절에 document 역할, 검색 문구에 query 역할을 사용할 것을 권장합니다. 역할 옵션은 임베딩 전에 대응하는 검색 지시를 추가합니다. 구절의 유용한 제목, 조건, 출처 위치를 보존하고 반환된 벡터를 원문 및 안정적인 식별자와 함께 저장하세요.</p><p>기술 지식 모음에서 장애 형태에 대한 질문은 해당 형태와 관련 조건을 설명하는 구절로 이어져야 합니다. 여러 언어의 문서 모음에서는 원문 언어를 보존하고 사용자가 검색할 질문과 용어로 평가하세요. 이 버전은 기술 문서, 대화, 긴 문서, 코드, 법률, 금융, 웹 텍스트 등의 검색 자료를 다룹니다. 임베딩은 후보 자료를 찾고, 이후 리랭커나 답변 단계는 원문을 사용합니다.</p><h4>컨텍스트, 배치, 잘림 한도</h4><p>제조사의 현재 가이드는 voyage-4-large 요청당 최대 1,000개 문자열과 전체 입력 120,000토큰을 허용합니다. 이는 voyage-4에 명시된 배치 허용량과 다르지만, 두 모델 모두 텍스트당 입력 창은 32,000토큰입니다. 기본 잘림은 길이를 초과한 입력을 창에 맞게 줄입니다. 잘림을 끄면 너무 긴 텍스트에 오류를 반환합니다.</p><p>긴 원문에서 잘린 끝부분의 중요한 한정 조건을 잃지 않도록 답이 들어 있는 구절의 경계를 의도적으로 선택하세요. 검색 결과를 반환할 때 출처 연결을 유지하고, 벡터의 근접성을 내용 검증으로 취급하지 말고 실제 후보 텍스트를 확인하세요. 공유 공간 호환성은 문서화된 Voyage 4 텍스트 계열에 적용됩니다. 문맥화된 청크 처리, 이미지·동영상 임베딩, 후속 모델 버전은 각각 고유한 모델별 워크플로입니다.</p>",
  "aboutText": "voyage-4-large는 Voyage 4 계열에 속하는 Voyage AI의 주력 텍스트 임베딩 모델입니다. 범용 및 다국어 검색을 위해 원문 구절과 쿼리를 수치 벡터로 표현합니다. 두 가지 구별되는 특징은 전문가 혼합 모델 설계와 voyage-4-large, voyage-4, voyage-4-lite, voyage-4-nano가 사용하는 공유 임베딩 공간입니다.\n\n### 공유 공간: 말뭉치와 쿼리에서 별도로 선택하기\n\n제조사는 비대칭 검색을 설명합니다. 문서는 voyage-4-large로 임베딩하고, 쿼리 벡터는 다른 Voyage 4 계열 모델로 준비할 수 있습니다. 예를 들어 Large로 표현한 말뭉치를 voyage-4 쿼리로 검색할 수 있습니다. 이는 검색의 양쪽에서 서로 다른 모델을 선택하면서도 문서화된 호환 공간을 유지하게 합니다.\n\n따라서 실제 자료 모음에서는 Large로 안정적인 문서 구절을 준비하고 쿼리 측 모델을 독립적으로 선택할 수 있습니다. 문서는 말뭉치를 만들거나 갱신할 때 임베딩하고, 쿼리는 사용자가 검색할 때 벡터화합니다. 계열 발표는 호환 계열 안에서 쿼리 모델만 바꾸는 경우 그 변경만을 위해 문서 말뭉치를 다시 벡터화할 필요가 없다고 설명합니다. 비교하는 벡터의 차원 수를 맞추고 검색 시스템이 함께 해석할 수 있는 표현을 유지하세요.\n\n### 전문가 혼합 임베딩 설계\n\n밀집 피드포워드 레이어는 모든 토큰을 전체 파라미터 집합으로 처리합니다. voyage-4-large에 설명된 MoE 방식은 라우터와 전문가 피드포워드 네트워크를 사용해 각 토큰을 처리할 전문가를 선택합니다. 이는 전체 모델 용량과 특정 토큰에 활성화되는 파라미터를 구별합니다. Voyage는 top-k 라우팅을 사용하는 이 모델의 MoE 설계에서 활성화 비율을 1/10로 보고합니다.\n\n제조사의 기술 설명은 개발 과정의 두 가지 선택도 다룹니다. 전문가 용량은 넘치는 토큰이 잔차 경로로 전문가 레이어를 우회하는지에 영향을 줍니다. 팀은 검색 품질 손실을 피하기 위해 실현 가능한 가장 큰 용량 계수를 선택했습니다. 최종 학습 단계에서는 원본 모델을 보간할 때 학습된 전문가 선택 라우팅이 바뀌지 않도록 모델 병합 전에 라우터 파라미터를 고정합니다. 이는 모델 준비의 특성이며, 입력을 준비할 때 사용하는 텍스트 길이나 잘림 설정과는 별개입니다.\n\n### 차원 수와 출력 표현\n\n공식 모델 표는 32,000토큰 컨텍스트 창과 선택 가능한 256, 512, 1024, 2048차원 임베딩을 명시하며 기본값은 1024입니다. 이 계열은 중첩된 표현 크기를 위해 Matryoshka 학습을 사용하고, 32비트 부동소수점, 부호가 있거나 없는 8비트 정수, 압축된 바이너리 출력이라는 양자화 선택지를 지원합니다.\n\n바이너리 출력에서는 바이트마다 임베딩 비트 여덟 개가 들어가므로 반환되는 바이트 목록 길이는 선택한 차원 수의 8분의 1입니다. 차원 수와 데이터 유형 선택을 색인과 함께 보관하고 해당 표현을 지원하는 비교 방법을 사용하세요. 더 작거나 압축된 벡터는 검색에 사용하는 표현을 바꿉니다. 자료 모음에 채택하기 전에 실제 질문에서 반환된 구절의 관련성을 평가하세요.\n\n### 문서와 쿼리 입력 준비하기\n\nVoyage는 말뭉치 구절에 document 역할, 검색 문구에 query 역할을 사용할 것을 권장합니다. 역할 옵션은 임베딩 전에 대응하는 검색 지시를 추가합니다. 구절의 유용한 제목, 조건, 출처 위치를 보존하고 반환된 벡터를 원문 및 안정적인 식별자와 함께 저장하세요.\n\n기술 지식 모음에서 장애 형태에 대한 질문은 해당 형태와 관련 조건을 설명하는 구절로 이어져야 합니다. 여러 언어의 문서 모음에서는 원문 언어를 보존하고 사용자가 검색할 질문과 용어로 평가하세요. 이 버전은 기술 문서, 대화, 긴 문서, 코드, 법률, 금융, 웹 텍스트 등의 검색 자료를 다룹니다. 임베딩은 후보 자료를 찾고, 이후 리랭커나 답변 단계는 원문을 사용합니다.\n\n### 컨텍스트, 배치, 잘림 한도\n\n제조사의 현재 가이드는 voyage-4-large 요청당 최대 1,000개 문자열과 전체 입력 120,000토큰을 허용합니다. 이는 voyage-4에 명시된 배치 허용량과 다르지만, 두 모델 모두 텍스트당 입력 창은 32,000토큰입니다. 기본 잘림은 길이를 초과한 입력을 창에 맞게 줄입니다. 잘림을 끄면 너무 긴 텍스트에 오류를 반환합니다.\n\n긴 원문에서 잘린 끝부분의 중요한 한정 조건을 잃지 않도록 답이 들어 있는 구절의 경계를 의도적으로 선택하세요. 검색 결과를 반환할 때 출처 연결을 유지하고, 벡터의 근접성을 내용 검증으로 취급하지 말고 실제 후보 텍스트를 확인하세요. 공유 공간 호환성은 문서화된 Voyage 4 텍스트 계열에 적용됩니다. 문맥화된 청크 처리, 이미지·동영상 임베딩, 후속 모델 버전은 각각 고유한 모델별 워크플로입니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "335e326f8f47fa523ffe1964b041e9e2c6160fbf58d3de142efca1c524ba36fe",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ko",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">VoyageAI by MongoDB: voyage-4-large</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>VoyageAI by MongoDB /</span><code>voyageai/voyage-4-large</code><button type=\"button\" id=\"copy-id\">ID 복사</button></div><nav class=\"card-jump-nav\" aria-label=\"모델 카드 섹션\"><button type=\"button\" data-card-jump=\"overview\">시작하기</button><button type=\"button\" data-card-jump=\"methods\">입력 및 메서드</button><button type=\"button\" data-card-jump=\"pricing\">요금</button><button type=\"button\" data-card-jump=\"examples\">예제</button><button type=\"button\" data-card-jump=\"results\">결과</button><button type=\"button\" data-card-jump=\"aliases\">별칭</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API 메서드\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|embeddings|/v1/embeddings|voyageai%2Fvoyage-4-large\">임베딩</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">시작하기</h3><p class=\"mdesc-full\">voyage-4-large는 범용 및 다국어 검색을 위한 Voyage AI의 혼합 전문가 텍스트 임베딩 모델입니다. 벡터는 Voyage 4 계열 공간을 공유하므로, Large로 만든 코퍼스 임베딩을 같은 계열의 다른 모델의 호환되는 질의 임베딩으로 검색할 수 있습니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>텍스트 · token_ids</dd></div><div><dt>결과</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>모델 소개</summary><p class=\"note-s\" data-model-method-boundary>이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.</p><div class=\"mabout\" id=\"m-about\"><p>voyage-4-large는 Voyage 4 계열에 속하는 Voyage AI의 주력 텍스트 임베딩 모델입니다. 범용 및 다국어 검색을 위해 원문 구절과 쿼리를 수치 벡터로 표현합니다. 두 가지 구별되는 특징은 전문가 혼합 모델 설계와 voyage-4-large, voyage-4, voyage-4-lite, voyage-4-nano가 사용하는 공유 임베딩 공간입니다.</p><h4>공유 공간: 말뭉치와 쿼리에서 별도로 선택하기</h4><p>제조사는 비대칭 검색을 설명합니다. 문서는 voyage-4-large로 임베딩하고, 쿼리 벡터는 다른 Voyage 4 계열 모델로 준비할 수 있습니다. 예를 들어 Large로 표현한 말뭉치를 voyage-4 쿼리로 검색할 수 있습니다. 이는 검색의 양쪽에서 서로 다른 모델을 선택하면서도 문서화된 호환 공간을 유지하게 합니다.</p><p>따라서 실제 자료 모음에서는 Large로 안정적인 문서 구절을 준비하고 쿼리 측 모델을 독립적으로 선택할 수 있습니다. 문서는 말뭉치를 만들거나 갱신할 때 임베딩하고, 쿼리는 사용자가 검색할 때 벡터화합니다. 계열 발표는 호환 계열 안에서 쿼리 모델만 바꾸는 경우 그 변경만을 위해 문서 말뭉치를 다시 벡터화할 필요가 없다고 설명합니다. 비교하는 벡터의 차원 수를 맞추고 검색 시스템이 함께 해석할 수 있는 표현을 유지하세요.</p><h4>전문가 혼합 임베딩 설계</h4><p>밀집 피드포워드 레이어는 모든 토큰을 전체 파라미터 집합으로 처리합니다. voyage-4-large에 설명된 MoE 방식은 라우터와 전문가 피드포워드 네트워크를 사용해 각 토큰을 처리할 전문가를 선택합니다. 이는 전체 모델 용량과 특정 토큰에 활성화되는 파라미터를 구별합니다. Voyage는 top-k 라우팅을 사용하는 이 모델의 MoE 설계에서 활성화 비율을 1/10로 보고합니다.</p><p>제조사의 기술 설명은 개발 과정의 두 가지 선택도 다룹니다. 전문가 용량은 넘치는 토큰이 잔차 경로로 전문가 레이어를 우회하는지에 영향을 줍니다. 팀은 검색 품질 손실을 피하기 위해 실현 가능한 가장 큰 용량 계수를 선택했습니다. 최종 학습 단계에서는 원본 모델을 보간할 때 학습된 전문가 선택 라우팅이 바뀌지 않도록 모델 병합 전에 라우터 파라미터를 고정합니다. 이는 모델 준비의 특성이며, 입력을 준비할 때 사용하는 텍스트 길이나 잘림 설정과는 별개입니다.</p><h4>차원 수와 출력 표현</h4><p>공식 모델 표는 32,000토큰 컨텍스트 창과 선택 가능한 256, 512, 1024, 2048차원 임베딩을 명시하며 기본값은 1024입니다. 이 계열은 중첩된 표현 크기를 위해 Matryoshka 학습을 사용하고, 32비트 부동소수점, 부호가 있거나 없는 8비트 정수, 압축된 바이너리 출력이라는 양자화 선택지를 지원합니다.</p><p>바이너리 출력에서는 바이트마다 임베딩 비트 여덟 개가 들어가므로 반환되는 바이트 목록 길이는 선택한 차원 수의 8분의 1입니다. 차원 수와 데이터 유형 선택을 색인과 함께 보관하고 해당 표현을 지원하는 비교 방법을 사용하세요. 더 작거나 압축된 벡터는 검색에 사용하는 표현을 바꿉니다. 자료 모음에 채택하기 전에 실제 질문에서 반환된 구절의 관련성을 평가하세요.</p><h4>문서와 쿼리 입력 준비하기</h4><p>Voyage는 말뭉치 구절에 document 역할, 검색 문구에 query 역할을 사용할 것을 권장합니다. 역할 옵션은 임베딩 전에 대응하는 검색 지시를 추가합니다. 구절의 유용한 제목, 조건, 출처 위치를 보존하고 반환된 벡터를 원문 및 안정적인 식별자와 함께 저장하세요.</p><p>기술 지식 모음에서 장애 형태에 대한 질문은 해당 형태와 관련 조건을 설명하는 구절로 이어져야 합니다. 여러 언어의 문서 모음에서는 원문 언어를 보존하고 사용자가 검색할 질문과 용어로 평가하세요. 이 버전은 기술 문서, 대화, 긴 문서, 코드, 법률, 금융, 웹 텍스트 등의 검색 자료를 다룹니다. 임베딩은 후보 자료를 찾고, 이후 리랭커나 답변 단계는 원문을 사용합니다.</p><h4>컨텍스트, 배치, 잘림 한도</h4><p>제조사의 현재 가이드는 voyage-4-large 요청당 최대 1,000개 문자열과 전체 입력 120,000토큰을 허용합니다. 이는 voyage-4에 명시된 배치 허용량과 다르지만, 두 모델 모두 텍스트당 입력 창은 32,000토큰입니다. 기본 잘림은 길이를 초과한 입력을 창에 맞게 줄입니다. 잘림을 끄면 너무 긴 텍스트에 오류를 반환합니다.</p><p>긴 원문에서 잘린 끝부분의 중요한 한정 조건을 잃지 않도록 답이 들어 있는 구절의 경계를 의도적으로 선택하세요. 검색 결과를 반환할 때 출처 연결을 유지하고, 벡터의 근접성을 내용 검증으로 취급하지 말고 실제 후보 텍스트를 확인하세요. 공유 공간 호환성은 문서화된 Voyage 4 텍스트 계열에 적용됩니다. 문맥화된 청크 처리, 이미지·동영상 임베딩, 후속 모델 버전은 각각 고유한 모델별 워크플로입니다.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot에서 사용 가능 · 입력 및 메서드</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 임베딩</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>입력</dt><dd><code>text</code>, <code>token_ids</code></dd></div><div><dt>출력</dt><dd><code>embedding</code></dd></div><div><dt>컨텍스트</dt><dd>32,000 tokens</dd></div><div><dt>출력 형식</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>필드</th><th>유형</th><th>요건</th><th>값과 한도</th><th>기본값</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>voyageai/voyage-4-large</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string|string[]|integer[]|integer[][]</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최소 항목 수: 1</div><div>조건: 비어 있지 않은 동일 형식의 배치입니다. 토큰 ID는 0 이상의 정수입니다.</div><div>입력 허용량: 최댓값: 32,000 · 텍스트 단위: UTF8 바이트 · 토큰 단위: 토큰 배열 요소</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">encoding_format</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>string</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>float</div></td><td data-cell-label=\"기본값\" data-default=\"known\"><span class=\"card-cell-label\">기본값</span>float</td></tr><tr data-parameter-availability=\"unsupported\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">dimensions</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>integer</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>지원되지 않음</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>최솟값: 1</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>json_value</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: 원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>json_value</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: 원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>json_value</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: 원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span><code>object</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>선택 사항</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span><div>조건: provider.options가 거부됨</div></td><td data-cell-label=\"기본값\" data-default=\"unspecified\"><span class=\"card-cell-label\">기본값</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>입력 자료 조합</summary><p class=\"note-s\"><b>text_to_embedding</b></p></details><details class=\"note-s\" data-method-contract><summary>메서드 매개변수와 수명 주기</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>매개변수</th><th>명세</th></tr></thead><tbody><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>content_type</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>application/json</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>required</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>model, input</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>input_shapes</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>string, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>encoding_format</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>float</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>dimensions_override</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>max_input_budget_units</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>32000</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>multimodal_objects</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>false</td></tr><tr><th data-cell-label=\"매개변수\" scope=\"row\"><span class=\"card-cell-label\">매개변수</span><code>material_types</code></th><td data-cell-label=\"명세\"><span class=\"card-cell-label\">명세</span>text, token_ids</td></tr></tbody></table></div><p>수명 주기: <code>synchronous_json</code></p><p class=\"note-s\">모든 벡터의 인덱스와 차원을 보관하세요.</p><p class=\"note-s\">모델 이름이 멀티모달이어도 이 특정 경로에서 이미지 객체를 사용할 수 있는 것은 아닙니다.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">요금</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.</p><dl data-price-conditions><dt>빠른 모드</dt><dd>표준 요금 <span class=\"note-s\">빠른 모드를 선택한 경우</span></dd><dt>Flex 모드</dt><dd>표준 요금 <span class=\"note-s\">flex 모드를 선택한 경우</span></dd><dt>최대 추론 수준</dt><dd>표준 요금 <span class=\"note-s\">최대 추론 수준에 default 조정값을 적용하는 경우</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot 요금</h4><h4>설정별 가격</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>설정</th><th>요금표</th><th>요금</th></tr></thead><tbody><tr><th data-cell-label=\"설정\" scope=\"row\"><span class=\"card-cell-label\">설정</span>토큰의 기본 단가</th><td data-cell-label=\"요금표\"><span class=\"card-cell-label\">요금표</span>기본 요금</td><td data-cell-label=\"요금\"><span class=\"card-cell-label\">요금</span><div><span>입력 · 입력 토큰</span> <b>$0.00024</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>출력 · 출력 토큰</span> <b>$0</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 읽기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div><div><span>입력 · 캐시 쓰기, 1시간</span> <b>—</b> <span class=\"price-unit\">/ 1K 토큰</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. <a href=\"/docs/ko/billing/reserve/\">금액 확보와 정산 방식 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">요청 예제</h3><h4>Ailoot Ultra · 임베딩</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"코드 예제 형식\"><button class=\"cg-tab\" id=\"model-code-2702-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2702-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2702-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2702-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"코드 복사\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2702-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2702-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;voyageai/voyage-4-large&quot;, &quot;input&quot;: [&quot;First document&quot;, &quot;Second document&quot;]}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nfor x in r.get(&quot;data&quot;,[]): print(json.dumps({&quot;index&quot;:x.get(&quot;index&quot;),&quot;embedding&quot;:x.get(&quot;embedding&quot;)}))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2702-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2702-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.embeddings.create(model=&#39;voyageai/voyage-4-large&#39;,input=[&quot;First document&quot;,&quot;Second document&quot;])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">결과 수신 및 저장</h3><h4>Ailoot Ultra · 임베딩</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>완료된 결과 모두 보관</h5><p class=\"note-s\">반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.</p><p class=\"note-s\">모든 벡터를 인덱스와 함께 보관하세요. 벡터 수는 입력 수와 같아야 하며 차원은 일관되어야 합니다.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>원래 응답을 확인해야 할 경우</h5><p class=\"note-s\">임베딩 작업 엔드포인트는 추가되지 않습니다.</p></div><details class=\"card-about\" data-output-fields><summary>응답 필드</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>필드</th><th>유형</th></tr></thead><tbody><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>string</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">data[].index</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>integer</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">data[].embedding</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>finite float[]</td></tr><tr><th data-cell-label=\"필드\" scope=\"row\"><span class=\"card-cell-label\">필드</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"유형\" data-field-type><span class=\"card-cell-label\">유형</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>오류와 다음 단계</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>응답</th><th>조건</th><th>다음 단계</th></tr></thead><tbody><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"조건\"><span class=\"card-cell-label\">조건</span>필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>새 생성 요청 전에 표시된 필드를 수정하세요.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">별칭</h3><h4>모델 별칭</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=voyageai%2Fvoyage-4-large&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4-large&amp;fmt=embeddings\"><code>voyageai/voyage-4-large</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=voyageai%2Fvoyage-4-large&amp;route=Ultra&amp;caller=voyageai%2Fvoyage-4-large&amp;fmt=embeddings\"><code>voyageai/voyage-4-large</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyageai/voyage-4-large",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyageai%2Fvoyage-4-large",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "임베딩 작업 엔드포인트는 추가되지 않습니다."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "모든 벡터를 인덱스와 함께 보관하세요. 벡터 수는 입력 수와 같아야 하며 차원은 일관되어야 합니다.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "voyageai/voyage-4-large"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "UTF8 바이트",
                  "token_unit": "토큰 배열 요소"
                },
                "conditions": "비어 있지 않은 동일 형식의 배치입니다. 토큰 ID는 0 이상의 정수입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options가 거부됨",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "모든 벡터의 인덱스와 차원을 보관하세요.",
            "모델 이름이 멀티모달이어도 이 특정 경로에서 이미지 객체를 사용할 수 있는 것은 아닙니다."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 32000,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 32000,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "토큰의 기본 단가",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"voyageai/voyage-4-large\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='voyageai/voyage-4-large',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.24,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "빠른 모드",
            "value": "표준 요금",
            "when": "빠른 모드를 선택한 경우"
          },
          {
            "label": "Flex 모드",
            "value": "표준 요금",
            "when": "flex 모드를 선택한 경우"
          },
          {
            "label": "최대 추론 수준",
            "value": "표준 요금",
            "when": "최대 추론 수준에 default 조정값을 적용하는 경우"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "voyageai/voyage-4-large",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "7e5334fb91322a965ac9eaed12ba74160b51e49951f63aee9b3a8af7a1aa9f9c",
    "input_html_sha256": "5eec453e90f66fcf27b2a5d06afbedab6203e605e4947172672555ef0a107e7f",
    "private_audit_sha256": "0c4ba33d62a8b687b316adb7081ed3d674311a269d032fda23a0d363d91aa10d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/voyageai-voyage-4-large/",
    "description": "voyage-4-large는 범용 및 다국어 검색을 위한 Voyage AI의 혼합 전문가 텍스트 임베딩 모델입니다. 벡터는 Voyage 4 계열 공간을 공유하므로, Large로 만든 코퍼스 임베딩을 같은 계열의 다른 모델의 호환되는 질의 임베딩으로 검색할 수 있습니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/voyageai-voyage-4-large/index.md",
    "title": "VoyageAI by MongoDB: voyage-4-large — Ailoot",
    "url": "https://ailoot.ai/models/ko/voyageai-voyage-4-large/"
  },
  "rawModel": {
    "about": "voyage-4-large는 Voyage 4 계열에 속하는 Voyage AI의 주력 텍스트 임베딩 모델입니다. 범용 및 다국어 검색을 위해 원문 구절과 쿼리를 수치 벡터로 표현합니다. 두 가지 구별되는 특징은 전문가 혼합 모델 설계와 voyage-4-large, voyage-4, voyage-4-lite, voyage-4-nano가 사용하는 공유 임베딩 공간입니다.\n\n### 공유 공간: 말뭉치와 쿼리에서 별도로 선택하기\n\n제조사는 비대칭 검색을 설명합니다. 문서는 voyage-4-large로 임베딩하고, 쿼리 벡터는 다른 Voyage 4 계열 모델로 준비할 수 있습니다. 예를 들어 Large로 표현한 말뭉치를 voyage-4 쿼리로 검색할 수 있습니다. 이는 검색의 양쪽에서 서로 다른 모델을 선택하면서도 문서화된 호환 공간을 유지하게 합니다.\n\n따라서 실제 자료 모음에서는 Large로 안정적인 문서 구절을 준비하고 쿼리 측 모델을 독립적으로 선택할 수 있습니다. 문서는 말뭉치를 만들거나 갱신할 때 임베딩하고, 쿼리는 사용자가 검색할 때 벡터화합니다. 계열 발표는 호환 계열 안에서 쿼리 모델만 바꾸는 경우 그 변경만을 위해 문서 말뭉치를 다시 벡터화할 필요가 없다고 설명합니다. 비교하는 벡터의 차원 수를 맞추고 검색 시스템이 함께 해석할 수 있는 표현을 유지하세요.\n\n### 전문가 혼합 임베딩 설계\n\n밀집 피드포워드 레이어는 모든 토큰을 전체 파라미터 집합으로 처리합니다. voyage-4-large에 설명된 MoE 방식은 라우터와 전문가 피드포워드 네트워크를 사용해 각 토큰을 처리할 전문가를 선택합니다. 이는 전체 모델 용량과 특정 토큰에 활성화되는 파라미터를 구별합니다. Voyage는 top-k 라우팅을 사용하는 이 모델의 MoE 설계에서 활성화 비율을 1/10로 보고합니다.\n\n제조사의 기술 설명은 개발 과정의 두 가지 선택도 다룹니다. 전문가 용량은 넘치는 토큰이 잔차 경로로 전문가 레이어를 우회하는지에 영향을 줍니다. 팀은 검색 품질 손실을 피하기 위해 실현 가능한 가장 큰 용량 계수를 선택했습니다. 최종 학습 단계에서는 원본 모델을 보간할 때 학습된 전문가 선택 라우팅이 바뀌지 않도록 모델 병합 전에 라우터 파라미터를 고정합니다. 이는 모델 준비의 특성이며, 입력을 준비할 때 사용하는 텍스트 길이나 잘림 설정과는 별개입니다.\n\n### 차원 수와 출력 표현\n\n공식 모델 표는 32,000토큰 컨텍스트 창과 선택 가능한 256, 512, 1024, 2048차원 임베딩을 명시하며 기본값은 1024입니다. 이 계열은 중첩된 표현 크기를 위해 Matryoshka 학습을 사용하고, 32비트 부동소수점, 부호가 있거나 없는 8비트 정수, 압축된 바이너리 출력이라는 양자화 선택지를 지원합니다.\n\n바이너리 출력에서는 바이트마다 임베딩 비트 여덟 개가 들어가므로 반환되는 바이트 목록 길이는 선택한 차원 수의 8분의 1입니다. 차원 수와 데이터 유형 선택을 색인과 함께 보관하고 해당 표현을 지원하는 비교 방법을 사용하세요. 더 작거나 압축된 벡터는 검색에 사용하는 표현을 바꿉니다. 자료 모음에 채택하기 전에 실제 질문에서 반환된 구절의 관련성을 평가하세요.\n\n### 문서와 쿼리 입력 준비하기\n\nVoyage는 말뭉치 구절에 document 역할, 검색 문구에 query 역할을 사용할 것을 권장합니다. 역할 옵션은 임베딩 전에 대응하는 검색 지시를 추가합니다. 구절의 유용한 제목, 조건, 출처 위치를 보존하고 반환된 벡터를 원문 및 안정적인 식별자와 함께 저장하세요.\n\n기술 지식 모음에서 장애 형태에 대한 질문은 해당 형태와 관련 조건을 설명하는 구절로 이어져야 합니다. 여러 언어의 문서 모음에서는 원문 언어를 보존하고 사용자가 검색할 질문과 용어로 평가하세요. 이 버전은 기술 문서, 대화, 긴 문서, 코드, 법률, 금융, 웹 텍스트 등의 검색 자료를 다룹니다. 임베딩은 후보 자료를 찾고, 이후 리랭커나 답변 단계는 원문을 사용합니다.\n\n### 컨텍스트, 배치, 잘림 한도\n\n제조사의 현재 가이드는 voyage-4-large 요청당 최대 1,000개 문자열과 전체 입력 120,000토큰을 허용합니다. 이는 voyage-4에 명시된 배치 허용량과 다르지만, 두 모델 모두 텍스트당 입력 창은 32,000토큰입니다. 기본 잘림은 길이를 초과한 입력을 창에 맞게 줄입니다. 잘림을 끄면 너무 긴 텍스트에 오류를 반환합니다.\n\n긴 원문에서 잘린 끝부분의 중요한 한정 조건을 잃지 않도록 답이 들어 있는 구절의 경계를 의도적으로 선택하세요. 검색 결과를 반환할 때 출처 연결을 유지하고, 벡터의 근접성을 내용 검증으로 취급하지 말고 실제 후보 텍스트를 확인하세요. 공유 공간 호환성은 문서화된 Voyage 4 텍스트 계열에 적용됩니다. 문맥화된 청크 처리, 이미지·동영상 임베딩, 후속 모델 버전은 각각 고유한 모델별 워크플로입니다.",
    "alias_of": null,
    "aliases": [],
    "author": "VoyageAI by MongoDB",
    "available": null,
    "canonical_model": "voyageai/voyage-4-large",
    "capabilities": {
      "context_length": 32000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "구성의 전체 요금 정보는 상세 정보에서 확인할 수 있습니다."
      }
    ],
    "ctx": 32000,
    "entity_type": "model",
    "formats": [
      "embeddings"
    ],
    "id": "voyageai/voyage-4-large",
    "input": [
      "text",
      "token_ids"
    ],
    "kind": "embedding",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음",
                "http_status": 400,
                "recovery": "새 생성 요청 전에 표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "임베딩 작업 엔드포인트는 추가되지 않습니다."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "모든 벡터를 인덱스와 함께 보관하세요. 벡터 수는 입력 수와 같아야 하며 차원은 일관되어야 합니다.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "voyageai/voyage-4-large"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 32000,
                  "text_unit": "UTF8 바이트",
                  "token_unit": "토큰 배열 요소"
                },
                "conditions": "비어 있지 않은 동일 형식의 배치입니다. 토큰 ID는 0 이상의 정수입니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "원본에서 이 JSON 메타데이터 필드를 허용하며, 정확한 업스트림 동작은 모델별로 다릅니다.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options가 거부됨",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "모든 벡터의 인덱스와 차원을 보관하세요.",
            "모델 이름이 멀티모달이어도 이 특정 경로에서 이미지 객체를 사용할 수 있는 것은 아닙니다."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 32000,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 32000,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "토큰의 기본 단가",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"voyageai/voyage-4-large\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='voyageai/voyage-4-large',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.24,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "빠른 모드",
            "value": "표준 요금",
            "when": "빠른 모드를 선택한 경우"
          },
          {
            "label": "Flex 모드",
            "value": "표준 요금",
            "when": "flex 모드를 선택한 경우"
          },
          {
            "label": "최대 추론 수준",
            "value": "표준 요금",
            "when": "최대 추론 수준에 default 조정값을 적용하는 경우"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00024000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000024",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "voyageai/voyage-4-large",
        "request_model_id": "voyageai/voyage-4-large",
        "route_label": "Ultra"
      }
    ],
    "name": "VoyageAI by MongoDB: voyage-4-large",
    "price": {
      "in": 0.24,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.24,
      "sort_out": 0,
      "varies": false
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Эмбеддинги · Base token rates",
        "units": [
          {
            "amount": "0.00024000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000024",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "public_id": "voyageai/voyage-4-large",
    "short": "voyage-4-large는 범용 및 다국어 검색을 위한 Voyage AI의 혼합 전문가 텍스트 임베딩 모델입니다. 벡터는 Voyage 4 계열 공간을 공유하므로, Large로 만든 코퍼스 임베딩을 같은 계열의 다른 모델의 호환되는 질의 임베딩으로 검색할 수 있습니다."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "voyage-4-large는 범용 및 다국어 검색을 위한 Voyage AI의 혼합 전문가 텍스트 임베딩 모델입니다. 벡터는 Voyage 4 계열 공간을 공유하므로, Large로 만든 코퍼스 임베딩을 같은 계열의 다른 모델의 호환되는 질의 임베딩으로 검색할 수 있습니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "72e2ac19887ac5ea36a18c922e82ce1aa68ad12b4f33b299999ad60cba82eced",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "6605bcf670202d3b994e1a67f7a110cee0ad77cac35876ca40a85e8ae96f9ab0"
}
