Tudástár létrehozása a REST használatával

Megjegyzés

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.

Megjegyzés

Knowledge áruházak másodlagos tárolók, amelyek az Azure Storage-ban léteznek, és az Azure AI Keresés képességkészletek eredményeit tartalmazzák. Ezek különböznek a tudásforrásoktól és a tudásbázisoktól, amelyeket ügynöki lekéréses munkafolyamatokban használnak.

Az Azure AI Keresés tudásraktár a képességek által létrehozott tartalmak adattára, amelyet nem keresési forgatókönyvekhez használnak. A tudástárat indexelővel és képességkészlettel hozhatja létre, és megadhatja Azure Storage a kimenet tárolásához. A tudástár feltöltése után használjon olyan eszközöket, mint a Storage Explorer vagy Power BI a tartalom megismeréséhez.

Ebben a cikkben a REST API-val betöltheti, gazdagíthatja és felfedezheti a szállodai tartózkodásokról szóló ügyfélértékelések egy készletét egy tudástárban. A tudástár tartalmazza a forrásból lekért eredeti szöveges tartalmat, valamint az AI által létrehozott tartalmakat, amelyek tartalmazzák a hangulatpontszámot, a kulcskifejezések kinyerását, a nyelvfelismerést és a nem angol nyelvű ügyfelek megjegyzéseinek szövegfordítását.

A kezdeti adatkészlet elérhetővé tétele érdekében a szállodai értékeléseket először importálja a Azure Blob Storage. A feldolgozás után az eredmények tudástárként tárolva lesznek az Azure Táblatárolóban.

Tipp.

Ez a cikk a REST függvényt használja az egyes lépések részletes magyarázatához. Töltse le a REST-fájlt ha csak futtatni szeretné a parancsokat.

Előfeltételek

A példában szereplő készségkészlet az Öntödei eszközöket használja a bővítéshez. Mivel a munkaterhelés olyan csekély, a Foundry Tools a háttérben van bevonva, amely akár napi 20 tranzakcióhoz biztosít ingyenes feldolgozást. A kis számítási feladatok azt jelentik, hogy kihagyhatja a Microsoft Foundry-erőforrások létrehozását vagy csatolását.

Adatok feltöltése az Azure Storage-ba és egy kapcsolati karakterlánc megszerzése.

  1. Letöltés HotelReviews_data.csv. Ez a CSV 19 darab ügyfél-visszajelzést tartalmaz egyetlen szállodáról (Kaggle.com származik).

  2. Az Azure portalon keresse meg a tárolófiókját, majd az Storage Browser használatával hozzon létre egy hotel-reviews nevű blobtárolót.

  3. Válassza a Lap tetején található Feltöltés lehetőséget az előző lépésből letöltött HotelReviews_data.csv fájl betöltéséhez.

    A feltöltött fájllal és bal oldali navigációs panellel rendelkező Storage böngésző képernyőképe

  4. A bal oldalon válassza a Hozzáférési Kulcsok lehetőséget, majd a Kulcsok Megjelenítése opciót, és másolja a kapcsolati karakterláncot az 1. vagy a 2. kulcshoz. A teljes hozzáférési kapcsolatkarakterlánc formátuma a következő:

"knowledgeStore": {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-ACCOUNT-NAME>;AccountKey=<YOUR-ACCOUNT-KEY>;EndpointSuffix=core.windows.net;"
}

Megjegyzés

Ha nem szeretne bizalmas adatokat megadni a kapcsolati karakterlánc-ben, tekintse meg a Felügyelt identitás használatával való kapcsolódás részt.

Kulcs és URL másolása

Ebben a példában a REST-hívásokhoz szükség van a search service végpontra, és minden kéréshez egy API-kulcsot kell használni. Ezeket az értékeket a Azure portal érheti el.

  1. Nyissa meg a keresési szolgáltatást az Azure Portalon.

  2. Az Áttekintés lapon másolja ki a végpont URL-címét. Például egy végpont https://mydemo.search.windows.net.

  3. ABeállításkulcsok> lapon másolja ki a rendszergazdai kulcsot. A rendszergazdai kulcsok objektumok hozzáadására, módosítására és törlésére szolgálnak. Két felcserélhető rendszergazdai kulcs van. Másolja valamelyiket.

    Screenshot az URL-ről és az API-kulcsokról az Azure portálon.

Az érvényes API-kulcs kérésenként megbízhatóságot hoz létre a kérést küldő alkalmazás és az azt kezelő keresési szolgáltatás között.

Index létrehozása

Index létrehozása (REST) keresési indexet hoz létre a keresőszolgáltatáson. A keresési index nem kapcsolódik a tudástárhoz, de az indexelőnek szüksége van rá. A keresési index ugyanazokat a tartalmakat tartalmazza, mint a tudástár, amelyet lekérdezési kérések küldésével vizsgálhat meg.

  1. Nyisson meg egy új szövegfájlt Visual Studio Code-ban.

  2. Állítsa be a változókat a keresési végpontra és a korábban gyűjtött API-kulcsra.

    @baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
    @apiKey = PUT-YOUR-ADMIN-API-KEY-HERE
     @storageConnectionString = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE
    @blobContainer = PUT-YOUR-CONTAINER-NAME-HERE (hotel-reviews)
    
  3. Mentse a fájlt fájlkiterjesztéssel .rest .

  4. Illessze be az alábbi példába az indexkérelmet.

    ### Create a new index
    POST {{baseUrl}}/indexes?api-version=2026-04-01  HTTP/1.1
        Content-Type: application/json
        api-key: {{apiKey}}
    
        {
            "name": "hotel-reviews-kstore-idx",  
            "fields": [
                { "name": "name", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false },
                { "name": "reviews_date", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
                { "name": "reviews_rating", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
                { "name": "reviews_text", "type": "Edm.String", "filterable": false,  "sortable": false, "facetable": false },
                { "name": "reviews_title", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
                { "name": "reviews_username", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
                { "name": "AzureSearch_DocumentKey", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false, "key": true },
                { "name": "language", "type": "Edm.String", "filterable": true, "sortable": false, "facetable": true },
                { "name": "translated_text", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false },
                { "name": "sentiment", "type": "Collection(Edm.String)", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
                { "name": "keyphrases", "type": "Collection(Edm.String)", "filterable": true, "sortable": false, "facetable": true }
            ]
        }
    
  5. Válassza a Kérés elküldése elemet. Válasznak kell lennie HTTP/1.1 201 Created , és a válasz törzsének tartalmaznia kell az indexséma JSON-ábrázolását.

Adatforrás létrehozása

Adatforrás létrehozása adatforrás-kapcsolatot hoz létre Azure AI Keresés.

  1. Illessze be az alábbi példát az adatforrás létrehozásához.

    ### Create a data source
    POST {{baseUrl}}/datasources?api-version=2026-04-01  HTTP/1.1
      Content-Type: application/json
      api-key: {{apiKey}}
    
        {
            "name": "hotel-reviews-kstore-ds",
            "description": null,
            "type": "azureblob",
            "subtype": null,
            "credentials": {
                "connectionString": "{{storageConnectionString}}"
            },
            "container": {
                "name": "{{blobContainer}}",
                "query": null
            },
            "dataChangeDetectionPolicy": null,
            "dataDeletionDetectionPolicy": null
        }
    
  2. Válassza a Kérés elküldése elemet.

Készségkészlet létrehozása

A képességkészletek a bővítéseket (készségeket) és a tudástárat határozzák meg. Create Skillset nevű objektumot hoz létre a keresési szolgáltatásban.

  1. Illessze be a következő példát a készségkészlet létrehozásához.

    ### Create a skillset
    POST {{baseUrl}}/skillsets?api-version=2026-04-01  HTTP/1.1
        Content-Type: application/json
        api-key: {{apiKey}}
    
        {
            "name": "hotel-reviews-kstore-ss",
            "description": "Skillset to detect language, translate text, extract key phrases, and score sentiment",
            "skills": [ 
                {
                    "@odata.type": "#Microsoft.Skills.Text.SplitSkill", 
                    "context": "/document/reviews_text", "textSplitMode": "pages", "maximumPageLength": 5000,
                    "inputs": [ 
                        { "name": "text", "source": "/document/reviews_text" }
                    ],
                    "outputs": [
                        { "name": "textItems", "targetName": "pages" }
                    ]
                },
                {
                    "@odata.type": "#Microsoft.Skills.Text.V3.SentimentSkill",
                    "context": "/document/reviews_text/pages/*",
                    "inputs": [
                        { "name": "text", "source": "/document/reviews_text/pages/*" },
                        { "name": "languageCode", "source": "/document/language" }
                    ],
                    "outputs": [
                        { "name": "sentiment", "targetName": "sentiment" }
                    ]
                },
                {
                    "@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
                    "context": "/document",
                    "inputs": [
                        { "name": "text", "source": "/document/reviews_text" }
                    ],
                    "outputs": [
                        { "name": "languageCode", "targetName": "language" }
                    ]
                },
                {
                    "@odata.type": "#Microsoft.Skills.Text.TranslationSkill",
                    "context": "/document/reviews_text/pages/*",
                    "defaultFromLanguageCode": null,
                    "defaultToLanguageCode": "en",
                    "inputs": [
                        { "name": "text", "source": "/document/reviews_text/pages/*" }
                    ],
                    "outputs": [
                        { "name": "translatedText", "targetName": "translated_text" }
                    ]
                },
                {
                    "@odata.type": "#Microsoft.Skills.Text.KeyPhraseExtractionSkill",
                    "context": "/document/reviews_text/pages/*",
                    "inputs": [
                        { "name": "text",  "source": "/document/reviews_text/pages/*" },
                        { "name": "languageCode",  "source": "/document/language" }
                    ],
                    "outputs": [
                        { "name": "keyPhrases" , "targetName": "keyphrases" }
                    ]
                },
                {
                    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
                    "context": "/document",
                    "inputs": [
                        { "name": "name",  "source": "/document/name" },
                        { "name": "reviews_date",  "source": "/document/reviews_date" },
                        { "name": "reviews_rating",  "source": "/document/reviews_rating" },
                        { "name": "reviews_text",  "source": "/document/reviews_text" },
                        { "name": "reviews_title",  "source": "/document/reviews_title" },
                        { "name": "reviews_username",  "source": "/document/reviews_username" },
                        { "name": "AzureSearch_DocumentKey",  "source": "/document/AzureSearch_DocumentKey" },
                        {
                        "name": "pages",
                        "sourceContext": "/document/reviews_text/pages/*",
                        "inputs": [
                            {
                            "name": "languageCode",
                            "source": "/document/language"
                            },
                            {
                            "name": "translatedText",
                            "source": "/document/reviews_text/pages/*/translated_text"
                            },
                            { 
                            "name": "sentiment",
                            "source": "/document/reviews_text/pages/*/sentiment"
                            },
                            {
                            "name": "keyPhrases",
                            "source": "/document/reviews_text/pages/*/keyphrases/*"
                            },
                            {
                            "name": "Page",
                            "source": "/document/reviews_text/pages/*"
                            }
                        ]
                        }
                    ],
                    "outputs": [
                        { "name": "output" , "targetName": "tableprojection" }
                    ]
                }
            ],
            "knowledgeStore": {
                "storageConnectionString": "{{storageConnectionString}}",
                "projections": [
                    {
                        "tables": [
                            { "tableName": "hotelReviews1Document", "generatedKeyName": "Documentid", "source": "/document/tableprojection" },
                            { "tableName": "hotelReviews2Pages", "generatedKeyName": "Pagesid", "source": "/document/tableprojection/pages/*" },
                            { "tableName": "hotelReviews3KeyPhrases", "generatedKeyName": "KeyPhrasesid", "source": "/document/tableprojection/pages/*/keyPhrases/*" }
                        ],
                        "objects": []
                    },
                    {
                        "tables": [
                            { 
                                "tableName": "hotelReviews4InlineProjectionDocument", "generatedKeyName": "Documentid", "sourceContext": "/document",
                                "inputs": [
                                    { "name": "name", "source": "/document/name"},
                                    { "name": "reviews_date", "source": "/document/reviews_date"},
                                    { "name": "reviews_rating", "source": "/document/reviews_rating"},
                                    { "name": "reviews_username", "source": "/document/reviews_username"},
                                    { "name": "reviews_title", "source": "/document/reviews_title"},
                                    { "name": "reviews_text", "source": "/document/reviews_text"},
                                    { "name": "AzureSearch_DocumentKey", "source": "/document/AzureSearch_DocumentKey" }
                                ]
                            },
                            { 
                                "tableName": "hotelReviews5InlineProjectionPages", "generatedKeyName": "Pagesid", "sourceContext": "/document/reviews_text/pages/*",
                                "inputs": [
                                    { "name": "Sentiment", "source": "/document/reviews_text/pages/*/sentiment"},
                                    { "name": "LanguageCode", "source": "/document/language"},
                                    { "name": "Keyphrases", "source": "/document/reviews_text/pages/*/keyphrases"},
                                    { "name": "TranslatedText", "source": "/document/reviews_text/pages/*/translated_text"},
                                    { "name": "Page", "source": "/document/reviews_text/pages/*" }
                                ]
                            },
                            { 
                                "tableName": "hotelReviews6InlineProjectionKeyPhrases", "generatedKeyName": "kpidv2", "sourceContext": "/document/reviews_text/pages/*/keyphrases/*",
                                "inputs": [
                                    { "name": "Keyphrases", "source": "/document/reviews_text/pages/*/keyphrases/*" }
                                ]
                            }
                        ],
                        "objects": []
                    }
                ]
            }
        }
    

Főbb pontok:

  • A Shaper-képesség fontos a tudástár definíciójában. Meghatározza, hogy az adatok hogyan áramoljanak a tudástár tábláiba. A bemenetek a bővített dokumentum tárolni kívánt részei. A kimenet a csomópontok egyetlen struktúrába való összesítése.

  • A kivetítések a tudástár tábláit, objektumait és blobjait határozzák meg. Egy táblaprojekció megadja a(z) tableName, generatedKeyName, valamint source vagy sourceContext elemet a(z) inputs használatával. A source és sourceContext tulajdonságok azonosítják a tárolandó dúsított tartalmat.

Indexelő létrehozása

Az Indexelő létrehozása létrehozza és futtatja az indexelőt. Az indexelő végrehajtása a dokumentumok feltörésével, a szöveg és képek kinyerésével, valamint a képességkészlet inicializálásával kezdődik. Az indexelő ellenőrzi a többi létrehozott objektumot: az adatforrást, az indexet és a képességkészletet.

  1. Az alábbi példát illessze be az indexelő létrehozásához.

    ### Create indexer
    POST {{baseUrl}}/indexers?api-version=2026-04-01  HTTP/1.1
        Content-Type: application/json
        api-key: {{apiKey}}
    
        {
            "name": "hotel-reviews-kstore-idxr",
            "dataSourceName": "hotel-reviews-kstore-ds",
            "skillsetName": "hotel-reviews-kstore-ss",
            "targetIndexName": "hotel-reviews-kstore-idx",
            "parameters": {
                "configuration": {
                    "dataToExtract": "contentAndMetadata",
                    "parsingMode": "delimitedText",
                    "firstLineContainsHeaders": true,
                    "delimitedTextDelimiter": ","
        }
    },
    "fieldMappings": [
        {
            "sourceFieldName": "AzureSearch_DocumentKey",
            "targetFieldName": "AzureSearch_DocumentKey",
            "mappingFunction": { "name": "base64Encode" }
        }
    ],
    "outputFieldMappings": [
        { "sourceFieldName": "/document/reviews_text/pages/*/keyphrases/*", "targetFieldName": "keyphrases" },
        { "sourceFieldName": "/document/language", "targetFieldName": "language" },
        { "sourceFieldName": "/document/reviews_text/pages/*/sentiment", "targetFieldName": "sentiment" }
        ]
    }
    
  2. Válassza a Kérés küldése lehetőséget az indexelő létrehozásához és futtatásához. Ez a lépés több percet vesz igénybe.

Főbb pontok:

  • Az parameters/configuration objektum szabályozza, hogy az indexelő hogyan betölti az adatokat. Ebben az esetben a bemeneti adatok egyetlen CSV-fájlban vannak, amely fejlécsort és vesszővel elválasztott értékeket tartalmaz.

  • A AzureSearch_DocumentKey mezőleképezése egyedi azonosítót hoz létre a blobindexelő által létrehozott minden egyes dokumentumhoz (a metaadatok storage elérési útja alapján).

  • A kimeneti mezőleképezések megadják, hogy a bővített mezők hogyan vannak leképezve a keresési index mezőire. A kimeneti mezőleképezések nem használhatók a tudástárakban (a tudástárak alakzatokkal és kivetítésekkel fejezik ki a fizikai adatstruktúrákat).

Állapot ellenőrzése

Ellenőrizze az indexelő állapotát, hogy a képességkészlet sikeresen befejeződött-e.

### Get Indexer Status (wait several minutes for the indexer to complete)
GET {{baseUrl}}/indexers/hotel-reviews-kstore-idxr/status?api-version=2026-04-01  HTTP/1.1
  Content-Type: application/json
  api-key: {{apiKey}}

A kérés a következőt adja vissza: 200 OK. Várjon, amíg lastResult.statussuccess, mielőtt lekérdezné az indexet.

Az index lekérdezése a tartalom vizsgálatához. Még akkor is, ha nem használja az indexet, ez a lépés kényelmes módszer annak ellenőrzésére, hogy a képességkészlet a várt kimenetet hozta-e létre.

### Query the index (indexer status must be "success" before querying the index)
POST {{baseUrl}}/indexes/hotel-reviews-kstore-idx/docs/search?api-version=2026-04-01  HTTP/1.1
  Content-Type: application/json
  api-key: {{apiKey}}
  
  {
    "search": "*",
    "select": "reviews_title, reviews_username, language, translated_text, sentiment",
    "count": true
  }

A kérés visszaadja 200 OK és tartalmazza a kijelölt bővített mezőket.

Az Azure portálon lévő táblák ellenőrzése

Az Azure-portálon váltson az Azure Storage-fiókjára, és a Storage Browser használatával tekintse meg az új táblákat. Hat táblát kell látnia, egyet a készségkészletben definiált minden egyes vetítéshez.

Minden tábla a lekérdezésekben lévő táblák keresztkapcsolásához szükséges azonosítókkal jön létre. Amikor megnyit egy táblát, görgessen túl ezeken a mezőkön, hogy megtekintse a folyamat által hozzáadott tartalommezőket.

Képernyőkép a tudástár táblázatairól a Storage Browserben

Ebben az útmutatóban a tudástár különböző táblákból áll, amelyek az adatok alakításának és strukturálásának különböző módjait mutatják be. Az 1–3. táblázat egy Shaper-képesség kimenetét használja az oszlopok és sorok meghatározásához. A négytől a hatig tartó táblázatok beágyazott formázási utasításokból jönnek létre, amelyek a kivetítésbe ágyazódnak. Ugyanazt az eredményt bármelyik megközelítéssel érheti el.

Táblázat Leírás
hotelReviews1Document A CSV-ből továbbított mezőket tartalmazza, például reviews_date és reviews_text.
hotelReviews2Pages A képességkészlet által létrehozott bővített mezőket tartalmaz, például a hangulatpontszámot és a lefordított szöveget.
hotelReviews3KeyPhrases Csak a kulcskifejezések hosszú listáját tartalmazza.
hotelReviews4InlineProjectionDocument Az első táblázat alternatívája, ahol az adatokat a vetítéshez soron belüli formázás segítségével alakítja ahelyett, hogy a Shaper funkciót használná.
hotelReviews5InlineProjectionPages A második táblázat alternatívája, soros alakítással.
hotelReviews6InlineProjectionKeyPhrases A harmadik táblázat alternatívája soros formázással.

Rendrakás

Ha a saját előfizetésében dolgozik, érdemes a projekt végén átgondolni, hogy szükség van-e még a létrehozott erőforrásokra. A továbbra is futó erőforrások költségekkel járhatnak. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.

A Azure portal erőforrásokat a bal oldali navigációs panelen található All resources vagy Resource groups link használatával keresheti meg és kezelheti.

Következő lépések

Most, hogy a Foundry eszközökkel bővítette az adatokat, és az eredményeket egy tudástárba átvitte, a Storage Explorer vagy más alkalmazásokkal felfedezheti a gazdagított adatállományt.