WIKI
AI-103 AI Apps and Agents Developer

10 · Extraction d'informations et pipelines d'ancrage : Azure AI Search et Content Understanding

36 min de lecture Mis à jour le 21 octobre 2026
Sur cette page

Version : 1.1 · Date : 2026-10-21 · Domaine 5 de l'examen : Implement information extraction solutions (10 à 15 %)

En une phrase : pour qu'un agent ou une application RAG réponde à partir de vos fichiers, il faut d'abord extraire (OCR, layout, champs) avec Azure Content Understanding ou Document Intelligence, puis indexer dans Azure AI Search (indexer, skillset, chunking, embeddings, index projections), configurer la recherche hybride + semantic ranker, et enfin brancher l'index sur l'agent (Azure AI Search tool, Foundry IQ via MCP) pour obtenir des réponses citées.

Vue d'ensemble : extraire, indexer, ancrer

Ce que l'examen demande#

Deux blocs, repris mot pour mot du guide d'étude AI-103 (compétences au 16 avril 2026) :

# Compétence mesurée (guide officiel, en anglais) Section de ce chapitre
Build retrieval and grounding pipelines
1 Ingest and index content, such as documents, images, audio, and video 2
2 Configure semantic search, hybrid search, and vector search for grounding 3
3 Implement enrichment by using custom or built-in skills for text, images, and layout 4
4 Configure RAG ingestion flow, including documents and using optical character recognition (OCR) 5
5 Connect retrieval pipelines directly to workflows and agent tools 6
Extract content from documents
6 Extract information by using multimodal pipelines that combine OCR, layout analysis, and field extraction 7
7 Produce clean, grounded representations to use with agents and RAG by using Content Understanding 8
8 Implement analyzers for generating structured or markdown outputs for downstream reasoning by using Content Understanding 9

Déjà vu ailleurs, à ne pas redire ici : les méthodes de recherche (BM25, vecteurs, RRF, semantic ranker) et le choix classic RAG / agentic retrieval au chapitre 01 ; le RAG côté application (code de la requête et du prompt) au chapitre 05 ; la surveillance des indexers et la sécurité réseau au chapitre 03 ; le Content Understanding visuel et vidéo (légendes, segments vidéo) au chapitre 08 ; la construction d'agents au chapitre 06.


1. Les bases à maîtriser#

1.1 Le vocabulaire#

Terme Ce que c'est
Data source Connexion à la source (Blob, ADLS Gen2, Azure SQL, Cosmos DB, OneLake…) avec ses identifiants et sa politique de détection des changements
Indexer Le robot qui tire (pull model) les données d'un data source, pilote le skillset et remplit un index
Skillset Liste de skills exécutées pendant l'indexation (OCR, découpage, embeddings, LLM, code à vous)
Enrichment tree Document en mémoire (racine /document) que chaque skill enrichit de nouveaux nœuds
Search index Le magasin interrogé : champs texte, champs vector, configuration semantic, scoring profiles
Index projections Indexation one-to-many : un document source donne plusieurs documents d'index (un par chunk)
Knowledge store Copie des enrichissements dans Azure Storage (tables, objets, fichiers : par exemple les images extraites)
Integrated vectorization Vectorisation intégrée : embedding skill à l'indexation + vectorizer à la requête
Knowledge source / knowledge base Objets de l'agentic retrieval (Foundry IQ) : une base regroupe des sources et expose un endpoint MCP
Analyzer Configuration réutilisable de Content Understanding : quoi extraire, avec quels modèles, sous quelle forme

1.2 Deux façons de remplir un index#

Pull model (indexer) Push model (API)
Principe Le service lit la source tout seul Votre code envoie des documents JSON déjà préparés
Sources Sources Azure prises en charge par un indexer N'importe quelle source
Skills, integrated vectorization Oui Non (vous vectorisez vous-même, ou un vectorizer côté requête)
Fraîcheur Planification toutes les 5 minutes au mieux Immédiate
Quand Cas standard, peu de code Données hors Azure, fraîcheur à la seconde, pipeline déjà écrit

À retenir : un indexer lit un seul data source et écrit dans un seul index ; plusieurs indexers peuvent écrire dans le même index (plusieurs sources), et un data source peut servir à plusieurs indexers.


2. Ingérer et indexer documents, images, audio et vidéo#

Le pipeline d'indexation

2.1 Les étapes d'un indexer#

  1. Document cracking : ouverture des fichiers, extraction du texte, des métadonnées (metadata_storage_name…) et, si demandé, des images (normalized_images).
  2. Field mappings : le contenu brut vers les champs de l'index (renommage, fonctions base64Encode, urlEncode, jsonArrayToStringCollection…). Sans field mapping, les champs de même nom sont reliés automatiquement.
  3. Skillset : les skills enrichissent l'enrichment tree.
  4. Output field mappings (sorties de skills vers des champs) ou index projections (un chunk = un document d'index).
  5. Knowledge store (facultatif).

Points d'examen sur l'exécution :

  • schedule : interval de 5 minutes (PT5M) à 24 heures (PT24H) ; sans schedule, l'indexer ne tourne qu'à la demande ;
  • change detection intégrée pour Azure Storage et SharePoint ; à activer à la main pour Azure SQL et Cosmos DB (high water mark, change tracking) ;
  • deletion detection pour Blob : soft delete natif ou métadonnée personnalisée (IsDeleted) ;
  • une exécution se fait dans une fenêtre d'environ 2 heures ; au-delà, planifier toutes les 2 heures et l'indexer reprend où il s'était arrêté ;
  • un service exécute un job d'indexer par search unit : prévoir des replicas pour du parallélisme.
sequenceDiagram
    participant S as Scheduler (PT15M)
    participant I as Indexer
    participant D as Data source (Blob)
    participant K as Skillset
    participant X as Search index
    S->>I: Déclenche une exécution
    I->>D: Lit les fichiers nouveaux ou modifiés
    D-->>I: Contenu et métadonnées
    I->>K: Enrichment tree /document
    K-->>I: Chunks, vecteurs, champs enrichis
    I->>X: Index projections (un document par chunk)
    I-->>S: Statut success, transientFailure ou error

2.2 Le push model en Python#

# pip install azure-search-documents azure-identity
import os
from azure.identity import DefaultAzureCredential
from azure.search.documents import SearchClient

# Rôle requis sur le service : Search Index Data Contributor (écrire des documents)
client = SearchClient(endpoint=os.environ["SEARCH_ENDPOINT"], index_name="docs-index",
                      credential=DefaultAzureCredential())
docs = [{"chunk_id": "contrat-42-p1", "parent_id": "contrat-42", "chunk": "## Article 1 ...", "title": "contrat-42.pdf"}]
results = client.merge_or_upload_documents(documents=docs)   # upload, merge, merge_or_upload, delete
print([r.succeeded for r in results])

2.3 Images, audio et vidéo#

Contenu Comment l'indexer
Images dans les documents Indexer avec imageAction = generateNormalizedImages, puis OCR skill (texte), Image Analysis skill (description, tags), GenAI Prompt skill (« verbaliser » l'image en texte), ou Azure Vision multimodal embeddings skill (preview) pour un vecteur d'image
Images et documents riches (chemin recommandé) Azure Content Understanding skill : texte, images, emplacement (locationMetadata), descriptions d'images (preview)
Multimodal RAG sans code Assistant Import data, scénario Multimodal RAG : extraction, chunking, verbalisation ou embeddings multimodaux, images dans un knowledge store
Audio Content Understanding prebuilt-audioSearch (transcription avec diarisation, résumé) ou analyzer personnalisé basé sur prebuilt-audio, puis envoi du Markdown dans l'index (push ou custom skill)
Vidéo Content Understanding prebuilt-videoSearch : segments, transcription WebVTT, descriptions, sortie Markdown prête pour un index ; Video Indexer pour des insights profonds (personnes, émotions)

2.4 L'assistant Import data du portail#

Sur la page Overview du service Azure AI Search, Import data propose trois scénarios : Keyword search, RAG et Multimodal RAG. Il crée en une fois data source, index (schéma déduit d'un échantillon), indexer, skillset (chunking avec Text Split, integrated vectorization) et, pour le Multimodal RAG seulement, un knowledge store pour les images ; il peut ajouter une semantic configuration. Le chemin est à sens unique : on ne peut pas rouvrir l'assistant pour modifier les objets créés (on passe alors par les éditeurs JSON).


3. Configurer la recherche pour l'ancrage#

Configurer l'index pour l'ancrage

Les méthodes elles-mêmes (BM25, HNSW, RRF, semantic ranker) sont expliquées au chapitre 01. Ici, la configuration.

3.1 Les briques de l'index#

Brique Rôle Paramètres à connaître
Champ vector Contient l'embedding type Collection(Edm.Single) (float32) ou Collection(Edm.Half) (float16), dimensions (1536 pour text-embedding-3-small, 3072 pour -large), vectorSearchProfile, stored
algorithms Recherche du plus proche voisin hnsw (approximatif, rapide : m, efConstruction, efSearch, metric = cosine…) ou exhaustiveKnn (exhaustif, lent, référence de qualité)
vectorizers Vectoriser la question à la requête azureOpenAI (resourceUri, deploymentId, modelName), Custom Web API, Azure Vision, Foundry model catalog
compressions Réduire la mémoire scalarQuantization (int8, environ 4 fois plus petit), binaryQuantization (1 bit, jusqu'à 28 fois), rescoringOptions (rescoring avec les vecteurs d'origine, defaultOversampling = 4 par défaut), truncationDimension (MRL, text-embedding-3)
profiles Associe un algorithme, un vectorizer et une compression un profil par combinaison ; un champ vector pointe vers un profil
semantic configuration Champs lus par le semantic ranker titleField, contentFields, keywordsFields
scoring profiles Ajuster la pertinence BM25 poids de champs, fonctions freshness, magnitude, distance, tag

Pièges : le même modèle d'embedding doit servir à l'indexation et au vectorizer ; stored: false économise du disque mais empêche de retourner le vecteur et casse les mises à jour partielles qui ne renvoient pas le vecteur entier ; le rescoring n'existe qu'avec HNSW et une compression intégrée.

3.2 Créer l'index en Python#

import os
from azure.identity import DefaultAzureCredential
from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizer, AzureOpenAIVectorizerParameters, HnswAlgorithmConfiguration, SearchField, SearchIndex,
    SemanticConfiguration, SemanticField, SemanticPrioritizedFields, SemanticSearch, VectorSearch, VectorSearchProfile)

index = SearchIndex(
    name="docs-index",
    fields=[
        SearchField(name="chunk_id", type="Edm.String", key=True, filterable=True, analyzer_name="keyword"),
        SearchField(name="parent_id", type="Edm.String", filterable=True),
        SearchField(name="title", type="Edm.String", searchable=True),
        SearchField(name="chunk", type="Edm.String", searchable=True),
        SearchField(name="text_vector", type="Collection(Edm.Single)", searchable=True,
                    vector_search_dimensions=1536, vector_search_profile_name="hnsw-openai"),
    ],
    vector_search=VectorSearch(
        algorithms=[HnswAlgorithmConfiguration(name="hnsw")],
        profiles=[VectorSearchProfile(name="hnsw-openai", algorithm_configuration_name="hnsw",
                                      vectorizer_name="openai-small")],
        vectorizers=[AzureOpenAIVectorizer(vectorizer_name="openai-small", parameters=AzureOpenAIVectorizerParameters(
            resource_url=os.environ["AOAI_ENDPOINT"], deployment_name="text-embedding-3-small",
            model_name="text-embedding-3-small"))]),     # même modèle que l'embedding skill
    semantic_search=SemanticSearch(default_configuration_name="sem", configurations=[SemanticConfiguration(
        name="sem", prioritized_fields=SemanticPrioritizedFields(title_field=SemanticField(field_name="title"),
                                                                 content_fields=[SemanticField(field_name="chunk")]))]),
)
# Rôle requis pour créer l'index : Search Service Contributor
SearchIndexClient(endpoint=os.environ["SEARCH_ENDPOINT"], credential=DefaultAzureCredential()).create_or_update_index(index)

3.3 La requête d'ancrage : hybride + semantic#

from azure.search.documents.models import VectorizableTextQuery

search = SearchClient(os.environ["SEARCH_ENDPOINT"], "docs-index", DefaultAzureCredential())  # Search Index Data Reader
results = search.search(
    search_text="délai de préavis du contrat",                       # partie BM25
    vector_queries=[VectorizableTextQuery(text="délai de préavis du contrat", k_nearest_neighbors=50,
                                          fields="text_vector")],     # vectorisée par le vectorizer de l'index
    query_type="semantic", semantic_configuration_name="sem",          # reranking L2 des 50 premiers
    select=["chunk", "title"], top=5)
for r in results:
    print(r["@search.reranker_score"], r["title"])

k = 50 donne au semantic ranker assez de candidats ; éviter orderby, qui écrase le classement par pertinence. Les filtres (filter="parent_id eq 'contrat-42'") servent aussi au security trimming (voir le chapitre 01).

3.4 Integrated vectorization#

Integrated vectorization : même modèle à l'indexation et à la requête

L'integrated vectorization ajoute la vectorisation pendant l'indexation (embedding skill) et pendant la requête (vectorizer). Rôle de la managed identity du service de recherche sur la ressource du modèle : Cognitive Services OpenAI User pour l'Azure OpenAI Embedding skill et le vectorizer (seul rôle requis selon la page du skill, que la cible soit Azure OpenAI ou Foundry). Bénéfices : pas de pipeline à part, mises à jour automatiques quand la source change, réessais intégrés quand Azure OpenAI renvoie des 429 (d'où la recommandation de planifier l'indexer, par exemple toutes les 5 minutes, pour rattraper les appels limités). Limites : le TPM d'un modèle est par abonnement : prévoir un deployment d'embedding pour l'indexation et un pour les requêtes. Pour un accès privé aux modèles : shared private link (openai_account pour Azure OpenAI, sites pour une Function ou une Web App qui héberge un autre modèle).


4. Enrichir avec des skills intégrés ou personnalisés#

4.1 Les familles de skills#

Famille Exemples Facturation
Built-in, via la Foundry resource (facturation seule, traitement interne) OCR, Image Analysis, Entity Recognition, Key Phrase Extraction, Language Detection, PII Detection, Sentiment, Text Translation, Azure Vision multimodal embeddings (preview) Petit volume gratuit, puis tarif Foundry Tools ; il faut attacher une Foundry resource au skillset (cognitiveServices)
Built-in, sur votre ressource (traitement et facturation) Azure Content Understanding, Azure OpenAI Embedding, GenAI Prompt Tarif du service appelé
Custom Web API (souvent une Azure Function), AML (modèle Foundry ou Azure Machine Learning) Celui de votre hébergement
Utility (internes, souvent gratuits) Text Split, Text Merge, Shaper, Conditional, Document Extraction Aucune, sauf l'extraction d'images de Document Extraction

Chaque skill a un context (le nœud sur lequel il s'exécute : /document une fois par document, /document/text_sections/* une fois par chunk), des inputs (chemins dans l'arbre, ou constantes ='texte') et des outputs (nouveaux nœuds, renommables par targetName).

4.2 GenAI Prompt skill : un LLM dans le pipeline#

Le GenAI Prompt skill (#Microsoft.Skills.Custom.ChatCompletionSkill, GA dans l'API 2026-04-01) envoie une requête chat completions à un modèle Foundry ou Azure OpenAI pour verbaliser une image, résumer, simplifier ou extraire en JSON (responseFormat : text, json_object ou json_schema). À savoir :

  • endpoints chat completions uniquement (pas la Responses API) ; délai fixe de 30 secondes (attention aux modèles de raisonnement) ; maxTokens = 1024 par défaut ;
  • authentification recommandée : managed identity du service de recherche avec le rôle Cognitive Services OpenAI User (Azure OpenAI) ou Foundry User (Foundry), jamais apiKey et authIdentity ensemble ;
  • prévoir un deployment dédié à l'indexation pour ne pas consommer le quota des requêtes.
{
  "@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
  "name": "image-verbalizer",
  "context": "/document/normalized_images/*",
  "inputs": [
    { "name": "image", "source": "/document/normalized_images/*/data" },
    { "name": "systemMessage", "source": "='Tu décris des schémas techniques avec précision.'" },
    { "name": "userMessage", "source": "='Décris ce schéma en 3 phrases.'" }
  ],
  "outputs": [ { "name": "response", "targetName": "image_description" } ],
  "uri": "https://<resource>.openai.azure.com/openai/deployments/gpt-4.1/chat/completions",
  "responseFormat": { "type": "text" }
}

(Sans apiKey ni authIdentity, le skill utilise la system-assigned managed identity du service de recherche.)

4.3 Custom Web API skill : votre code dans le pipeline#

Pour une transformation propre au métier (classification maison, appel d'un modèle externe, normalisation), on expose une API HTTPS, souvent une Azure Function, et on la déclare en #Microsoft.Skills.Custom.WebApiSkill.

Paramètre Défaut À retenir
uri — HTTPS obligatoire
timeout 30 s de 1 à 230 s (PT230S)
batchSize 1000 enregistrements par appel ≤ batch size de l'indexer, idéalement
degreeOfParallelism 5 de 1 à 10
authResourceId — ID d'application (api://<appId>) : le service appelle la Function avec sa managed identity et un jeton Entra (Function configurée avec Microsoft Entra)
httpHeaders — jamais affichés en clair au GET (<redacted>)

L'API reçoit et renvoie un tableau values ; chaque enregistrement garde son recordId :

{ "values": [ { "recordId": "0", "data": { "text": "Contrat de maintenance ..." } } ] }
{ "values": [ { "recordId": "0", "data": { "category": "maintenance" }, "errors": [], "warnings": [] } ] }

Le AML skill appelle un modèle déployé dans Foundry ou Azure Machine Learning (par exemple un modèle d'embedding du catalogue). Pour mettre au point un skillset : Debug sessions (visualiser l'enrichment tree, rejouer un document) et enrichment cache (preview, ne réexécuter que les skills modifiés).


5. Le flux d'ingestion RAG, documents et OCR#

La chaîne de skills d'un pipeline RAG moderne

5.1 Le chemin recommandé pour un nouveau pipeline#

Microsoft recommande, pour les nouveaux skillsets, l'Azure Content Understanding skill : il fait extraction (dont l'OCR) et chunking en un seul skill, rend les tableaux et figures en Markdown (plus lisible par un LLM que le texte brut du Document Layout skill), reconnaît les tableaux sur plusieurs pages, permet des chunks qui franchissent les pages, et coûte moins cher que le Document Layout skill. Le Document Layout skill reste supporté pour les pipelines existants.

Paramètre du Content Understanding skill Valeurs
extractionOptions ["images"], ["locationMetadata"] ou les deux
chunkingProperties.method fixedSize (défaut, en characters, 300 à 50 000, défaut 500) ou semantic (preview, en tokens, 100 à 8 000 ; respecte paragraphes et titres)
overlapLength moins de la moitié de maximumLength ; interdit (0) en semantic
modelName + modelDeployment (preview, API 2026-05-01-preview) un modèle de chat déployé dans la Foundry resource attachée : descriptions d'images insérées dans le Markdown du chunk ; les deux ou aucun
Entrée file_data : indexer avec allowSkillsetToReadFileData: true (Blob uniquement)
Sorties text_sections (content en Markdown, locationMetadata : pageNumberFrom, pageNumberTo…, imagePath), normalized_images

Skillset de référence (extrait de la doc, clés retirées : en production, managed identity partout) :

{
  "name": "rag-skillset",
  "skills": [
    {
      "@odata.type": "#Microsoft.Skills.Util.ContentUnderstandingSkill",
      "context": "/document",
      "extractionOptions": ["images", "locationMetadata"],
      "chunkingProperties": { "method": "semantic", "unit": "tokens", "maximumLength": 500 },
      "inputs":  [ { "name": "file_data", "source": "/document/file_data" } ],
      "outputs": [ { "name": "text_sections", "targetName": "text_sections" },
                   { "name": "normalized_images", "targetName": "normalized_images" } ]
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
      "context": "/document/text_sections/*",
      "inputs":  [ { "name": "text", "source": "/document/text_sections/*/content" } ],
      "outputs": [ { "name": "embedding", "targetName": "text_vector" } ],
      "resourceUri": "https://<resource>.openai.azure.com",
      "deploymentId": "text-embedding-3-small",
      "modelName": "text-embedding-3-small"
    }
  ],
  "indexProjections": {
    "selectors": [ {
      "targetIndexName": "docs-index",
      "parentKeyFieldName": "parent_id",
      "sourceContext": "/document/text_sections/*",
      "mappings": [
        { "name": "chunk", "source": "/document/text_sections/*/content" },
        { "name": "text_vector", "source": "/document/text_sections/*/text_vector" },
        { "name": "title", "source": "/document/metadata_storage_name" }
      ] } ],
    "parameters": { "projectionMode": "skipIndexingParentDocuments" }
  }
}

Les index projections remplacent les output field mappings dans ce scénario ; skipIndexingParentDocuments n'écrit que les chunks (pas le document parent).

5.2 Les autres chemins (pipelines existants ou cas simples)#

Besoin Skills
Texte déjà extractible (PDF numériques, Office) Document cracking + Text Split (pages ou sentences, maximumPageLength, pageOverlapLength) + embedding
PDF scannés, images de texte (OCR classique) imageAction: generateNormalizedImages + OCR skill + Text Merge (réinsère le texte des images dans le contenu) + Text Split
Structure (titres, tableaux) avec Document Intelligence Document Layout skill (Markdown ou texte, découpage par sections ; 20 documents gratuits par indexer et par jour, puis Foundry resource payante)
Images à rendre cherchables Document Extraction ou Content Understanding skill, puis GenAI Prompt (verbalisation) ou embeddings multimodaux

Taille des chunks : la recommandation de départ (512 jetons, 25 % de chevauchement) est au chapitre 01.

5.3 Dépannage d'un pipeline RAG#

Symptôme Cause probable
400 Skill validation failed modelName sans modelDeployment ; overlapLength > 0 en semantic ; couple method/unit invalide
401 ou 403 vers la Foundry resource mauvaise ressource dans cognitiveServices, ou rôle manquant pour l'identité du service de recherche
text_sections vide format non supporté, région non supportée, PDF protégé par mot de passe
Timeout sur de gros PDF le skill coupe au-delà de 5 minutes d'analyse (et facture quand même) : découper les fichiers, batchSize = 1
Index qui ne suit pas les mises à jour pas de schedule ou pas de change detection (SQL, Cosmos DB)
Statut transientFailure succès partiel : relancer ou attendre la prochaine exécution planifiée

6. Brancher la récupération sur les agents et les workflows#

Brancher la récupération sur un agent

6.1 L'Azure AI Search tool (un index, simple)#

L'agent interroge un seul index d'une connection du project et cite ses sources.

Paramètre Obligatoire À retenir
project_connection_id oui connection du project vers le service de recherche
index_name oui sensible à la casse
top_k non 5 par défaut
query_type non vector_semantic_hybrid par défaut ; aussi simple, vector, semantic, vector_simple_hybrid
filter non appliqué à toutes les requêtes de l'agent (gabarit {{variable}} possible avec les structured inputs)
from azure.ai.projects.models import (AISearchIndexResource, AzureAISearchTool, AzureAISearchToolResource,
                                      PromptAgentDefinition)

conn_id = project.connections.get("my-search-connection").id     # project = AIProjectClient (chapitre 05)
agent = project.agents.create_version(
    agent_name="assistant-contrats",
    definition=PromptAgentDefinition(
        model="gpt-5-mini",
        instructions="Réponds uniquement à partir de l'index et cite chaque source.",
        tools=[AzureAISearchTool(azure_ai_search=AzureAISearchToolResource(indexes=[AISearchIndexResource(
            project_connection_id=conn_id, index_name="docs-index")]))]))   # query_type omis : vector_semantic_hybrid

Accès sans clé : sur le service de recherche, donner à la managed identity de la Foundry resource les rôles Search Index Data Contributor et Search Service Contributor (la doc de l'outil) ; avec un réseau privé, l'authentification par managed identity est obligatoire (pas de clé), et l'agent doit être en standard setup avec VNet injection. Le service de recherche et l'agent doivent être dans le même tenant.

6.2 Foundry IQ : une knowledge base exposée en MCP#

Une knowledge base (Azure AI Search, alias Foundry IQ dans le portail Foundry) regroupe des knowledge sources et applique l'agentic retrieval (sous-requêtes en parallèle, reclassement unifié, citations). Chaque base est un serveur MCP qui expose l'outil knowledge_base_retrieve :

https://<search-service>.search.windows.net/knowledgebases/<knowledge-base>/mcp?api-version=<version>

Avec 2026-04-01 (GA), la récupération est extractive (données d'ancrage seulement) ; avec 2026-08-01-preview, la base peut renvoyer des réponses synthétisées si un LLM et un niveau de raisonnement compatible sont configurés.

from azure.ai.projects.models import MCPTool, PromptAgentDefinition

kb_tool = MCPTool(server_label="knowledge-base", server_url=mcp_endpoint, require_approval="never",
                  allowed_tools=["knowledge_base_retrieve"], project_connection_id=project_connection_name)
agent = project.agents.create_version(agent_name="assistant-rh", definition=PromptAgentDefinition(
    model="gpt-5-mini", tools=[kb_tool],
    instructions="Utilise toujours la knowledge base, cite les sources, sinon réponds « je ne sais pas »."))
Knowledge source Type Remarque
Search index indexé enveloppe un index existant
Azure blob, OneLake indexé pipeline d'indexation généré automatiquement
File (preview), Azure SQL (preview), Indexed SharePoint (preview) indexé —
Remote SharePoint (preview), Web (Bing), MCP server (preview), Work IQ (preview), Fabric Data Agent / Ontology (preview) distant interrogé à la volée, rien n'est ingéré, pas d'URL de citation

Réglages utiles : retrieval reasoning effort minimal (pas de LLM, le plus rapide), low, medium (passe itérative) ; alwaysQuery pour forcer une source ; retrievalInstructions pour guider le choix des sources ; permissions au niveau document et sensitivity labels Purview (preview, avec le jeton de l'utilisateur dans la requête).

6.3 Workflows et code#

Quand la récupération doit être mêlée à de la logique métier : une fonction (function calling), un outil OpenAPI, une Azure Function ou un Logic Apps workflow interroge l'index et renvoie le résultat à l'agent, ou un workflow Microsoft Agent Framework enchaîne récupération, décision et approbation (voir les chapitres 05 et 06).

Besoin Choix
Un index, mise en place rapide, citations Azure AI Search tool
Plusieurs sources, SharePoint ou web, permissions, réutilisation entre agents et clients MCP Foundry IQ (knowledge base via MCP tool)
Règles métier, appels combinés, transformation des résultats Fonction / OpenAPI / workflow
Application sans agent RAG dans le code (chapitre 05)

7. Extraire avec des pipelines multimodaux (OCR, layout, champs)#

Un analyzer Content Understanding de bout en bout

7.1 Azure Content Understanding in Foundry Tools#

Content Understanding est un Foundry Tool de la Foundry resource qui utilise l'IA générative pour transformer documents, images, audio et vidéo en Markdown ou en JSON conforme à un schéma. Ses étapes :

Étape Ce qu'elle fait
Content extraction OCR, marques de sélection, codes-barres, formules, layout (paragraphes, sections, tableaux) ; transcription pour l'audio et la vidéo
Segmentation découpe en sections logiques (enableSegment) : par type de document, par scène vidéo
Field extraction champs du fieldSchema par extract, classify ou generate
Contextualization normalisation, confidence (0 à 1), grounding (zone source de chaque valeur), préparation du contexte des modèles
Foundry models vos deployments (un modèle de chat et un modèle d'embedding) : bring your own deployment
Structured output Markdown (recherche, RAG) ou JSON (automatisation, analytique)

Versions : 2025-11-01 (GA) pour la production ; 2026-06-01-preview pour les nouveautés (dont l'agentic mode). Expériences : Content Understanding Studio (catalogue complet, analyzers personnalisés, étiquetage, API GA et preview) et le playground Foundry (new) (preview seulement, pas de création d'analyzer personnalisé).

7.2 Azure Document Intelligence in Foundry Tools#

Document Intelligence (v4.0, API 2024-11-30 GA) fournit une extraction déterministe et à faible latence :

Famille Modèles Quand
Analyse Read (texte imprimé et manuscrit), Layout (texte, tableaux, structure, sortie Markdown) OCR, préparation de documents pour le RAG
Prebuilt factures, reçus, pièces d'identité, formulaires fiscaux, etc. (plus de 20) documents standards à fort volume
Custom extraction custom template (mise en page fixe, entraînement en minutes) ; custom neural (structuré et semi-structuré, recommandé) formulaires propres à l'entreprise, 5 exemples étiquetés minimum
Custom classification classifier (au moins deux types de documents) ; composed model trier puis router

Limites utiles : 2 000 pages par PDF ou TIFF (2 premières en F0), 500 Mo en S0 (4 Mo en F0), images de 50 × 50 à 10 000 × 10 000 pixels, texte d'au moins 12 pixels de haut.

7.3 Content Understanding ou Document Intelligence ?#

Quel outil pour extraire le contenu d'un document

Microsoft présente Document Intelligence comme faisant partie des capacités de Content Understanding : DI pour l'extraction déterministe de documents structurés, les analyzers CU (LLM) pour le varié, le non structuré et le multimodal. Un client déjà en production sur Document Intelligence n'a rien à migrer (API, SDK et facturation inchangés).

Document Intelligence Content Understanding
Idéal pour gros volumes, formulaires standards modèles variés, non structuré, multimodal
Étiquetage requis pour les modèles personnalisés (5 exemples minimum) aucun pour démarrer, étiqueter pour améliorer
IA générative non oui : champs déduits, raisonnement
Entrées documents documents, images, audio, vidéo
Latence faible moyenne
Confiance et source par champ oui oui
flowchart TD
    A["Contenu à extraire"] --> B{"Audio, vidéo ou image ?"}
    B -- Oui --> CU1["Content Understanding : prebuilt audioSearch, videoSearch, imageSearch ou analyzer personnalisé"]
    B -- Non --> C{"Type de document standard avec un modèle prebuilt ?"}
    C -- Oui --> DI1["Document Intelligence prebuilt : déterministe, moins cher"]
    C -- Non --> D{"Mise en page fixe et exemples étiquetés ?"}
    D -- Oui --> DI2["Document Intelligence custom template ou neural"]
    D -- Non --> E{"But : RAG ou agent ?"}
    E -- Oui --> CU2["Content Understanding prebuilt-documentSearch : Markdown prêt à indexer"]
    E -- Non --> CU3["Content Understanding custom analyzer : fieldSchema, confiance, source"]

8. Des représentations propres et ancrées pour les agents et le RAG#

8.1 Les prebuilt analyzers utiles au RAG#

Analyzer Sortie
prebuilt-documentSearch Markdown structuré (paragraphes, tableaux, figures), descriptions de figures, graphiques en syntaxe chart.js et diagrammes en mermaid.js (PDF et images), annotations manuscrites, résumé d'un paragraphe, sortie découpée prête pour l'embedding (fixe ou sémantique)
prebuilt-imageSearch description d'un paragraphe d'une image (pour une image contenant du texte : prebuilt-documentSearch)
prebuilt-audioSearch transcription avec diarisation et horodatage, résumé de la conversation
prebuilt-videoSearch segments automatiques (changements de sujet ou de scène), transcription, descriptions, résumé par segment
prebuilt-read, prebuilt-layout, prebuilt-digitalParse extraction de contenu seule (OCR, layout, ou lecture directe d'un fichier numérique), sans modèle de langage

8.2 Obtenir le Markdown, sans clé#

# pip install azure-ai-contentunderstanding azure-identity
import os
from azure.ai.contentunderstanding import ContentUnderstandingClient
from azure.ai.contentunderstanding.models import AnalysisInput
from azure.identity import DefaultAzureCredential

# Prérequis : deployments par défaut (modèle de chat + embedding) définis au niveau de la ressource
# Rôle data plane : celui cité pour les appels directs aux Foundry Tools (Cognitive Services User) ; Owner ou Contributor ne suffisent pas
client = ContentUnderstandingClient(endpoint=os.environ["CONTENTUNDERSTANDING_ENDPOINT"],
                                    credential=DefaultAzureCredential())
poller = client.begin_analyze(analyzer_id="prebuilt-documentSearch",
                              inputs=[AnalysisInput(url="https://<compte>.blob.core.windows.net/docs/contrat.pdf")])
result = poller.result()                      # opération longue : poller
content = result.contents[0]
print(content.markdown)                       # Markdown propre, à découper et indexer

Pourquoi c'est « propre et ancré » :

  • la structure (titres, tableaux, figures décrites) est conservée, ce qui donne de meilleurs chunks et un LLM qui comprend les tableaux ;
  • chaque champ peut porter sa confidence et sa source (page, polygone) : l'agent peut citer, et un humain vérifier ;
  • les sorties sont prévisibles (même schéma pour tous les fichiers), ce qui fiabilise les étapes suivantes d'un agent.

Intégrations documentées : LangChain (AzureAIContentUnderstandingLoader), MarkItDown (choisit l'analyzer selon le type de fichier), et bien sûr l'Azure Content Understanding skill d'Azure AI Search. Côté données : les entrées sont supprimées à la fin du traitement, les résultats gardés 24 heures pour la récupération asynchrone.


9. Les analyzers Content Understanding, sortie structurée ou Markdown#

9.1 L'anatomie d'un analyzer#

Propriété Rôle
analyzerId, description identifiant ; la description sert de contexte au modèle : la soigner
baseAnalyzerId l'un des quatre seuls parents possibles : prebuilt-document, prebuilt-image, prebuilt-audio, prebuilt-video
models noms de modèles (pas de deployments) : completion (extraction, segmentation, figures) et embedding ; le service les relie aux deployments par défaut de la ressource (PATCH …/contentunderstanding/defaults) ou à ceux de la requête
config options de traitement (tableau suivant)
fieldSchema les champs à produire
Option de config Défaut Effet
returnDetails false confiance, boîtes, spans, métadonnées dans la réponse
enableOcr, enableLayout true OCR et structure (documents)
enableFormula, enableBarcode true formules en LaTeX, codes-barres et QR codes
tableFormat html ou markdown
enableFigureDescription, enableFigureAnalysis false description des figures (texte alternatif), analyse des graphiques et diagrammes
estimateFieldSourceAndConfidence false source et confiance de chaque champ (documents)
contentCategories + enableSegment — / false classification et découpage d'un fichier mixte, routage de chaque catégorie vers un autre analyzer (analyzerId) ; prévoir une catégorie other
segmentPerPage, omitContent false un segment par page ; ne renvoyer que les résultats des sous-analyzers
locales [] langues de transcription (audio, vidéo)
workflow (preview) default agentic : agentic mode, raisonnement sur les preuves du document (un fichier par requête)

9.2 Le fieldSchema et les trois méthodes#

Méthode Principe Exemple Contrainte
extract valeur telle qu'elle apparaît numéro de facture, date documents uniquement ; exige estimateSourceAndConfidence: true sur le champ
classify une valeur parmi un enum type de document, sentiment d'un appel —
generate valeur produite par le modèle résumé, description de scène, total déduit —

Types : string, number, boolean, date, object, array (normalisation automatique, par exemple des dates) ; éviter plus de deux ou trois niveaux d'imbrication.

from azure.ai.contentunderstanding.models import (ContentAnalyzer, ContentAnalyzerConfig, ContentFieldDefinition,
                                                  ContentFieldSchema, ContentFieldType, GenerationMethod)

schema = ContentFieldSchema(name="contrat", description="Champs d'un contrat de maintenance", fields={
    "fournisseur": ContentFieldDefinition(type=ContentFieldType.STRING, method=GenerationMethod.EXTRACT,
                                          description="Raison sociale du prestataire", estimate_source_and_confidence=True),
    "montant_annuel": ContentFieldDefinition(type=ContentFieldType.NUMBER, method=GenerationMethod.EXTRACT,
                                             description="Montant annuel HT", estimate_source_and_confidence=True),
    "type_contrat": ContentFieldDefinition(type=ContentFieldType.STRING, method=GenerationMethod.CLASSIFY,
                                           description="Nature du contrat", enum=["maintenance", "licence", "autre"]),
    "resume": ContentFieldDefinition(type=ContentFieldType.STRING, method=GenerationMethod.GENERATE,
                                     description="Résumé en 3 phrases des obligations du prestataire"),
})
analyzer = ContentAnalyzer(base_analyzer_id="prebuilt-document", description="Analyse des contrats de maintenance",
                           config=ContentAnalyzerConfig(enable_ocr=True, enable_layout=True, return_details=True,
                                                        estimate_field_source_and_confidence=True),
                           field_schema=schema,
                           models={"completion": "gpt-5.2", "embedding": "text-embedding-3-large"})
client.begin_create_analyzer(analyzer_id="contrat_maintenance", resource=analyzer).result()

result = client.begin_analyze(analyzer_id="contrat_maintenance", inputs=[AnalysisInput(url=url_contrat)]).result()
champ = result.contents[0].fields["montant_annuel"]
print(champ.value, champ.confidence)          # router vers une revue humaine si la confiance est basse

Le même analyzer se crée en REST : PUT {endpoint}/contentunderstanding/analyzers/{analyzerId}?api-version=2025-11-01 (réponse 201 avec un Operation-Location à suivre). Pour partir d'un prebuilt : GET /analyzers/prebuilt-invoice, modifier la définition, puis PUT sous un nouveau nom. Microsoft conseille de copier un prebuilt plutôt que de dépendre de sa définition en production (elle peut changer d'une version d'API à l'autre).

9.3 Markdown ou JSON : que produire ?#

Consommateur en aval Sortie
Index de recherche, RAG, knowledge base Markdown (prebuilt-documentSearch, ou content.markdown d'un analyzer)
Automatisation (ERP, workflow, RPA), analytique JSON de champs avec confiance et source
Agent qui doit raisonner puis agir les deux : Markdown comme contexte, champs pour décider (et seuils de confiance pour l'approbation humaine)

9.4 Historique utile : standard, pro, agentic#

L'ancienne préversion 2025-05-01-preview proposait un mode standard (une tâche, un fichier) et un mode pro (raisonnement, plusieurs fichiers, base de connaissances externe pour valider). Cette API est retirée ; le remplaçant est l'agentic mode (config.workflow: "agentic", API 2026-06-01-preview), qui n'est pas un remplacement à l'identique (un seul fichier par requête au départ). Les guardrails du deployment de modèle s'appliquent aussi : un analyze peut réussir avec des avertissements et des champs non renvoyés.


10. Labs conseillés#

À faire dans un abonnement de test : Azure AI Search (Basic ou plus pour le semantic ranker), une Foundry resource dans une région où Content Understanding est disponible, un deployment de chat et un d'embedding ; quelques euros, supprimer le groupe de ressources à la fin (le semantic ranker et Content Understanding sont facturés à l'usage).

Lab 1 · Pipeline RAG sans code

  1. Déposer 3 PDF (dont un scanné) dans un conteneur Blob.
  2. Azure AI Search > Import data > RAG ; managed identity pour Blob et Azure OpenAI ; activer le semantic ranker.
  3. Ouvrir l'index, le skillset et l'indexer créés ; lire leur JSON.
  4. Résultat attendu : un document par chunk, un champ vector, une semantic configuration ; le PDF scanné est cherchable.

Lab 2 · Skillset moderne en REST

  1. Créer à la main l'index, le skillset de la section 5.1 (Content Understanding skill en fixedSize, puis en semantic avec l'API preview) et l'indexer avec allowSkillsetToReadFileData: true.
  2. GET …/indexers/{name}/status jusqu'à success.
  3. Résultat attendu : chunks en Markdown avec page_number_from et image_path ; un tableau multipage reste dans un seul chunk.

Lab 3 · Requête d'ancrage

  1. Lancer la requête de la section 3.3 avec et sans query_type="semantic", puis sans la partie vectorielle.
  2. Comparer l'ordre des résultats et @search.reranker_score.
  3. Résultat attendu : hybride + semantic remonte le bon passage en tête, même quand la question n'emploie pas les mots du texte.

Lab 4 · Agent branché sur l'index

  1. Créer une connection Azure AI Search dans le project (authentification Entra), rôles Search Index Data Contributor et Search Service Contributor pour l'identité de la Foundry resource.
  2. Créer l'agent de la section 6.1 ; poser une question couverte par un document.
  3. Résultat attendu : réponse avec annotations url_citation ; question hors corpus : « je ne sais pas ».

Lab 5 · Analyzer personnalisé

  1. Dans Content Understanding Studio, configurer les deployments par défaut de la ressource.
  2. Créer l'analyzer de la section 9.2 (ou partir de prebuilt-invoice), l'exécuter sur deux documents différents.
  3. Résultat attendu : JSON avec confidence et source par champ extract, un type_contrat pris dans l'enum, un résumé généré.

11. Les pièges d'examen#

Situation dans la question Réponse attendue Pourquoi
Rafraîchir l'index toutes les minutes avec un indexer Impossible : 5 minutes minimum, sinon push API Limite du schedule
Un indexer pour deux sources Deux indexers vers le même index Un indexer = un data source, un index
Nouvelles lignes Azure SQL non indexées Activer la change detection (high water mark ou change tracking) Pas intégrée pour SQL et Cosmos DB
Fichiers supprimés toujours présents dans l'index Deletion detection (soft delete Blob ou métadonnée IsDeleted) Sinon documents orphelins
Un document par chunk dans l'index Index projections (skipIndexingParentDocuments) Indexation one-to-many
Nouveau skillset : extraction + OCR + chunking en un seul skill Azure Content Understanding skill Recommandé à la place du Document Layout skill
Le Content Understanding skill ne reçoit rien Indexer : allowSkillsetToReadFileData: true Fournit /document/file_data (Blob)
semantic chunking avec chevauchement Erreur 400 : overlapLength doit être 0 Le chevauchement ne vaut qu'en fixedSize
Descriptions d'images dans les chunks modelName et modelDeployment (preview) Les deux ou aucun
Vectoriser la question sans code Vectorizer dans l'index, même modèle que l'embedding skill Integrated vectorization
Modèle d'embedding changé Revectoriser tout l'index Espaces de vecteurs incompatibles
Indexation qui sature le TPM des requêtes Deployments séparés (indexation, requêtes) Le TPM est par modèle et par abonnement
Réduire la mémoire des vecteurs sans perte notable Scalar ou binary quantization + rescoring Recommandé avant les autres options
GenAI Prompt skill vers la Responses API Non : chat completions seulement Limite documentée
Custom skill qui expire à 30 s timeout jusqu'à 230 s Défaut 30 s
Custom skill sans secret authResourceId + managed identity du service de recherche Jeton Entra vers la Function
Agent : plusieurs index et SharePoint Foundry IQ (knowledge base) via MCP tool L'Azure AI Search tool ne cible qu'un index
Azure AI Search tool en réseau privé Managed identity (pas de clé) + standard setup avec VNet injection Les clés ne passent pas en réseau privé
Mode de requête par défaut de l'Azure AI Search tool vector_semantic_hybrid Défaut documenté
Factures standard, gros volume, coût minimal Document Intelligence prebuilt Déterministe et moins cher
Champs à déduire de documents aux mises en page variées Content Understanding custom analyzer Schéma en langage naturel, pas d'étiquetage
Méthode extract sur une vidéo Impossible : documents uniquement ; generate ou classify Contrainte de la méthode
Parent d'un analyzer personnalisé : prebuilt-invoice Non : baseAnalyzerId = prebuilt-document, -image, -audio ou -video ; pour partir d'un prebuilt, copier sa définition Seuls quatre parents
models dans l'analyzer Noms de modèles, reliés aux deployments par défaut de la ressource Pas des noms de deployments
Trier un PDF qui contient factures et reçus contentCategories + enableSegment: true (+ catégorie other) Classification et découpage
Pro mode de Content Understanding Retiré avec 2025-05-01-preview → agentic mode (preview) Historique

12. Scénarios d'entraînement#

1. Un cabinet indexe 50 000 PDF, dont beaucoup sont scannés, pour un assistant juridique. Les tableaux s'étendent sur plusieurs pages et doivent rester lisibles par le LLM.

Indexer Blob avec allowSkillsetToReadFileData, skillset Azure Content Understanding skill (OCR et chunking en un skill, tableaux multipages en Markdown, semantic chunking en preview si accepté), Azure OpenAI Embedding skill, index projections vers un index de chunks. Le Document Layout skill ne serait justifié que pour un pipeline existant.

2. Les fiches produits sont dans Azure SQL et changent toutes les heures ; les nouveautés n'apparaissent jamais dans l'index.

Le data source n'a pas de change detection : activer une politique (high water mark sur une colonne rowversion, ou SQL change tracking) et mettre l'indexer sur un schedule (par exemple PT1H).

3. Une application doit voir un prix mis à jour dans la seconde dans l'index.

Un indexer ne descend pas sous 5 minutes : utiliser le push model (merge_or_upload_documents) depuis le code qui modifie le prix, avec le rôle Search Index Data Contributor.

4. Après avoir remplacé text-embedding-ada-002 par text-embedding-3-small dans l'embedding skill, les requêtes renvoient des résultats aberrants.

Le vectorizer de l'index utilise encore l'ancien modèle, et les anciens vecteurs ne sont pas comparables : aligner le vectorizer sur le même modèle, adapter dimensions si besoin et réindexer tout le contenu.

5. Une équipe veut rendre cherchables les schémas d'architecture inclus dans des documents Word.

Extraire les images (Content Understanding skill avec extractionOptions images, ou Document Extraction), puis soit les verbaliser avec le GenAI Prompt skill (texte cherchable et vectorisable), soit activer les descriptions d'images du Content Understanding skill (preview) ; stocker les images dans un knowledge store pour les afficher.

6. Un agent Foundry doit répondre à partir d'un index, d'un site SharePoint et du web, en respectant les droits de chaque utilisateur.

Foundry IQ : une knowledge base avec trois knowledge sources (search index, Remote SharePoint en preview, Web), exposée en MCP et branchée par un MCP tool (knowledge_base_retrieve) ; permissions au niveau document avec le jeton de l'utilisateur. L'Azure AI Search tool ne cible qu'un index.

7. L'Azure AI Search tool échoue avec « Unable to connect to Azure AI Search Resource » depuis que le service de recherche est derrière un Private Endpoint.

En réseau privé, la connection doit utiliser la managed identity du project (authentification Entra) et non une clé ; l'agent doit être en standard setup avec VNet injection.

8. Un service achats reçoit des milliers de factures de fournisseurs connus et veut le coût le plus bas avec un résultat déterministe.

Document Intelligence, modèle prebuilt invoice : déterministe, faible latence, moins cher. Content Understanding se justifie pour des documents très variés ou des champs à déduire.

9. Une assurance traite des dossiers PDF qui mélangent formulaires de sinistre, factures et photos ; elle veut extraire des champs différents selon le type, avec une revue humaine quand la confiance est basse.

Un analyzer Content Understanding de classification (contentCategories + enableSegment: true, catégorie other) qui route chaque segment vers un analyzer dédié (prebuilt-invoice, analyzer personnalisé « sinistre ») ; estimateFieldSourceAndConfidence et un seuil de confidence pour envoyer les cas douteux en revue.

10. Un développeur crée un analyzer personnalisé avec "baseAnalyzerId": "prebuilt-invoice" et la méthode extract sur un champ d'une vidéo de formation ; la création échoue.

Deux erreurs : baseAnalyzerId n'accepte que prebuilt-document, -image, -audio ou -video (pour réutiliser prebuilt-invoice, copier sa définition) ; et extract ne vaut que pour les documents : utiliser generate ou classify sur une vidéo.


13. Pour aller plus loin#

  • Agentic retrieval en détail : retrievalInstructions, image serving (preview, images des documents injectées dans la synthèse), analyzers de langue automatiques, ingestion privée par shared private link : pages knowledge source d'Azure AI Search.
  • Sécurité des données indexées : ACL et sensitivity labels Purview synchronisés par l'indexer (preview), filtres de sécurité à la requête ; Network Security Perimeter et Private Endpoints (voir le chapitre 03).
  • Azure API Management devant les skills et vectorizers : les skills Azure OpenAI acceptent un endpoint APIM (passerelle IA, quotas, journaux).
  • Video Indexer pour les vidéos longues et les insights profonds (personnes, sujets, émotions), y compris à la périphérie avec Azure Arc.
  • Évaluer la récupération : evaluators Document Retrieval, Retrieval et Groundedness (chapitres 04 et 05).

14. Fiche à retenir#

  • Pipeline : data source → indexer → skillset → index (+ knowledge store) ; un indexer = une source, un index.
  • Schedule de 5 min à 24 h ; change detection intégrée pour Storage et SharePoint, à activer pour SQL et Cosmos DB.
  • Field mappings = contenu brut ; output field mappings = sorties de skills ; index projections = un document par chunk.
  • Push API pour la fraîcheur immédiate ou les sources hors Azure (rôle Search Index Data Contributor).
  • Nouveau pipeline RAG : Content Understanding skill (OCR + layout + chunking, Markdown, tableaux multipages) + Azure OpenAI Embedding skill + index projections ; allowSkillsetToReadFileData.
  • Chunking CU skill : fixedSize (caractères) ou semantic (jetons, preview, pas d'overlap) ; descriptions d'images = modelName + modelDeployment (preview).
  • Integrated vectorization : embedding skill + vectorizer du même modèle ; deployments séparés indexation et requêtes.
  • Index : champ vector (dimensions, profile) → profile → algorithm (HNSW / eKNN), vectorizer, compression (scalar, binary + rescoring).
  • Ancrage : hybride (BM25 + vecteur, RRF) + semantic ranker (semantic configuration, k = 50).
  • Skills : built-in (Foundry resource attachée), Azure-hosted (CU, embedding, GenAI Prompt), custom (Web API, AML), utility.
  • GenAI Prompt : chat completions seulement, 30 s ; Web API : values/recordId, timeout ≤ 230 s, authResourceId.
  • Agent : Azure AI Search tool (un index, vector_semantic_hybrid par défaut) ou Foundry IQ via MCP (knowledge_base_retrieve).
  • Réseau privé : managed identity obligatoire, standard setup + VNet injection.
  • Document Intelligence : déterministe, structuré (Read, Layout, prebuilt, custom template/neural, classifier).
  • Content Understanding : analyzer = baseAnalyzerId (4 parents) + models (noms) + config + fieldSchema.
  • Méthodes : extract (documents, source et confiance obligatoires), classify (enum), generate.
  • Sorties : Markdown pour RAG et agents (prebuilt-documentSearch), JSON avec confidence et grounding pour l'automatisation.
  • API Content Understanding : 2025-11-01 GA ; 2026-06-01-preview (agentic mode) ; pro mode retiré.

Références#

Toutes lues le 21/10/2026 sur Microsoft Learn :

Sur cette page
Échap

Tape au moins 2 lettres. Plusieurs mots : tous doivent apparaître.