{
  "aboutHtml": "<p>Voyage 3 Large — модель текстовых эмбеддингов для поиска нужной информации в коллекции документов. Она представляет каждый предоставленный текст числовым вектором, позволяя приложению сравнивать поисковый запрос с фрагментами, формулировки которых могут отличаться, но смысл связан. Voyage AI позиционирует эту версию для универсального и многоязычного поиска по технической документации, разговорам, длинным документам и другим материалам.</p><p>Создавайте поисковую коллекцию из информации, которую людям действительно нужно находить. В базе знаний продукта сохраняйте объяснение функции вместе с её предварительными условиями и важными исключениями. В записях встреч сохраняйте метки говорящих и достаточный окружающий контекст для понимания темы. Разделяйте крупный источник по полезным границам и сохраняйте название источника, идентификатор документа и положение фрагмента рядом с каждым вектором.</p><p>Подготавливайте поисковый вопрос как запрос, а индексируемый материал — как документы. В процессе текстовых эмбеддингов производителя тип входных данных сообщает модели поисковую роль текста. Например, запрос «Как участнику восстановить доступ после потери ключа безопасности?» можно сравнить с фрагментами поддержки, описывающими восстановление, даже если они сформулированы иначе. Сохраняйте исходный фрагмент доступным, чтобы результат поиска показывал данные, стоящие за совпадением.</p><p>У модели контекстное окно 32 000 токенов. Длинный ввод может сохранить целый раздел, но полный документ не всегда наиболее полезная единица поиска. Обобщённый вектор может указать верный файл, оставив читателю поиск точного ответа. Выбирайте границы фрагментов под результат, который хотите показывать, и сохраняйте заголовки, оговорки и определения вместе с поясняемым содержанием.</p><p>Voyage 3 Large поддерживает векторы размерностью 2 048, 1 024, 512 или 256. Производитель также документирует представления с плавающей точкой, знаковые или беззнаковые восьмибитные и двоичные представления. Эти варианты позволяют поисковой системе сопоставить детализацию вектора с размером индекса и поведением поиска. Выбирайте формат, поддерживаемый нужным векторным хранилищем, затем проверяйте его на реальном корпусе и характерных вопросах до выбора настроек рабочего индекса.</p><p>Для многоязычного поиска включайте проверочные вопросы на языках пользователей и проверяйте найденные фрагменты на языке оригинала. Единый поисковый интерфейс может обслуживать коллекции нескольких языков, а метаданные документов всё равно определяют язык и версию источника. При извлечении сохраняйте значимые имена, сокращения и отраслевые термины, не заменяя их общим резюме перед созданием эмбеддинга.</p><p>Используйте векторы для поиска фрагментов-кандидатов для поисковой страницы, помощника по базе знаний или этапа выбора документов. Используйте одинаковую модель и настройки векторов для индексируемой коллекции и её запросов. При замене модели эмбеддингов или изменении размерности намеренно перестраивайте и сравнивайте затронутый индекс; одна длина вектора не определяет способ его получения.</p><p>Оценивайте результат по полезности поиска: появляется ли верный фрагмент, не стоят ли близкие, но вводящие в заблуждение фрагменты выше него и содержит ли показанная выдержка ответ. Сохраняйте небольшой набор реальных вопросов с ожидаемыми источниками, включая неоднозначные формулировки и почти одинаковые документы. Эмбеддинг даёт поисковое представление; приложение сохраняет исходный текст, права доступа и ссылки, необходимые для превращения совпадения в полезный результат.</p>",
  "aboutText": "Voyage 3 Large — модель текстовых эмбеддингов для поиска нужной информации в коллекции документов. Она представляет каждый предоставленный текст числовым вектором, позволяя приложению сравнивать поисковый запрос с фрагментами, формулировки которых могут отличаться, но смысл связан. Voyage AI позиционирует эту версию для универсального и многоязычного поиска по технической документации, разговорам, длинным документам и другим материалам.\n\nСоздавайте поисковую коллекцию из информации, которую людям действительно нужно находить. В базе знаний продукта сохраняйте объяснение функции вместе с её предварительными условиями и важными исключениями. В записях встреч сохраняйте метки говорящих и достаточный окружающий контекст для понимания темы. Разделяйте крупный источник по полезным границам и сохраняйте название источника, идентификатор документа и положение фрагмента рядом с каждым вектором.\n\nПодготавливайте поисковый вопрос как запрос, а индексируемый материал — как документы. В процессе текстовых эмбеддингов производителя тип входных данных сообщает модели поисковую роль текста. Например, запрос «Как участнику восстановить доступ после потери ключа безопасности?» можно сравнить с фрагментами поддержки, описывающими восстановление, даже если они сформулированы иначе. Сохраняйте исходный фрагмент доступным, чтобы результат поиска показывал данные, стоящие за совпадением.\n\nУ модели контекстное окно 32 000 токенов. Длинный ввод может сохранить целый раздел, но полный документ не всегда наиболее полезная единица поиска. Обобщённый вектор может указать верный файл, оставив читателю поиск точного ответа. Выбирайте границы фрагментов под результат, который хотите показывать, и сохраняйте заголовки, оговорки и определения вместе с поясняемым содержанием.\n\nVoyage 3 Large поддерживает векторы размерностью 2 048, 1 024, 512 или 256. Производитель также документирует представления с плавающей точкой, знаковые или беззнаковые восьмибитные и двоичные представления. Эти варианты позволяют поисковой системе сопоставить детализацию вектора с размером индекса и поведением поиска. Выбирайте формат, поддерживаемый нужным векторным хранилищем, затем проверяйте его на реальном корпусе и характерных вопросах до выбора настроек рабочего индекса.\n\nДля многоязычного поиска включайте проверочные вопросы на языках пользователей и проверяйте найденные фрагменты на языке оригинала. Единый поисковый интерфейс может обслуживать коллекции нескольких языков, а метаданные документов всё равно определяют язык и версию источника. При извлечении сохраняйте значимые имена, сокращения и отраслевые термины, не заменяя их общим резюме перед созданием эмбеддинга.\n\nИспользуйте векторы для поиска фрагментов-кандидатов для поисковой страницы, помощника по базе знаний или этапа выбора документов. Используйте одинаковую модель и настройки векторов для индексируемой коллекции и её запросов. При замене модели эмбеддингов или изменении размерности намеренно перестраивайте и сравнивайте затронутый индекс; одна длина вектора не определяет способ его получения.\n\nОценивайте результат по полезности поиска: появляется ли верный фрагмент, не стоят ли близкие, но вводящие в заблуждение фрагменты выше него и содержит ли показанная выдержка ответ. Сохраняйте небольшой набор реальных вопросов с ожидаемыми источниками, включая неоднозначные формулировки и почти одинаковые документы. Эмбеддинг даёт поисковое представление; приложение сохраняет исходный текст, права доступа и ссылки, необходимые для превращения совпадения в полезный результат.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "2064e8205eb391a3c7cc572da66a18e3e0dba03b0a752de9122eeff997fa1d99",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ru",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Voyage AI: Voyage 3 Large</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-3-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|voyage-3-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 3 Large превращает текст в векторы для универсального и многоязычного поиска. Входное окно 32 000 токенов, выбор размерности векторов и квантованные форматы поддерживают базы знаний с поиском, поиск документов и генерацию с дополнением из найденных материалов.</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>Voyage 3 Large — модель текстовых эмбеддингов для поиска нужной информации в коллекции документов. Она представляет каждый предоставленный текст числовым вектором, позволяя приложению сравнивать поисковый запрос с фрагментами, формулировки которых могут отличаться, но смысл связан. Voyage AI позиционирует эту версию для универсального и многоязычного поиска по технической документации, разговорам, длинным документам и другим материалам.</p><p>Создавайте поисковую коллекцию из информации, которую людям действительно нужно находить. В базе знаний продукта сохраняйте объяснение функции вместе с её предварительными условиями и важными исключениями. В записях встреч сохраняйте метки говорящих и достаточный окружающий контекст для понимания темы. Разделяйте крупный источник по полезным границам и сохраняйте название источника, идентификатор документа и положение фрагмента рядом с каждым вектором.</p><p>Подготавливайте поисковый вопрос как запрос, а индексируемый материал — как документы. В процессе текстовых эмбеддингов производителя тип входных данных сообщает модели поисковую роль текста. Например, запрос «Как участнику восстановить доступ после потери ключа безопасности?» можно сравнить с фрагментами поддержки, описывающими восстановление, даже если они сформулированы иначе. Сохраняйте исходный фрагмент доступным, чтобы результат поиска показывал данные, стоящие за совпадением.</p><p>У модели контекстное окно 32 000 токенов. Длинный ввод может сохранить целый раздел, но полный документ не всегда наиболее полезная единица поиска. Обобщённый вектор может указать верный файл, оставив читателю поиск точного ответа. Выбирайте границы фрагментов под результат, который хотите показывать, и сохраняйте заголовки, оговорки и определения вместе с поясняемым содержанием.</p><p>Voyage 3 Large поддерживает векторы размерностью 2 048, 1 024, 512 или 256. Производитель также документирует представления с плавающей точкой, знаковые или беззнаковые восьмибитные и двоичные представления. Эти варианты позволяют поисковой системе сопоставить детализацию вектора с размером индекса и поведением поиска. Выбирайте формат, поддерживаемый нужным векторным хранилищем, затем проверяйте его на реальном корпусе и характерных вопросах до выбора настроек рабочего индекса.</p><p>Для многоязычного поиска включайте проверочные вопросы на языках пользователей и проверяйте найденные фрагменты на языке оригинала. Единый поисковый интерфейс может обслуживать коллекции нескольких языков, а метаданные документов всё равно определяют язык и версию источника. При извлечении сохраняйте значимые имена, сокращения и отраслевые термины, не заменяя их общим резюме перед созданием эмбеддинга.</p><p>Используйте векторы для поиска фрагментов-кандидатов для поисковой страницы, помощника по базе знаний или этапа выбора документов. Используйте одинаковую модель и настройки векторов для индексируемой коллекции и её запросов. При замене модели эмбеддингов или изменении размерности намеренно перестраивайте и сравнивайте затронутый индекс; одна длина вектора не определяет способ его получения.</p><p>Оценивайте результат по полезности поиска: появляется ли верный фрагмент, не стоят ли близкие, но вводящие в заблуждение фрагменты выше него и содержит ли показанная выдержка ответ. Сохраняйте небольшой набор реальных вопросов с ожидаемыми источниками, включая неоднозначные формулировки и почти одинаковые документы. Эмбеддинг даёт поисковое представление; приложение сохраняет исходный текст, права доступа и ссылки, необходимые для превращения совпадения в полезный результат.</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></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><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>voyage-3-large</div><div>Условия: Используйте точный идентификатор модели Ailoot.</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr><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 or array&lt;string&gt;</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Условия: Текст или список текстов; сохраняйте по одному вектору для каждого возвращённого элемента data вместе с его индексом.</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr></tbody></table></div><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>optional</code></th><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><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>text</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>conditions</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>Передайте текст с выбранной моделью; сохраняйте каждый возвращённый вектор и его индекс.</td></tr></tbody></table></div><p>Жизненный цикл: <code>synchronous</code></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/ru/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-2787-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2787-panel-0\" aria-selected=\"true\" tabindex=\"0\">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-2787-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2787-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;voyage-3-large&quot;,\n  &quot;input&quot;: &quot;The quick brown fox jumps over the lazy dog&quot;\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3></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=voyage-3-large&amp;route=Ultra&amp;caller=voyage-3-large&amp;fmt=embeddings\"><code>voyage-3-large</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=voyage-3-large&amp;route=Ultra&amp;caller=voyage-3-large&amp;fmt=embeddings\"><code>voyage-3-large</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-3-large",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-3-large",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-3-large",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Сохраните исходный ответ и X-Client-Request-ID для сверки. Неоднозначный ответ не разрешает повторно отправлять тот же запрос на создание.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Сохраните полный ответ JSON, каждый вектор с его индексом, все поля статистики использования и заголовки запроса.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Используйте точный идентификатор модели Ailoot.",
                "default_known": false,
                "enum": [
                  "voyage-3-large"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Текст или список текстов; сохраняйте по одному вектору для каждого возвращённого элемента data вместе с его индексом.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-3-large"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-3-large"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Передайте текст с выбранной моделью; сохраняйте каждый возвращённый вектор и его индекс."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "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": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-3-large\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "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": "voyage-3-large",
        "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": "voyage-3-large",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "7f7eb337037efa3a56e8458982f9645095987936049a2d8202f877a058fbda79",
    "input_html_sha256": "3d548cd09ecaf51a247bc0691e096ad25c04834169cc0fb0fc7489e9ca35e947",
    "private_audit_sha256": "aaf44981c407773d240f799f50804095f25c38fee21ced447c2dd9cbb29e2683",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/voyage-3-large/",
    "description": "Voyage 3 Large превращает текст в векторы для универсального и многоязычного поиска. Входное окно 32 000 токенов, выбор размерности векторов и квантованные форматы поддерживают базы знаний с поиском, поиск документов и генерацию с дополнением из найденных материалов.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/voyage-3-large/index.md",
    "title": "Voyage AI: Voyage 3 Large — Ailoot",
    "url": "https://ailoot.ai/models/ru/voyage-3-large/"
  },
  "rawModel": {
    "about": "Voyage 3 Large — модель текстовых эмбеддингов для поиска нужной информации в коллекции документов. Она представляет каждый предоставленный текст числовым вектором, позволяя приложению сравнивать поисковый запрос с фрагментами, формулировки которых могут отличаться, но смысл связан. Voyage AI позиционирует эту версию для универсального и многоязычного поиска по технической документации, разговорам, длинным документам и другим материалам.\n\nСоздавайте поисковую коллекцию из информации, которую людям действительно нужно находить. В базе знаний продукта сохраняйте объяснение функции вместе с её предварительными условиями и важными исключениями. В записях встреч сохраняйте метки говорящих и достаточный окружающий контекст для понимания темы. Разделяйте крупный источник по полезным границам и сохраняйте название источника, идентификатор документа и положение фрагмента рядом с каждым вектором.\n\nПодготавливайте поисковый вопрос как запрос, а индексируемый материал — как документы. В процессе текстовых эмбеддингов производителя тип входных данных сообщает модели поисковую роль текста. Например, запрос «Как участнику восстановить доступ после потери ключа безопасности?» можно сравнить с фрагментами поддержки, описывающими восстановление, даже если они сформулированы иначе. Сохраняйте исходный фрагмент доступным, чтобы результат поиска показывал данные, стоящие за совпадением.\n\nУ модели контекстное окно 32 000 токенов. Длинный ввод может сохранить целый раздел, но полный документ не всегда наиболее полезная единица поиска. Обобщённый вектор может указать верный файл, оставив читателю поиск точного ответа. Выбирайте границы фрагментов под результат, который хотите показывать, и сохраняйте заголовки, оговорки и определения вместе с поясняемым содержанием.\n\nVoyage 3 Large поддерживает векторы размерностью 2 048, 1 024, 512 или 256. Производитель также документирует представления с плавающей точкой, знаковые или беззнаковые восьмибитные и двоичные представления. Эти варианты позволяют поисковой системе сопоставить детализацию вектора с размером индекса и поведением поиска. Выбирайте формат, поддерживаемый нужным векторным хранилищем, затем проверяйте его на реальном корпусе и характерных вопросах до выбора настроек рабочего индекса.\n\nДля многоязычного поиска включайте проверочные вопросы на языках пользователей и проверяйте найденные фрагменты на языке оригинала. Единый поисковый интерфейс может обслуживать коллекции нескольких языков, а метаданные документов всё равно определяют язык и версию источника. При извлечении сохраняйте значимые имена, сокращения и отраслевые термины, не заменяя их общим резюме перед созданием эмбеддинга.\n\nИспользуйте векторы для поиска фрагментов-кандидатов для поисковой страницы, помощника по базе знаний или этапа выбора документов. Используйте одинаковую модель и настройки векторов для индексируемой коллекции и её запросов. При замене модели эмбеддингов или изменении размерности намеренно перестраивайте и сравнивайте затронутый индекс; одна длина вектора не определяет способ его получения.\n\nОценивайте результат по полезности поиска: появляется ли верный фрагмент, не стоят ли близкие, но вводящие в заблуждение фрагменты выше него и содержит ли показанная выдержка ответ. Сохраняйте небольшой набор реальных вопросов с ожидаемыми источниками, включая неоднозначные формулировки и почти одинаковые документы. Эмбеддинг даёт поисковое представление; приложение сохраняет исходный текст, права доступа и ссылки, необходимые для превращения совпадения в полезный результат.",
    "about_sha256": "f8a14551c12ad8f26e408dfc995cf463d79d159d38d8d98b1790a59c1789dcc3",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 32000,
      "manufacturer_input": [
        "text"
      ],
      "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": null,
    "display_name": "Voyage AI: Voyage 3 Large",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-3-large",
    "input": [
      "text"
    ],
    "kind": "embedding",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Сохраните исходный ответ и X-Client-Request-ID для сверки. Неоднозначный ответ не разрешает повторно отправлять тот же запрос на создание.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Сохраните полный ответ JSON, каждый вектор с его индексом, все поля статистики использования и заголовки запроса.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Используйте точный идентификатор модели Ailoot.",
                "default_known": false,
                "enum": [
                  "voyage-3-large"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Текст или список текстов; сохраняйте по одному вектору для каждого возвращённого элемента data вместе с его индексом.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-3-large"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-3-large"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Передайте текст с выбранной моделью; сохраняйте каждый возвращённый вектор и его индекс."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "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": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-3-large\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "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": "voyage-3-large",
        "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": "voyage-3-large",
        "request_model_id": "voyage-3-large",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage 3 Large",
    "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": "Voyage 3 Large превращает текст в векторы для универсального и многоязычного поиска. Входное окно 32 000 токенов, выбор размерности векторов и квантованные форматы поддерживают базы знаний с поиском, поиск документов и генерацию с дополнением из найденных материалов.",
    "short_sha256": "97e0e5100c1133c3a38a116210c6492617852a455c2338779be2ecc6f0754b10"
  },
  "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 3 Large превращает текст в векторы для универсального и многоязычного поиска. Входное окно 32 000 токенов, выбор размерности векторов и квантованные форматы поддерживают базы знаний с поиском, поиск документов и генерацию с дополнением из найденных материалов.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "72547fc7c81515f18016ad7928ac76a337326e93e06ad0f437ffcf0a14bff8be",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "ef89e4a459e9deb6e117941342c9f32f0a9f4be620e8f8bf9e80e1fa3db8fa97"
}
