{
  "aboutHtml": "<p>Gemini Embedding 2 Preview는 Google의 네이티브 멀티모달 임베딩 계열에 속하는 이름이 명시된 프리뷰 에디션입니다. 텍스트, 이미지, 비디오, 오디오, PDF를 공통 수치 공간에 매핑하며, 100개가 넘는 언어의 의미적 의도를 표현합니다. 출력은 관련 자료를 비교하고 검색하는 데 사용하는 벡터, 즉 임베딩입니다. 이 프리뷰 정체성은 안정판 Gemini Embedding 2 에디션과 구분되며, 가중치를 서로 바꿔 쓰거나 벡터 공간이 같다는 뜻이 아닙니다.</p><p>최초 발표는 교차 모달 검색, 분류, 군집화, 감성 분석, 검색 증강 생성을 후속 활용으로 설명합니다. 텍스트 질의로 관련 시각 항목을 찾을 수 있고, 이미지나 클립도 검색 출발점이 될 수 있습니다. 애플리케이션이 표현을 저장하고 비교해 해당 레코드를 반환하며, 별도 언어 모델이 검색된 원본 자료로 답변을 작성할 수 있습니다. 임베딩 자체에는 자연어 설명이나 전사문이 담겨 있지 않습니다.</p><p>이 에디션의 자체 모델 페이지는 8,192토큰 입력 한도와 128부터 3,072까지의 출력 차원을 문서화하며, 권장 크기는 768, 1,536, 3,072입니다. 프리뷰 발표는 기본값을 3,072로 제시하고, 표현의 더 짧은 앞부분에도 유용한 정보를 유지하는 Matryoshka Representation Learning을 설명합니다. 비교해야 하는 벡터에는 선택한 차원을 통일하고, 길이가 같다는 이유만으로 표현을 합치지 말고 모델 에디션을 컬렉션과 함께 유지하세요.</p><p>프리뷰 발표는 요청당 최대 6개 PNG 또는 JPEG 이미지, 최대 120초 MP4 또는 MOV 비디오, 최대 6페이지 PDF 문서를 문서화합니다. 중간 텍스트 전사 없이 직접 오디오를 임베딩하는 기능도 문서화합니다. 이 명세는 이후 안정판 가이드가 아니라 프리뷰 자체 발표에서 나온 것입니다. 해당 발표만으로 이 정확한 프리뷰 프로필의 현재 오디오 길이, 코덱, 프레임 샘플링 제한을 모두 확정할 수는 없습니다.</p><p>교차 배치된 멀티모달 입력은 이미지와 캡션처럼 미디어 사이의 관계를 표현에 반영하게 합니다. 제품 카탈로그에서는 사진과 승인된 설명이 하나의 검색 가능한 대상을 설명하면 함께 제공하세요. 문서 컬렉션에서는 원본을 초점을 좁힌 지문이나 페이지로 나누고 제목과 위치를 보존하세요. 미디어 라이브러리에서는 사용자가 찾아야 할 사건에 해당하는 클립을 선택하고, 저장된 레코드에 원래 시간 범위를 유지하세요.</p><p>유용한 검색 작업은 의도한 관계를 명확히 합니다. 설명을 찾는 질문, 시각적으로 비슷한 항목 검색, 주제별 군집화는 같은 원본 컬렉션을 사용해도 서로 다른 작업입니다. 콘텐츠를 일관되게 준비하고, 에디션과 차원을 기록하고, 모든 벡터를 원본에 연결하세요. 유사도는 애플리케이션이 살펴볼 후보를 제공하며, 두 레코드가 같은 사실을 말하거나 검색된 원본이 질문에 완전히 답한다는 증거는 아닙니다.</p><p>실제 미디어 검색에서는 선택한 이미지나 비디오 발췌를 표현하고, 원하는 콘텐츠의 설명과 비교하세요. 사용자가 검토할 수 있도록 일치한 원본을 캡션이나 시간 범위와 함께 제시하세요. 지식 어시스턴트에서는 글로 된 응답을 생성하기 전에 관련 페이지나 지문을 검색하세요. Preview 모델의 역할은 이러한 선택 단계를 지원하는 멀티모달 수치 표현이며, 저장, 순위 규칙, 최종 답변은 주변 워크플로의 일부로 남습니다.</p>",
  "aboutText": "Gemini Embedding 2 Preview는 Google의 네이티브 멀티모달 임베딩 계열에 속하는 이름이 명시된 프리뷰 에디션입니다. 텍스트, 이미지, 비디오, 오디오, PDF를 공통 수치 공간에 매핑하며, 100개가 넘는 언어의 의미적 의도를 표현합니다. 출력은 관련 자료를 비교하고 검색하는 데 사용하는 벡터, 즉 임베딩입니다. 이 프리뷰 정체성은 안정판 Gemini Embedding 2 에디션과 구분되며, 가중치를 서로 바꿔 쓰거나 벡터 공간이 같다는 뜻이 아닙니다.\n\n최초 발표는 교차 모달 검색, 분류, 군집화, 감성 분석, 검색 증강 생성을 후속 활용으로 설명합니다. 텍스트 질의로 관련 시각 항목을 찾을 수 있고, 이미지나 클립도 검색 출발점이 될 수 있습니다. 애플리케이션이 표현을 저장하고 비교해 해당 레코드를 반환하며, 별도 언어 모델이 검색된 원본 자료로 답변을 작성할 수 있습니다. 임베딩 자체에는 자연어 설명이나 전사문이 담겨 있지 않습니다.\n\n이 에디션의 자체 모델 페이지는 8,192토큰 입력 한도와 128부터 3,072까지의 출력 차원을 문서화하며, 권장 크기는 768, 1,536, 3,072입니다. 프리뷰 발표는 기본값을 3,072로 제시하고, 표현의 더 짧은 앞부분에도 유용한 정보를 유지하는 Matryoshka Representation Learning을 설명합니다. 비교해야 하는 벡터에는 선택한 차원을 통일하고, 길이가 같다는 이유만으로 표현을 합치지 말고 모델 에디션을 컬렉션과 함께 유지하세요.\n\n프리뷰 발표는 요청당 최대 6개 PNG 또는 JPEG 이미지, 최대 120초 MP4 또는 MOV 비디오, 최대 6페이지 PDF 문서를 문서화합니다. 중간 텍스트 전사 없이 직접 오디오를 임베딩하는 기능도 문서화합니다. 이 명세는 이후 안정판 가이드가 아니라 프리뷰 자체 발표에서 나온 것입니다. 해당 발표만으로 이 정확한 프리뷰 프로필의 현재 오디오 길이, 코덱, 프레임 샘플링 제한을 모두 확정할 수는 없습니다.\n\n교차 배치된 멀티모달 입력은 이미지와 캡션처럼 미디어 사이의 관계를 표현에 반영하게 합니다. 제품 카탈로그에서는 사진과 승인된 설명이 하나의 검색 가능한 대상을 설명하면 함께 제공하세요. 문서 컬렉션에서는 원본을 초점을 좁힌 지문이나 페이지로 나누고 제목과 위치를 보존하세요. 미디어 라이브러리에서는 사용자가 찾아야 할 사건에 해당하는 클립을 선택하고, 저장된 레코드에 원래 시간 범위를 유지하세요.\n\n유용한 검색 작업은 의도한 관계를 명확히 합니다. 설명을 찾는 질문, 시각적으로 비슷한 항목 검색, 주제별 군집화는 같은 원본 컬렉션을 사용해도 서로 다른 작업입니다. 콘텐츠를 일관되게 준비하고, 에디션과 차원을 기록하고, 모든 벡터를 원본에 연결하세요. 유사도는 애플리케이션이 살펴볼 후보를 제공하며, 두 레코드가 같은 사실을 말하거나 검색된 원본이 질문에 완전히 답한다는 증거는 아닙니다.\n\n실제 미디어 검색에서는 선택한 이미지나 비디오 발췌를 표현하고, 원하는 콘텐츠의 설명과 비교하세요. 사용자가 검토할 수 있도록 일치한 원본을 캡션이나 시간 범위와 함께 제시하세요. 지식 어시스턴트에서는 글로 된 응답을 생성하기 전에 관련 페이지나 지문을 검색하세요. Preview 모델의 역할은 이러한 선택 단계를 지원하는 멀티모달 수치 표현이며, 저장, 순위 규칙, 최종 답변은 주변 워크플로의 일부로 남습니다.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4074f9f0c6fc2a91d28ec2bc045c3e8639d7bf3f469cf5b4a318dda317e60e0c",
    "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\">G</span><h2 id=\"sheet-title\">Google: Gemini Embedding 2 Preview</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"닫기\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-embedding-2-preview</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|google%2Fgemini-embedding-2-preview\">임베딩</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\">Gemini Embedding 2 Preview는 텍스트, 이미지, 오디오, 비디오, PDF를 하나의 멀티모달 공간에 있는 수치 벡터로 변환합니다. 별도로 문서화된 프리뷰 프로필은 교차 모달 검색과 비교, 8,192토큰 입력, 유연한 벡터 차원을 지원합니다.</p><dl class=\"card-io\" data-card-io><div><dt>허용 입력</dt><dd>텍스트</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>Gemini Embedding 2 Preview는 Google의 네이티브 멀티모달 임베딩 계열에 속하는 이름이 명시된 프리뷰 에디션입니다. 텍스트, 이미지, 비디오, 오디오, PDF를 공통 수치 공간에 매핑하며, 100개가 넘는 언어의 의미적 의도를 표현합니다. 출력은 관련 자료를 비교하고 검색하는 데 사용하는 벡터, 즉 임베딩입니다. 이 프리뷰 정체성은 안정판 Gemini Embedding 2 에디션과 구분되며, 가중치를 서로 바꿔 쓰거나 벡터 공간이 같다는 뜻이 아닙니다.</p><p>최초 발표는 교차 모달 검색, 분류, 군집화, 감성 분석, 검색 증강 생성을 후속 활용으로 설명합니다. 텍스트 질의로 관련 시각 항목을 찾을 수 있고, 이미지나 클립도 검색 출발점이 될 수 있습니다. 애플리케이션이 표현을 저장하고 비교해 해당 레코드를 반환하며, 별도 언어 모델이 검색된 원본 자료로 답변을 작성할 수 있습니다. 임베딩 자체에는 자연어 설명이나 전사문이 담겨 있지 않습니다.</p><p>이 에디션의 자체 모델 페이지는 8,192토큰 입력 한도와 128부터 3,072까지의 출력 차원을 문서화하며, 권장 크기는 768, 1,536, 3,072입니다. 프리뷰 발표는 기본값을 3,072로 제시하고, 표현의 더 짧은 앞부분에도 유용한 정보를 유지하는 Matryoshka Representation Learning을 설명합니다. 비교해야 하는 벡터에는 선택한 차원을 통일하고, 길이가 같다는 이유만으로 표현을 합치지 말고 모델 에디션을 컬렉션과 함께 유지하세요.</p><p>프리뷰 발표는 요청당 최대 6개 PNG 또는 JPEG 이미지, 최대 120초 MP4 또는 MOV 비디오, 최대 6페이지 PDF 문서를 문서화합니다. 중간 텍스트 전사 없이 직접 오디오를 임베딩하는 기능도 문서화합니다. 이 명세는 이후 안정판 가이드가 아니라 프리뷰 자체 발표에서 나온 것입니다. 해당 발표만으로 이 정확한 프리뷰 프로필의 현재 오디오 길이, 코덱, 프레임 샘플링 제한을 모두 확정할 수는 없습니다.</p><p>교차 배치된 멀티모달 입력은 이미지와 캡션처럼 미디어 사이의 관계를 표현에 반영하게 합니다. 제품 카탈로그에서는 사진과 승인된 설명이 하나의 검색 가능한 대상을 설명하면 함께 제공하세요. 문서 컬렉션에서는 원본을 초점을 좁힌 지문이나 페이지로 나누고 제목과 위치를 보존하세요. 미디어 라이브러리에서는 사용자가 찾아야 할 사건에 해당하는 클립을 선택하고, 저장된 레코드에 원래 시간 범위를 유지하세요.</p><p>유용한 검색 작업은 의도한 관계를 명확히 합니다. 설명을 찾는 질문, 시각적으로 비슷한 항목 검색, 주제별 군집화는 같은 원본 컬렉션을 사용해도 서로 다른 작업입니다. 콘텐츠를 일관되게 준비하고, 에디션과 차원을 기록하고, 모든 벡터를 원본에 연결하세요. 유사도는 애플리케이션이 살펴볼 후보를 제공하며, 두 레코드가 같은 사실을 말하거나 검색된 원본이 질문에 완전히 답한다는 증거는 아닙니다.</p><p>실제 미디어 검색에서는 선택한 이미지나 비디오 발췌를 표현하고, 원하는 콘텐츠의 설명과 비교하세요. 사용자가 검토할 수 있도록 일치한 원본을 캡션이나 시간 범위와 함께 제시하세요. 지식 어시스턴트에서는 글로 된 응답을 생성하기 전에 관련 페이지나 지문을 검색하세요. Preview 모델의 역할은 이러한 선택 단계를 지원하는 멀티모달 수치 표현이며, 저장, 순위 규칙, 최종 답변은 주변 워크플로의 일부로 남습니다.</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></dd></div><div><dt>출력</dt><dd><code>embedding</code></dd></div><div><dt>컨텍스트</dt><dd>8,192 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>google/gemini-embedding-2-preview</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[]</code></td><td data-cell-label=\"요건\"><span class=\"card-cell-label\">요건</span>필수</td><td data-cell-label=\"값과 한도\"><span class=\"card-cell-label\">값과 한도</span></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[]</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</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.0004</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-1488-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1488-panel-0\" aria-selected=\"true\" tabindex=\"0\">최소 구성의 완전한 JSON 본문</button><button class=\"cg-tab\" id=\"model-code-1488-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1488-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · 최소 구성의 텍스트 임베딩</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-1488-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1488-tab-0\"><pre data-lang=\"json\"><code>{\n  &quot;model&quot;: &quot;google/gemini-embedding-2-preview&quot;,\n  &quot;input&quot;: [\n    &quot;First document&quot;,\n    &quot;Second document&quot;\n  ]\n}</code></pre></div><div class=\"cg-pane\" id=\"model-code-1488-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1488-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; embedding-request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{\n  &quot;model&quot;: &quot;google/gemini-embedding-2-preview&quot;,\n  &quot;input&quot;: [\n    &quot;First document&quot;,\n    &quot;Second document&quot;\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\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>model이 없거나 JSON 형식이 잘못되었습니다.</td><td data-cell-label=\"다음 단계\"><span class=\"card-cell-label\">다음 단계</span>표시된 필드를 수정하세요.</td></tr><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>413 · <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><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>422 · <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><tr><th data-cell-label=\"응답\" scope=\"row\"><span class=\"card-cell-label\">응답</span>503 · <code>billing_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=google%2Fgemini-embedding-2-preview&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2-preview&amp;fmt=embeddings\"><code>google/gemini-embedding-2-preview</code></a></span></p><h4>메서드 경로 별칭</h4><p class=\"note-s\">위에 표시된 메서드 경로를 사용하세요.</p><h4>관련 호출용 ID</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-embedding-2-preview&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2-preview&amp;fmt=embeddings\"><code>google/gemini-embedding-2-preview</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-embedding-2-preview",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "google/gemini-embedding-2-preview",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|google%2Fgemini-embedding-2-preview",
      "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": "model이 없거나 JSON 형식이 잘못되었습니다.",
                "http_status": 400,
                "recovery": "표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "설정된 본문 한도를 초과했습니다.",
                "http_status": 413,
                "recovery": "실제 자료의 분량을 줄이세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "입력 또는 제어 값이 현재 전용 정책을 위반합니다.",
                "http_status": 422,
                "recovery": "이전 제어 값을 이어받지 말고 제시된 최소 텍스트 입력을 사용하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "접근 허용 또는 견적을 연결할 수 없습니다.",
                "http_status": 503,
                "recovery": "응답을 보존하세요. 정책을 다른 것으로 대체하지 마세요.",
                "type": "billing_error"
              }
            ],
            "example_body": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "임베딩 작업 엔드포인트는 추가되지 않습니다."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]"
                ],
                "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": [
                  "google/gemini-embedding-2-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input",
                "required": true,
                "type": "string|string[]"
              }
            ],
            "profile_binding": "Minimal current Source subset: only model and text input. Optional controls and another model dimensions/token limits are not inherited.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "google/gemini-embedding-2-preview"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "unsupported": [
              "image/audio/file objects in this minimal text profile",
              "dimensions (current Native43 supports_dimensions:false)",
              "foreign model-specific dimensions or token limits"
            ]
          },
          "hints": [
            "반환된 모든 벡터와 인덱스를 보존하세요.",
            "이 최소 텍스트 프로필을 근거로 이미지/오디오/파일 객체 지원을 추론하지 않습니다."
          ],
          "input": {
            "content_type": "application/json",
            "input_shapes": [
              "string",
              "string[]"
            ],
            "material_types": [
              "text"
            ],
            "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": "Keep every vector, index, model and usage field. Current dedicated Source validates count, finite float elements and consistent actual dimensions."
          }
        },
        "ctx": 8192,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "토큰의 기본 단가",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > embedding-request.json <<'JSON_REQUEST'\n{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\n",
            "label": "curl · minimal text embeddings",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "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.4,
        "input": [
          "text"
        ],
        "label": "임베딩",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "google/gemini-embedding-2-preview",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "google/gemini-embedding-2-preview",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "0f9bf8da096105c698f2c6e790493737ed712afcbb01d19d392ef025ab901d9b",
    "input_html_sha256": "01a22a7dd46a494f947c57aeb23e035c83788c3eea5722d4abf5ea1df1327671",
    "private_audit_sha256": "2bd5011f5597c94c715fc96dfbde2bc6487e4efc632ab93628959ded67673e38",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ko/google-gemini-embedding-2-preview/",
    "description": "Gemini Embedding 2 Preview는 텍스트, 이미지, 오디오, 비디오, PDF를 하나의 멀티모달 공간에 있는 수치 벡터로 변환합니다. 별도로 문서화된 프리뷰 프로필은 교차 모달 검색과 비교, 8,192토큰 입력, 유연한 벡터 차원을 지원합니다.",
    "locale": "ko",
    "md_url": "https://ailoot.ai/models/ko/google-gemini-embedding-2-preview/index.md",
    "title": "Google: Gemini Embedding 2 Preview — Ailoot",
    "url": "https://ailoot.ai/models/ko/google-gemini-embedding-2-preview/"
  },
  "rawModel": {
    "about": "Gemini Embedding 2 Preview는 Google의 네이티브 멀티모달 임베딩 계열에 속하는 이름이 명시된 프리뷰 에디션입니다. 텍스트, 이미지, 비디오, 오디오, PDF를 공통 수치 공간에 매핑하며, 100개가 넘는 언어의 의미적 의도를 표현합니다. 출력은 관련 자료를 비교하고 검색하는 데 사용하는 벡터, 즉 임베딩입니다. 이 프리뷰 정체성은 안정판 Gemini Embedding 2 에디션과 구분되며, 가중치를 서로 바꿔 쓰거나 벡터 공간이 같다는 뜻이 아닙니다.\n\n최초 발표는 교차 모달 검색, 분류, 군집화, 감성 분석, 검색 증강 생성을 후속 활용으로 설명합니다. 텍스트 질의로 관련 시각 항목을 찾을 수 있고, 이미지나 클립도 검색 출발점이 될 수 있습니다. 애플리케이션이 표현을 저장하고 비교해 해당 레코드를 반환하며, 별도 언어 모델이 검색된 원본 자료로 답변을 작성할 수 있습니다. 임베딩 자체에는 자연어 설명이나 전사문이 담겨 있지 않습니다.\n\n이 에디션의 자체 모델 페이지는 8,192토큰 입력 한도와 128부터 3,072까지의 출력 차원을 문서화하며, 권장 크기는 768, 1,536, 3,072입니다. 프리뷰 발표는 기본값을 3,072로 제시하고, 표현의 더 짧은 앞부분에도 유용한 정보를 유지하는 Matryoshka Representation Learning을 설명합니다. 비교해야 하는 벡터에는 선택한 차원을 통일하고, 길이가 같다는 이유만으로 표현을 합치지 말고 모델 에디션을 컬렉션과 함께 유지하세요.\n\n프리뷰 발표는 요청당 최대 6개 PNG 또는 JPEG 이미지, 최대 120초 MP4 또는 MOV 비디오, 최대 6페이지 PDF 문서를 문서화합니다. 중간 텍스트 전사 없이 직접 오디오를 임베딩하는 기능도 문서화합니다. 이 명세는 이후 안정판 가이드가 아니라 프리뷰 자체 발표에서 나온 것입니다. 해당 발표만으로 이 정확한 프리뷰 프로필의 현재 오디오 길이, 코덱, 프레임 샘플링 제한을 모두 확정할 수는 없습니다.\n\n교차 배치된 멀티모달 입력은 이미지와 캡션처럼 미디어 사이의 관계를 표현에 반영하게 합니다. 제품 카탈로그에서는 사진과 승인된 설명이 하나의 검색 가능한 대상을 설명하면 함께 제공하세요. 문서 컬렉션에서는 원본을 초점을 좁힌 지문이나 페이지로 나누고 제목과 위치를 보존하세요. 미디어 라이브러리에서는 사용자가 찾아야 할 사건에 해당하는 클립을 선택하고, 저장된 레코드에 원래 시간 범위를 유지하세요.\n\n유용한 검색 작업은 의도한 관계를 명확히 합니다. 설명을 찾는 질문, 시각적으로 비슷한 항목 검색, 주제별 군집화는 같은 원본 컬렉션을 사용해도 서로 다른 작업입니다. 콘텐츠를 일관되게 준비하고, 에디션과 차원을 기록하고, 모든 벡터를 원본에 연결하세요. 유사도는 애플리케이션이 살펴볼 후보를 제공하며, 두 레코드가 같은 사실을 말하거나 검색된 원본이 질문에 완전히 답한다는 증거는 아닙니다.\n\n실제 미디어 검색에서는 선택한 이미지나 비디오 발췌를 표현하고, 원하는 콘텐츠의 설명과 비교하세요. 사용자가 검토할 수 있도록 일치한 원본을 캡션이나 시간 범위와 함께 제시하세요. 지식 어시스턴트에서는 글로 된 응답을 생성하기 전에 관련 페이지나 지문을 검색하세요. Preview 모델의 역할은 이러한 선택 단계를 지원하는 멀티모달 수치 표현이며, 저장, 순위 규칙, 최종 답변은 주변 워크플로의 일부로 남습니다.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 8192,
      "manufacturer_input": [
        "text",
        "image",
        "file",
        "audio",
        "video"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": 8192,
    "formats": [
      "embeddings"
    ],
    "id": "google/gemini-embedding-2-preview",
    "input": [
      "text"
    ],
    "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": "model이 없거나 JSON 형식이 잘못되었습니다.",
                "http_status": 400,
                "recovery": "표시된 필드를 수정하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "설정된 본문 한도를 초과했습니다.",
                "http_status": 413,
                "recovery": "실제 자료의 분량을 줄이세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "입력 또는 제어 값이 현재 전용 정책을 위반합니다.",
                "http_status": 422,
                "recovery": "이전 제어 값을 이어받지 말고 제시된 최소 텍스트 입력을 사용하세요.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "접근 허용 또는 견적을 연결할 수 없습니다.",
                "http_status": 503,
                "recovery": "응답을 보존하세요. 정책을 다른 것으로 대체하지 마세요.",
                "type": "billing_error"
              }
            ],
            "example_body": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "임베딩 작업 엔드포인트는 추가되지 않습니다."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]"
                ],
                "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": [
                  "google/gemini-embedding-2-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input",
                "required": true,
                "type": "string|string[]"
              }
            ],
            "profile_binding": "Minimal current Source subset: only model and text input. Optional controls and another model dimensions/token limits are not inherited.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "google/gemini-embedding-2-preview"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "input": [
                "First document",
                "Second document"
              ],
              "model": "google/gemini-embedding-2-preview"
            },
            "unsupported": [
              "image/audio/file objects in this minimal text profile",
              "dimensions (current Native43 supports_dimensions:false)",
              "foreign model-specific dimensions or token limits"
            ]
          },
          "hints": [
            "반환된 모든 벡터와 인덱스를 보존하세요.",
            "이 최소 텍스트 프로필을 근거로 이미지/오디오/파일 객체 지원을 추론하지 않습니다."
          ],
          "input": {
            "content_type": "application/json",
            "input_shapes": [
              "string",
              "string[]"
            ],
            "material_types": [
              "text"
            ],
            "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": "Keep every vector, index, model and usage field. Current dedicated Source validates count, finite float elements and consistent actual dimensions."
          }
        },
        "ctx": 8192,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "토큰의 기본 단가",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > embedding-request.json <<'JSON_REQUEST'\n{\n  \"model\": \"google/gemini-embedding-2-preview\",\n  \"input\": [\n    \"First document\",\n    \"Second document\"\n  ]\n}\nJSON_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 @embedding-request.json -o embedding-response.json\n",
            "label": "curl · minimal text embeddings",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "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.4,
        "input": [
          "text"
        ],
        "label": "임베딩",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "google/gemini-embedding-2-preview",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "google/gemini-embedding-2-preview",
        "request_model_id": "google/gemini-embedding-2-preview",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini Embedding 2 Preview",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "short": "Gemini Embedding 2 Preview는 텍스트, 이미지, 오디오, 비디오, PDF를 하나의 멀티모달 공간에 있는 수치 벡터로 변환합니다. 별도로 문서화된 프리뷰 프로필은 교차 모달 검색과 비교, 8,192토큰 입력, 유연한 벡터 차원을 지원합니다."
  },
  "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": "Gemini Embedding 2 Preview는 텍스트, 이미지, 오디오, 비디오, PDF를 하나의 멀티모달 공간에 있는 수치 벡터로 변환합니다. 별도로 문서화된 프리뷰 프로필은 교차 모달 검색과 비교, 8,192토큰 입력, 유연한 벡터 차원을 지원합니다.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "05a615d2a5c684173f253a76e52da072641a0e762d054346a02215e672d07b61",
    "renderer_sha256": "6825a317438b70ab0939441dcebefece462384e77f7e96cce899605c4b208caa"
  },
  "sourceRevision": "8bcaabdc16c0da06c438d8854f66ff06ca9458b73b898752b27b7ab1f2bc9e11"
}
