{
  "aboutHtml": "<p>Voyage 3 Large est un modèle d’embeddings textuels qui permet de trouver des informations pertinentes dans une collection de documents. Il représente chaque texte fourni par un vecteur numérique, ce qui permet à une application de comparer une requête de recherche à des passages dont la formulation peut différer, mais dont le sens est lié. Voyage AI positionne cette édition pour la recherche d’information généraliste et multilingue, sur des contenus tels que la documentation technique, les conversations et les documents longs.</p><p>Constituez la collection interrogeable à partir des informations que les utilisateurs ont réellement besoin de retrouver. Pour une base de connaissances produit, conservez l’explication d’une fonctionnalité avec ses prérequis et les exceptions pertinentes. Pour des comptes rendus de réunion, préservez les indications de locuteur et suffisamment d’échanges environnants pour rendre le sujet compréhensible. Découpez une source volumineuse à des endroits utiles et conservez le titre de la source, l’identifiant du document et la position du passage avec chaque vecteur.</p><p>Préparez une question de recherche comme une requête et les contenus indexés comme des documents. Dans le processus d’embedding textuel de l’éditeur, le type d’entrée indique au modèle le rôle du texte dans la recherche. Une requête telle que « Comment un membre peut-il récupérer son accès après avoir perdu une clé de sécurité ? » peut alors être comparée à des passages d’assistance décrivant la procédure de récupération, même si ces passages emploient une autre formulation. Gardez le passage original accessible pour que le résultat de recherche puisse montrer les éléments qui justifient la correspondance.</p><p>Le modèle dispose d’une fenêtre de contexte de 32 000 jetons. Une entrée longue peut préserver une section complète, mais un document entier n’est pas toujours l’unité de recherche la plus utile. Un vecteur couvrant un contenu large peut pointer vers le bon fichier tout en laissant au lecteur le soin de trouver la réponse précise. Délimitez les passages en fonction du résultat que vous souhaitez afficher et conservez les titres, les réserves et les définitions avec le contenu qu’ils expliquent.</p><p>Voyage 3 Large prend en charge des vecteurs de 2 048, 1 024, 512 ou 256 dimensions. L’éditeur documente également des représentations à virgule flottante, sur huit bits signés ou non signés, et binaires. Ces choix permettent à un système de recherche de comparer le niveau de détail des vecteurs à la taille de l’index et au comportement de la recherche. Sélectionnez le format pris en charge par le stockage vectoriel prévu, puis évaluez-le sur le corpus réel et des questions représentatives avant de choisir les paramètres de l’index de production.</p><p>Pour une recherche multilingue, incluez des questions de test dans les langues utilisées par vos utilisateurs et examinez les passages sources retrouvés dans leur langue d’origine. Une interface de recherche commune peut desservir plusieurs collections linguistiques, tandis que les métadonnées des documents identifient toujours la variante linguistique et la version de la source. Préservez les noms significatifs, les abréviations et les termes du domaine pendant l’extraction, au lieu de les remplacer par un résumé générique avant de créer les embeddings.</p><p>Utilisez les vecteurs pour retrouver des passages candidats destinés à une page de recherche, à un assistant de connaissances ou à une étape de sélection de documents. Conservez le même modèle et les mêmes paramètres vectoriels pour la collection indexée et ses requêtes. Lorsque vous remplacez un modèle d’embeddings ou modifiez les dimensions des vecteurs, reconstruisez et comparez délibérément l’index concerné ; la longueur d’un vecteur ne suffit pas à identifier la façon dont il a été produit.</p><p>Jugez le résultat selon l’utilité de la recherche : le bon passage apparaît-il, des passages proches mais trompeurs sont-ils classés avant lui, et l’extrait affiché contient-il la réponse ? Conservez un petit ensemble de questions réelles avec les sources attendues, y compris des formulations ambiguës et des documents presque identiques. L’embedding fournit une représentation interrogeable ; l’application conserve le texte source, les autorisations et les liens nécessaires pour transformer une correspondance en résultat exploitable.</p>",
  "aboutText": "Voyage 3 Large est un modèle d’embeddings textuels qui permet de trouver des informations pertinentes dans une collection de documents. Il représente chaque texte fourni par un vecteur numérique, ce qui permet à une application de comparer une requête de recherche à des passages dont la formulation peut différer, mais dont le sens est lié. Voyage AI positionne cette édition pour la recherche d’information généraliste et multilingue, sur des contenus tels que la documentation technique, les conversations et les documents longs.\n\nConstituez la collection interrogeable à partir des informations que les utilisateurs ont réellement besoin de retrouver. Pour une base de connaissances produit, conservez l’explication d’une fonctionnalité avec ses prérequis et les exceptions pertinentes. Pour des comptes rendus de réunion, préservez les indications de locuteur et suffisamment d’échanges environnants pour rendre le sujet compréhensible. Découpez une source volumineuse à des endroits utiles et conservez le titre de la source, l’identifiant du document et la position du passage avec chaque vecteur.\n\nPréparez une question de recherche comme une requête et les contenus indexés comme des documents. Dans le processus d’embedding textuel de l’éditeur, le type d’entrée indique au modèle le rôle du texte dans la recherche. Une requête telle que « Comment un membre peut-il récupérer son accès après avoir perdu une clé de sécurité ? » peut alors être comparée à des passages d’assistance décrivant la procédure de récupération, même si ces passages emploient une autre formulation. Gardez le passage original accessible pour que le résultat de recherche puisse montrer les éléments qui justifient la correspondance.\n\nLe modèle dispose d’une fenêtre de contexte de 32 000 jetons. Une entrée longue peut préserver une section complète, mais un document entier n’est pas toujours l’unité de recherche la plus utile. Un vecteur couvrant un contenu large peut pointer vers le bon fichier tout en laissant au lecteur le soin de trouver la réponse précise. Délimitez les passages en fonction du résultat que vous souhaitez afficher et conservez les titres, les réserves et les définitions avec le contenu qu’ils expliquent.\n\nVoyage 3 Large prend en charge des vecteurs de 2 048, 1 024, 512 ou 256 dimensions. L’éditeur documente également des représentations à virgule flottante, sur huit bits signés ou non signés, et binaires. Ces choix permettent à un système de recherche de comparer le niveau de détail des vecteurs à la taille de l’index et au comportement de la recherche. Sélectionnez le format pris en charge par le stockage vectoriel prévu, puis évaluez-le sur le corpus réel et des questions représentatives avant de choisir les paramètres de l’index de production.\n\nPour une recherche multilingue, incluez des questions de test dans les langues utilisées par vos utilisateurs et examinez les passages sources retrouvés dans leur langue d’origine. Une interface de recherche commune peut desservir plusieurs collections linguistiques, tandis que les métadonnées des documents identifient toujours la variante linguistique et la version de la source. Préservez les noms significatifs, les abréviations et les termes du domaine pendant l’extraction, au lieu de les remplacer par un résumé générique avant de créer les embeddings.\n\nUtilisez les vecteurs pour retrouver des passages candidats destinés à une page de recherche, à un assistant de connaissances ou à une étape de sélection de documents. Conservez le même modèle et les mêmes paramètres vectoriels pour la collection indexée et ses requêtes. Lorsque vous remplacez un modèle d’embeddings ou modifiez les dimensions des vecteurs, reconstruisez et comparez délibérément l’index concerné ; la longueur d’un vecteur ne suffit pas à identifier la façon dont il a été produit.\n\nJugez le résultat selon l’utilité de la recherche : le bon passage apparaît-il, des passages proches mais trompeurs sont-ils classés avant lui, et l’extrait affiché contient-il la réponse ? Conservez un petit ensemble de questions réelles avec les sources attendues, y compris des formulations ambiguës et des documents presque identiques. L’embedding fournit une représentation interrogeable ; l’application conserve le texte source, les autorisations et les liens nécessaires pour transformer une correspondance en résultat exploitable.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "632354ff4562e56712e2b52d30ccdc1c2b088e8a1c7db02122433db37e2616fd",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr-ca",
  "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=\"Fermer\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-3-large</code><button type=\"button\" id=\"copy-id\">Copier l’ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Rubriques de la fiche modèle\"><button type=\"button\" data-card-jump=\"overview\">Pour commencer</button><button type=\"button\" data-card-jump=\"methods\">Entrées et méthodes</button><button type=\"button\" data-card-jump=\"pricing\">Tarifs</button><button type=\"button\" data-card-jump=\"examples\">Exemples</button><button type=\"button\" data-card-jump=\"results\">Résultats</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Méthodes 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\">Embeddings</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\">Pour commencer</h3><p class=\"mdesc-full\">Voyage 3 Large transforme le texte en vecteurs pour la recherche d’information généraliste et multilingue. Sa fenêtre d’entrée de 32 000 jetons, ses dimensions vectorielles sélectionnables et ses formats quantifiés permettent de créer des bases de connaissances interrogeables, de trouver des documents et d’alimenter la génération augmentée par la recherche.</p><dl class=\"card-io\" data-card-io><div><dt>Entrées acceptées</dt><dd>Texte</dd></div><div><dt>Résultats</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>À propos du modèle</summary><p class=\"note-s\" data-model-method-boundary>Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.</p><div class=\"mabout\" id=\"m-about\"><p>Voyage 3 Large est un modèle d’embeddings textuels qui permet de trouver des informations pertinentes dans une collection de documents. Il représente chaque texte fourni par un vecteur numérique, ce qui permet à une application de comparer une requête de recherche à des passages dont la formulation peut différer, mais dont le sens est lié. Voyage AI positionne cette édition pour la recherche d’information généraliste et multilingue, sur des contenus tels que la documentation technique, les conversations et les documents longs.</p><p>Constituez la collection interrogeable à partir des informations que les utilisateurs ont réellement besoin de retrouver. Pour une base de connaissances produit, conservez l’explication d’une fonctionnalité avec ses prérequis et les exceptions pertinentes. Pour des comptes rendus de réunion, préservez les indications de locuteur et suffisamment d’échanges environnants pour rendre le sujet compréhensible. Découpez une source volumineuse à des endroits utiles et conservez le titre de la source, l’identifiant du document et la position du passage avec chaque vecteur.</p><p>Préparez une question de recherche comme une requête et les contenus indexés comme des documents. Dans le processus d’embedding textuel de l’éditeur, le type d’entrée indique au modèle le rôle du texte dans la recherche. Une requête telle que « Comment un membre peut-il récupérer son accès après avoir perdu une clé de sécurité ? » peut alors être comparée à des passages d’assistance décrivant la procédure de récupération, même si ces passages emploient une autre formulation. Gardez le passage original accessible pour que le résultat de recherche puisse montrer les éléments qui justifient la correspondance.</p><p>Le modèle dispose d’une fenêtre de contexte de 32 000 jetons. Une entrée longue peut préserver une section complète, mais un document entier n’est pas toujours l’unité de recherche la plus utile. Un vecteur couvrant un contenu large peut pointer vers le bon fichier tout en laissant au lecteur le soin de trouver la réponse précise. Délimitez les passages en fonction du résultat que vous souhaitez afficher et conservez les titres, les réserves et les définitions avec le contenu qu’ils expliquent.</p><p>Voyage 3 Large prend en charge des vecteurs de 2 048, 1 024, 512 ou 256 dimensions. L’éditeur documente également des représentations à virgule flottante, sur huit bits signés ou non signés, et binaires. Ces choix permettent à un système de recherche de comparer le niveau de détail des vecteurs à la taille de l’index et au comportement de la recherche. Sélectionnez le format pris en charge par le stockage vectoriel prévu, puis évaluez-le sur le corpus réel et des questions représentatives avant de choisir les paramètres de l’index de production.</p><p>Pour une recherche multilingue, incluez des questions de test dans les langues utilisées par vos utilisateurs et examinez les passages sources retrouvés dans leur langue d’origine. Une interface de recherche commune peut desservir plusieurs collections linguistiques, tandis que les métadonnées des documents identifient toujours la variante linguistique et la version de la source. Préservez les noms significatifs, les abréviations et les termes du domaine pendant l’extraction, au lieu de les remplacer par un résumé générique avant de créer les embeddings.</p><p>Utilisez les vecteurs pour retrouver des passages candidats destinés à une page de recherche, à un assistant de connaissances ou à une étape de sélection de documents. Conservez le même modèle et les mêmes paramètres vectoriels pour la collection indexée et ses requêtes. Lorsque vous remplacez un modèle d’embeddings ou modifiez les dimensions des vecteurs, reconstruisez et comparez délibérément l’index concerné ; la longueur d’un vecteur ne suffit pas à identifier la façon dont il a été produit.</p><p>Jugez le résultat selon l’utilité de la recherche : le bon passage apparaît-il, des passages proches mais trompeurs sont-ils classés avant lui, et l’extrait affiché contient-il la réponse ? Conservez un petit ensemble de questions réelles avec les sources attendues, y compris des formulations ambiguës et des documents presque identiques. L’embedding fournit une représentation interrogeable ; l’application conserve le texte source, les autorisations et les liens nécessaires pour transformer une correspondance en résultat exploitable.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible dans Ailoot · entrées et méthodes</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Plongements vectoriels</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Entrée</dt><dd><code>text</code></dd></div><div><dt>Sortie</dt><dd><code>embedding</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Champ</th><th>Type</th><th>Exigence</th><th>Valeurs et limites</th><th>Par défaut</th></tr></thead><tbody><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>voyage-3-large</div><div>Conditions: Utilisez le sélecteur de modèles Ailoot exact.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Conditions: Un texte ou une liste de textes; conservez un vecteur pour chaque élément de données retourné, ainsi que son indice.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Paramètres et cycle de vie de la méthode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Paramètre</th><th>Contrat</th></tr></thead><tbody><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>content_type</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>application/json</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>required</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>model, input</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>optional</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span></td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>material_types</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>text</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>conditions</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>Envoyez du texte avec le modèle sélectionné; conservez chaque vecteur retourné et son indice.</td></tr></tbody></table></div><p>Cycle de vie : <code>synchronous</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifs</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.</p><dl data-price-conditions><dt>Mode rapide</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode rapide est sélectionné</span></dd><dt>Mode Flex</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode flex est sélectionné</span></dd><dt>Effort de raisonnement maximal</dt><dd>Non précisé <span class=\"note-s\">Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifs Ailoot</h4><h4>Prix par configuration</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuration</th><th>Barème tarifaire</th><th>Coût</th></tr></thead><tbody><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarifs de base des jetons</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>Tarif de base</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Jetons en entrée</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Sortie · Jetons en sortie</span> <b>$0</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Entrée · Lecture du cache</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Entrée · Écriture dans le cache</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Entrée · Écriture dans le cache, 1 h</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. <a href=\"/docs/fr-ca/billing/reserve/\">Fonctionnement de la réservation et du débit →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemples de requêtes</h3><h4>Ailoot Ultra · Plongements vectoriels</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><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 · enregistrez tous les vecteurs et toutes les données d’utilisation</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><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\">Recevoir et enregistrer les résultats</h3></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias du modèle</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>Alias des chemins de méthode</h4><p class=\"note-s\">Utilisez les chemins de méthode indiqués ci-dessus.</p><h4>ID d’appel associés</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": "Conservez la réponse d’origine et X-Client-Request-ID pour le rapprochement. Une réponse ambiguë n’autorise pas à soumettre à nouveau la même demande de création.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Enregistrez la réponse JSON complète, chaque vecteur avec son indice, tous les champs d’utilisation et les en-têtes de la requête.",
              "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": "Utilisez le sélecteur de modèles Ailoot exact.",
                "default_known": false,
                "enum": [
                  "voyage-3-large"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Un texte ou une liste de textes; conservez un vecteur pour chaque élément de données retourné, ainsi que son indice.",
                "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": [
              "Envoyez du texte avec le modèle sélectionné; conservez chaque vecteur retourné et son indice."
            ],
            "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": "Tarifs de base des jetons",
            "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": "Plongements vectoriels",
        "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": "6af0df378b73310b51034b66dbef3b932ad824fcfd60e844845badd71a7c9e2f",
    "input_html_sha256": "6f1f76c13b52e9d17dd3c4a2e2d0a3096f3cb5608afba9389e1f1d7106ba6e9d",
    "private_audit_sha256": "89d060f4558b60a3f5ef8bd2fc464c813f2b9ac02cc60cdb190bbeb17cbd1d83",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr-ca/voyage-3-large/",
    "description": "Voyage 3 Large transforme le texte en vecteurs pour la recherche d’information généraliste et multilingue. Sa fenêtre d’entrée de 32 000 jetons, ses dimensions vectorielles sélectionnables et ses formats quantifiés permettent de créer des bases de connaissances interrogeables, de trouver des documents et d’alimenter la génération augmentée par la recherche.",
    "locale": "fr-ca",
    "md_url": "https://ailoot.ai/models/fr-ca/voyage-3-large/index.md",
    "title": "Voyage AI: Voyage 3 Large — Ailoot",
    "url": "https://ailoot.ai/models/fr-ca/voyage-3-large/"
  },
  "rawModel": {
    "about": "Voyage 3 Large est un modèle d’embeddings textuels qui permet de trouver des informations pertinentes dans une collection de documents. Il représente chaque texte fourni par un vecteur numérique, ce qui permet à une application de comparer une requête de recherche à des passages dont la formulation peut différer, mais dont le sens est lié. Voyage AI positionne cette édition pour la recherche d’information généraliste et multilingue, sur des contenus tels que la documentation technique, les conversations et les documents longs.\n\nConstituez la collection interrogeable à partir des informations que les utilisateurs ont réellement besoin de retrouver. Pour une base de connaissances produit, conservez l’explication d’une fonctionnalité avec ses prérequis et les exceptions pertinentes. Pour des comptes rendus de réunion, préservez les indications de locuteur et suffisamment d’échanges environnants pour rendre le sujet compréhensible. Découpez une source volumineuse à des endroits utiles et conservez le titre de la source, l’identifiant du document et la position du passage avec chaque vecteur.\n\nPréparez une question de recherche comme une requête et les contenus indexés comme des documents. Dans le processus d’embedding textuel de l’éditeur, le type d’entrée indique au modèle le rôle du texte dans la recherche. Une requête telle que « Comment un membre peut-il récupérer son accès après avoir perdu une clé de sécurité ? » peut alors être comparée à des passages d’assistance décrivant la procédure de récupération, même si ces passages emploient une autre formulation. Gardez le passage original accessible pour que le résultat de recherche puisse montrer les éléments qui justifient la correspondance.\n\nLe modèle dispose d’une fenêtre de contexte de 32 000 jetons. Une entrée longue peut préserver une section complète, mais un document entier n’est pas toujours l’unité de recherche la plus utile. Un vecteur couvrant un contenu large peut pointer vers le bon fichier tout en laissant au lecteur le soin de trouver la réponse précise. Délimitez les passages en fonction du résultat que vous souhaitez afficher et conservez les titres, les réserves et les définitions avec le contenu qu’ils expliquent.\n\nVoyage 3 Large prend en charge des vecteurs de 2 048, 1 024, 512 ou 256 dimensions. L’éditeur documente également des représentations à virgule flottante, sur huit bits signés ou non signés, et binaires. Ces choix permettent à un système de recherche de comparer le niveau de détail des vecteurs à la taille de l’index et au comportement de la recherche. Sélectionnez le format pris en charge par le stockage vectoriel prévu, puis évaluez-le sur le corpus réel et des questions représentatives avant de choisir les paramètres de l’index de production.\n\nPour une recherche multilingue, incluez des questions de test dans les langues utilisées par vos utilisateurs et examinez les passages sources retrouvés dans leur langue d’origine. Une interface de recherche commune peut desservir plusieurs collections linguistiques, tandis que les métadonnées des documents identifient toujours la variante linguistique et la version de la source. Préservez les noms significatifs, les abréviations et les termes du domaine pendant l’extraction, au lieu de les remplacer par un résumé générique avant de créer les embeddings.\n\nUtilisez les vecteurs pour retrouver des passages candidats destinés à une page de recherche, à un assistant de connaissances ou à une étape de sélection de documents. Conservez le même modèle et les mêmes paramètres vectoriels pour la collection indexée et ses requêtes. Lorsque vous remplacez un modèle d’embeddings ou modifiez les dimensions des vecteurs, reconstruisez et comparez délibérément l’index concerné ; la longueur d’un vecteur ne suffit pas à identifier la façon dont il a été produit.\n\nJugez le résultat selon l’utilité de la recherche : le bon passage apparaît-il, des passages proches mais trompeurs sont-ils classés avant lui, et l’extrait affiché contient-il la réponse ? Conservez un petit ensemble de questions réelles avec les sources attendues, y compris des formulations ambiguës et des documents presque identiques. L’embedding fournit une représentation interrogeable ; l’application conserve le texte source, les autorisations et les liens nécessaires pour transformer une correspondance en résultat exploitable.",
    "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": "La tarification complète de la configuration figure dans les détails."
      }
    ],
    "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": "Conservez la réponse d’origine et X-Client-Request-ID pour le rapprochement. Une réponse ambiguë n’autorise pas à soumettre à nouveau la même demande de création.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Enregistrez la réponse JSON complète, chaque vecteur avec son indice, tous les champs d’utilisation et les en-têtes de la requête.",
              "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": "Utilisez le sélecteur de modèles Ailoot exact.",
                "default_known": false,
                "enum": [
                  "voyage-3-large"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Un texte ou une liste de textes; conservez un vecteur pour chaque élément de données retourné, ainsi que son indice.",
                "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": [
              "Envoyez du texte avec le modèle sélectionné; conservez chaque vecteur retourné et son indice."
            ],
            "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": "Tarifs de base des jetons",
            "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": "Plongements vectoriels",
        "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 transforme le texte en vecteurs pour la recherche d’information généraliste et multilingue. Sa fenêtre d’entrée de 32 000 jetons, ses dimensions vectorielles sélectionnables et ses formats quantifiés permettent de créer des bases de connaissances interrogeables, de trouver des documents et d’alimenter la génération augmentée par la recherche.",
    "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 transforme le texte en vecteurs pour la recherche d’information généraliste et multilingue. Sa fenêtre d’entrée de 32 000 jetons, ses dimensions vectorielles sélectionnables et ses formats quantifiés permettent de créer des bases de connaissances interrogeables, de trouver des documents et d’alimenter la génération augmentée par la recherche.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7dcf8e70d5a0c458eb538fd7a51afc1cf1e44dc3c802a158fb685a4794033e7f",
    "renderer_sha256": "98cb81b9c4ef4923c22e586170e7cdf67056351148a1666fb03dd6a4a26716a3"
  },
  "sourceRevision": "65b76b0220c507286017b249434c4a124072c4254688760489443cd3cc37b208"
}
