Darabolás és vektorizálás a Dokumentumelrendezés készség segítségével

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Important

Ezek a funkciók és szolgáltatások támogatják a más Microsoft-szolgáltatásokhoz és harmadik féltől származó szolgáltatásokhoz való kapcsolódást. Ezeknek a szolgáltatásoknak a használatára a vonatkozó feltételek vonatkoznak, és a Azure megfelelőségi határán kívüli adatfeldolgozást vagy tárolást, valamint a Azure megfelelőségi határba történő adatáramlást eredményezhetnek.

Az Ön felelőssége annak kezelése, hogy az adatok a szervezet megfelelőségi és földrajzi határain kívülre áramlanak-e, valamint hogy a megfelelő engedélyek, határok és jóváhagyások ki vannak-e építve.

Ön a felelős azért, hogy gondosan áttekintse és tesztelje azokat az alkalmazásokat, amelyeket az adott használati esetek kontextusában hoz létre, és minden megfelelő döntést és testreszabást meghoz. Ez magában foglalja a saját, felelős mesterségesintelligencia-csökkentő megoldások, például metapromptok, tartalomszűrők vagy egyéb biztonsági rendszerek implementálását, valamint annak biztosítását, hogy az alkalmazások megfeleljenek a megfelelő minőségi, megbízhatósági, biztonsági és megbízhatósági szabványoknak. További információ: Azure AI Keresés Átláthatósági megjegyzés.

Jótanács

Ez a cikk a dokumentumelrendezési képességet használó meglévő folyamatokhoz készült. Új képességkészletekért használja a Azure Content Understanding készséget. Ez a képesség újabb funkciókat biztosít, például szemantikai adattömböket, mesterséges intelligenciával létrehozott képleírásokat és továbbfejlesztett, dokumentumba ágyazott táblák kinyerését egyetlen készségben. A kezdéshez tekintse meg a(z) tartalom darabolása és vektorizálása az Azure Content Understanding-készséggel.

A szöveges adattömb-stratégiák kulcsfontosságú szerepet játszanak a RAG-válaszok és a teljesítmény optimalizálásában. A Dokumentumelrendezési képesség használatával a tartalmat dokumentumszerkezet alapján lehet felbontani és a címsorokat rögzíteni, valamint a szemantikai koherencia szerint, mint például bekezdések és mondatok, strukturálni a tartalomtörzset. A darabokat függetlenül dolgozzák fel. Mivel az LLM-ek több adattömbtel is működnek, ha ezek az adattömbök jobb minőségűek és szemantikailag koherensek, a lekérdezés általános relevanciája javul.

A Dokumentumelrendezés képesség meghívja az elrendezési modellt az Azure Document Intelligenceből az Foundry Toolsban. A modell Markdown-szintaxis (címsorok és tartalom) használatával ismerteti a JSON tartalomstruktúráját, és az Azure AI Keresés keresési indexében tárolt címsorok és tartalmak mezőit tartalmazza. A Dokumentumelrendezési készség által létrehozott kereshető tartalom egyszerű szöveg, de alkalmazhat integrált vektorizációt az adott mezők beágyazásának előállítására a forrásdokumentumaiban, beleértve a képeket is.

Ebben a cikkben megtudhatja, hogyan:

  • Használja a Dokumentumelrendezés készséget a dokumentum szerkezetének felismerésére.
  • A Szöveg felosztása képesség használatával korlátozza az adattömb méretét az egyes Markdown-szakaszokra
  • Beágyazások létrehozása az egyes adattömbökhöz
  • Index-előrejelzések használata a beágyazások keresési indexben lévő mezőkre való leképezéséhez

Illusztrációként ez a cikk az Azure Blob Storage-ba feltöltött, majd az Adatok importálása varázslóval indexelt állapotterv-PDF-eket használja.

Előfeltételek

Készítsd elő az adatfájlokat

A nyers bemenetekhez támogatott adatforrást kell használnia, a fájlnak pedig a Dokumentumelrendezési képesség által támogatott formátumban kell lennie.

  • A támogatott fájlformátumok a következők: PDF, JPEG, JPG, PNG, BMP, TIFF, DOCX, XLSX, PPTX és HTML.

  • A támogatott indexelők olyan indexelők, amelyek képesek kezelni a támogatott fájlformátumokat. Ezek az indexelők közé tartoznak a blobindexelők, a Microsoft OneLake indexelők és a fájlindexelők (előzetes verzió).

  • A szolgáltatás portálélményének támogatott régiói közé tartozik az USA keleti régiója, Nyugat-Európa és az USA északi középső régiója. Ha programozott módon állítja be a készségeket, bármely Azure Document Intelligence-régiót használhat, amely az Azure AI Keresés AI-bővítési funkcióját is biztosítja. További információt a Dokumentumelrendezési képesség támogatott régiói című témakörben talál.

Használhatja az Azure portált, REST API-kat vagy egy Azure SDK csomagot adatforrás létrehozására.

Jótanács

Ha szeretné kipróbálni a Dokumentumelrendezés jártasságot és a struktúraérzékeny adattömbést a saját keresési szolgáltatásában, töltse fel az állapotterv PDF-mintafájljait a támogatott adatforrásba. Az Adatok importálása varázsló egy egyszerű, kód nélküli módszer a képesség kipróbálásához. Ügyeljen arra, hogy a alapértelmezett elemzési módot válassza a szerkezettudatos darabolás használatához. Ellenkező esetben a Markdown-elemzési módot használja a rendszer.

Hozzon létre egy indexet az egy-a-többhöz típusú indexeléshez.

Az alábbi példa egyetlen, adattömbök köré tervezett keresési dokumentumot mutat be. Ha adattömbökkel dolgozik, szüksége lesz egy adattömbmezőre és egy szülőmezőre, amely azonosítja az adattömb eredetét. Ebben a példában a szülőmezők a text_parent_id mezők. A gyermekmezők a Markdown szakasz vektorai és nem adatrészletei.

A dokumentumelrendezés készség kimenete tartalmazza a címsorokat és a tartalmat. Ebben a példában a header_1 és a header_3 tárolják a dokumentum fejlécét, ahogyan azt a készség felismerte. A többi tartalom, például a bekezdések, a chunk-ben van tárolva. A text_vector mező a tömb mező tartalmának vektoros ábrázolása.

Index létrehozásához használhatja az Adatok importálása varázslót az Azure Portalon, a REST API-kban vagy egy Azure SDK-ban. A következő index nagyon hasonló ahhoz, amelyet a varázsló alapértelmezés szerint létrehoz. Több meződ lehet, ha hozzáadod a kép vektorizálását.

Ha nem használja a varázslót, az indexnek léteznie kell a keresési szolgáltatáson, mielőtt létrehozza a készségkészletet vagy futtatja az indexelőt.

{
  "name": "my_consolidated_index",
  "fields": [
    {
      "name": "chunk_id",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": true,
      "facetable": false,
      "key": true,
      "analyzer": "keyword"
    },
    {
      "name": "text_parent_id",
      "type": "Edm.String",
      "searchable": false,
      "filterable": true,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "chunk",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "title",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "header_1",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "header_2",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "header_3",
      "type": "Edm.String",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false
    },
    {
      "name": "text_vector",
      "type": "Collection(Edm.Single)",
      "searchable": true,
      "filterable": false,
      "retrievable": true,
      "stored": true,
      "sortable": false,
      "facetable": false,
      "key": false,
      "dimensions": 1536,
      "stored": false,
      "vectorSearchProfile": "profile"
    }
  ],
  "vectorSearch": {
    "profiles": [
      {
        "name": "profile",
        "algorithm": "algorithm"
      }
    ],
    "algorithms": [
      {
        "name": "algorithm",
        "kind": "hnsw"
      }
    ]
  }
}

Képességkészlet definiálása struktúraérzékeny adattömbhöz és vektorizáláshoz

Az alábbi példa egy olyan képességkészlet-definíciót mutat be, amely az egyes Markdown-szakaszokat, adattömböket és azok vektor-megfelelőit a keresési index mezőiként jeleníti meg. A Dokumentumelrendezési képesség segítségével észleli a címsorokat, és feltölt egy tartalommezőt a forrásdokumentum szemantikailag koherens bekezdései és mondatai alapján. A Text Split képességet használja, hogy a Markdown tartalmat darabokra bontsa. Az Azure OpenAI beágyazási képességével vektorizálja az adattömböket és minden más mezőt, amelyhez beágyazást szeretne.

A készségek mellett a készségkészlet tartalmazza indexProjections és cognitiveServices:

  • indexProjections adattömbökből álló dokumentumokat tartalmazó indexekhez használhatók. A projekciók meghatározzák, hogyan van leképezve a szülő-gyermek tartalom a keresési index mezőire az egy a sokhoz indexelés során. További tájékoztatásért lásd: Határozzon meg egy index kivetítést.

  • cognitiveServicesszámlázási célból csatol egy Microsoft Foundry-erőforrást. A Dokumentumelrendezés készség standard díjszabással érhető el.

POST {endpoint}/skillsets?api-version=2026-04-01

{
  "name": "my_skillset",
  "description": "A skillset for structure-aware chunking and vectorization with an index projection around markdown section",
  "skills": [
    {
      "@odata.type": "#Microsoft.Skills.Util.DocumentIntelligenceLayoutSkill",
      "name": "my_document_intelligence_layout_skill",
      "context": "/document",
      "outputMode": "oneToMany",
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        {
          "name": "markdown_document",
          "targetName": "markdownDocument"
        }
      ],
      "markdownHeaderDepth": "h3"
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
      "name": "my_markdown_section_split_skill",
      "description": "A skill that splits text into chunks",
      "context": "/document/markdownDocument/*",
      "inputs": [
        {
          "name": "text",
          "source": "/document/markdownDocument/*/content",
          "inputs": []
        }
      ],
      "outputs": [
        {
          "name": "textItems",
          "targetName": "pages"
        }
      ],
      "defaultLanguageCode": "en",
      "textSplitMode": "pages",
      "maximumPageLength": 2000,
      "pageOverlapLength": 500,
      "unit": "characters"
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
      "name": "my_azure_openai_embedding_skill",
      "context": "/document/markdownDocument/*/pages/*",
      "inputs": [
        {
          "name": "text",
          "source": "/document/markdownDocument/*/pages/*",
          "inputs": []
        }
      ],
      "outputs": [
        {
          "name": "embedding",
          "targetName": "text_vector"
        }
      ],
      "resourceUri": "https://<subdomain>.openai.azure.com",
      "deploymentId": "text-embedding-3-small",
      "apiKey": "<Azure OpenAI api key>",
      "modelName": "text-embedding-3-small"
    }
  ],
  "cognitiveServices": {
    "@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
    "key": "<Cognitive Services api key>"
  },
  "indexProjections": {
    "selectors": [
      {
        "targetIndexName": "my_consolidated_index",
        "parentKeyFieldName": "text_parent_id",
        "sourceContext": "/document/markdownDocument/*/pages/*",
        "mappings": [
          {
            "name": "text_vector",
            "source": "/document/markdownDocument/*/pages/*/text_vector"
          },
          {
            "name": "chunk",
            "source": "/document/markdownDocument/*/pages/*"
          },
          {
            "name": "title",
            "source": "/document/title"
          },
          {
            "name": "header_1",
            "source": "/document/markdownDocument/*/sections/h1"
          },
          {
            "name": "header_2",
            "source": "/document/markdownDocument/*/sections/h2"
          },
          {
            "name": "header_3",
            "source": "/document/markdownDocument/*/sections/h3"
          }
        ]
      }
    ],
    "parameters": {
      "projectionMode": "skipIndexingParentDocuments"
    }
  }
}

Az indexelő konfigurálása és futtatása

Miután létrehozott egy adatforrást, indexet és képességkészletet, hozza létre és futtassa az indexelőt. Ez a lépés végrehajtja a csővezetéket.

A Dokumentumelrendezési képesség használatakor állítsa be a következő paramétereket az indexelő definícióján:

  • Állítsa be a paramétert allowSkillsetToReadFileData a következőre true: .
  • Állítsa be a paramétert parsingMode a következőre default: .

Ebben a forgatókönyvben nem kell beállítania outputFieldMappings , mert indexProjections a forrásmezőt a keresési mező társításaihoz kezeli. Az index vetítések kezelik a mezők társításait a Dokumentumelrendezés készséghez, továbbá normál feldolgozást végeznek a szétválasztási készség segítségével az importált és vektorizált adatterhelések esetén. Továbbra is szükség van kimeneti mezőleképezésekre az átalakításokhoz vagy összetett adatleképezésekhez olyan függvényekkel, amelyek más esetekben alkalmazhatók. Mindazonáltal, mivel egy dokumentumra jutó n darab példány esetén az indexvetületek natívan kezelik ezt a funkciót.

Itt egy példa egy indexelő létrehozási kérelemre.

POST {endpoint}/indexers?api-version=2026-04-01

{
  "name": "my_indexer",
  "dataSourceName": "my_blob_datasource",
  "targetIndexName": "my_consolidated_index",
  "skillsetName": "my_skillset",
  "parameters": {
    "batchSize": 1,
    "configuration": {
        "dataToExtract": "contentAndMetadata",
        "parsingMode": "default",
        "allowSkillsetToReadFileData": true
    }
  },
  "fieldMappings": [
    {
      "sourceFieldName": "metadata_storage_path",
      "targetFieldName": "title"
    }
  ],
  "outputFieldMappings": []
}

Amikor elküldi a kérést a keresési szolgáltatásnak, az indexelő fut.

Eredmények ellenőrzése

A feldolgozás befejezése után lekérdezheti a keresési indexet, hogy tesztelje a megoldását.

Az eredmények ellenőrzéséhez futtasson egy lekérdezést az indexen. Használja a Search Explorer-t keresési kliensként, vagy bármilyen eszközt, amely HTTP kéréseket küld. Az alábbi lekérdezés olyan mezőket választ ki, amelyek a Markdown szakasz nemvektoros tartalmának és vektorának kimenetét tartalmazzák.

A Search Explorerben csak a JSON-t másolhatja, és beillesztheti a JSON nézetbe a lekérdezés végrehajtásához.

POST /indexes/[index name]/docs/search?api-version=[api-version]
{
  "search": "copay for in-network providers",
  "count": true,
  "searchMode": "all",
  "vectorQueries": [
    {
      "kind": "text",
      "text": "*",
      "fields": "text_vector,image_vector"
    }
  ],
  "queryType": "semantic",
  "semanticConfiguration": "healthplan-doc-layout-test-semantic-configuration",
  "captions": "extractive",
  "answers": "extractive|count-3",
  "select": "header_1, header_2, header_3"
}

Ha a health plan PDF-eket használta ennek a készségnek a tesztelésére, akkor a Search Explorer eredményeinek az alábbi képernyőképen látható eredményekhez kellene hasonlítaniuk a példakérdés esetében.

  • A lekérdezés egy hibrid lekérdezés szöveg és vektorok felett, így megjelenik egy @search.rerankerScore , és az eredményeket az adott pontszám rangsorolja. searchMode=all azt jelenti, hogy a összes keresési kifejezést figyelembe kell venni az egyezéshez (az alapértelmezett beállítás az bármelyik kifejezés).

  • A lekérdezés szemantikai rangsorolást használ, így láthatja captions. Azt is tartalmazza answers, de nem jelennek meg a képernyőképen. Az eredmények a szemantikai rangsoroló által meghatározott lekérdezési bemenet szempontjából a leginkább szemantikailag relevánsak.

  • Az select utasítás (amely nem jelenik meg a képernyőképen) meghatározza azokat a fejlécmezőket, amelyeket a Dokumentumelrendezés képesség észlel és feltölt. Több mezőt is hozzáadhat a select záradékhoz, hogy megvizsgálja a tartalom darabkáit, a címet, vagy bármely más, ember által olvasható mezőt.

Hibrid lekérdezés eredményeinek képernyőképe, amely tartalmazza a dokumentum elrendezésének készség kimeneti mezőit.