Tudástár létrehozása a REST használatával
Az Azure AI Searchben a tudástár az AI által létrehozott tartalmak adattára, amelyet nem keresési forgatókönyvekhez használnak. A tudástárat indexelő és képességkészlet használatával hozhatja létre, és megadhatja az Azure Storage-t a kimenet tárolásához. A tudástár feltöltése után használja az olyan eszközöket, mint a Storage Explorer vagy a Power BI , hogy megismerje a tartalmat.
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 rendszer először importálja a szállodai felülvizsgálatokat az Azure Blob Storage-ba. A feldolgozás után a rendszer az eredményeket tudástárként menti az Azure Table Storage-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. Másik lehetőségként létrehozhat egy tudástárat is az Azure Portalon.
Előfeltételek
Visual Studio Code REST-ügyféllel. Ha segítségre van szüksége az első lépésekhez, olvassa el a rövid útmutatót: Szövegkeresés REST használatával.
Azure AI Search. Hozzon létre egy szolgáltatást , vagy keressen egy meglévőt. Ehhez a gyakorlathoz használhatja az ingyenes szolgáltatást.
Azure Storage. Hozzon létre egy fiókot , vagy keressen egy meglévőt. A fióktípusnak StorageV2 (általános célú V2) típusúnak kell lennie.
A példában szereplő készségkészlet az Azure AI-szolgáltatásokat használja a bővítéshez. Mivel a számítási feladat annyira kicsi, hogy az Azure AI-szolgáltatások a színfalak mögött leképezve naponta legfeljebb 20 tranzakció ingyenes feldolgozását teszik lehetővé. A kis számítási feladatok azt jelentik, hogy kihagyhatja egy többszolgáltatásos Azure AI-erőforrás létrehozását vagy csatolását.
Adatok feltöltése az Azure Storage-ba, és kapcsolati sztring
Töltse le HotelReviews_Free.csv. Ez a CSV 19 darab ügyfél-visszajelzést tartalmaz egyetlen szállodáról (Kaggle.com származik).
Az Azure Portalon keresse meg a tárfiókot, és a Storage Browser használatával hozzon létre egy hotel-reviews nevű blobtárolót.
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-Free.csv fájl betöltéséhez.
A bal oldalon válassza a Hozzáférési kulcsok lehetőséget, válassza a Kulcsok megjelenítése lehetőséget, majd másolja a kapcsolati sztring az 1. vagy a 2. kulcshoz. A teljes hozzáférésű kapcsolati sztring formátuma a következő:
"knowledgeStore": {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-ACCOUNT-NAME>;AccountKey=<YOUR-ACCOUNT-KEY>;EndpointSuffix=core.windows.net;"
}
Feljegyzés
Ha nem szeretne bizalmas adatokat megadni a kapcsolati sztring, olvassa el a Csatlakozás felügyelt identitással című témakört.
Kulcs és URL másolása
Ebben a példában a REST-hívásokhoz a keresési szolgáltatás végpontja szükséges, és minden kéréshez egy API-kulcsot kell használni. Ezeket az értékeket az Azure Portalon szerezheti be.
Jelentkezzen be az Azure Portalra, lépjen az Áttekintés lapra, és másolja ki az URL-címet. A végpontok például a következőképpen nézhetnek ki:
https://mydemo.search.windows.net
.A Beállítások>kulcsok területen 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.
Az érvényes API-kulcs kérésenként megbízhatóságot hoz létre a kérelmet küldő alkalmazás és az azt kezelő keresési szolgáltatás között.
Index létrehozása
Az Index létrehozása (REST) létrehoz egy keresési indexet a keresési szolgáltatásban. 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.
Nyisson meg egy új szövegfájlt a Visual Studio Code-ban.
Á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 @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE @blobContainer = PUT-YOUR-CONTAINER-NAME-HERE (hotel-reviews)
Mentse a fájlt fájlkiterjesztéssel
.rest
.Illessze be az alábbi példába az indexkérelmet.
### Create a new index POST {{baseUrl}}/indexes?api-version=2024-07-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 } ] }
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 az Azure AI Search szolgáltatásban.
Illessze be az alábbi példába az adatforrás létrehozásához.
### Create a data source POST {{baseUrl}}/datasources?api-version=2024-07-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 }
Válassza a Kérés elküldése elemet.
Képességcsoport 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. A Skillset létrehozása létrehozza az objektumot a keresési szolgáltatásban.
Illessze be a következő példába a készségkészlet létrehozásához.
### Create a skillset POST {{baseUrl}}/skillsets?api-version=2024-07-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 leképezések a tudástár tábláit, objektumait és blobjait határozzák meg. Minden vetítési elem megadja az
"name"
Azure Storage-ban létrehozandó oszlopot vagy mezőt. Ez"source"
adja meg, hogy az alakzat kimenetének mely része legyen hozzárendelve ehhez a mezőhöz vagy oszlophoz.
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.
Illessze be az alábbi példába az indexelő létrehozásához.
### Create indexer POST {{baseUrl}}/indexers?api-version=2024-07-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" } ] }
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 mezőleképezések létrehoznak egy "AzureSearch_DocumentKey" egy egyedi azonosítót minden olyan dokumentumhoz, amelyet a blobindexelő hoz létre (a metaadattár 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
Az egyes kérések elküldése után a keresési szolgáltatásnak egy 201-ben sikeres üzenettel kell válaszolnia.
### Get Indexer Status (wait several minutes for the indexer to complete)
GET {{baseUrl}}/indexers/hotel-reviews-kstore-idxr/status?api-version=2024-07-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
Néhány perc elteltével lekérdezheti az indexet 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-idxr/docs/search?api-version=2024-07-01 HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}
{
"search": "*",
"select": "reviews_title, reviews_username, language, translated_text, sentiment",
"count": true
}
Táblák ellenőrzése az Azure Portalon
Az Azure Portalon váltson az Azure Storage-fiókra, é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 ezeken a mezőkön a folyamat által hozzáadott tartalommezők megtekintéséhez.
Ebben az útmutatóban a tudástár különböző táblákból áll, amelyek a táblák formázá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ázat beágyazott formázási utasításokból jön létre, és magában a vetítésben van beágyazva. Ugyanazt az eredményt bármelyik megközelítéssel érheti el.
Tábla | 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, ha a Shaper-képesség helyett beágyazott formázást használ a vetítés adatainak alakításához. |
hotelReviews5InlineProjectionPages |
A második táblázat alternatívája, beágyazott formázással. |
hotelreviews6InlineProjectionKeyPhrases |
A harmadik táblázat alternatívája beágyazott formázással. |
A fölöslegessé vált elemek eltávolítása
Ha a saját előfizetésében dolgozik, érdemes az egyes projektek végén eldöntenie, hogy szüksége lesz-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.
Az erőforrásokat az Azure Portalon, a bal oldali navigációs panel Minden erőforrás vagy erőforráscsoport hivatkozásával keresheti meg és kezelheti.
Következő lépések
Most, hogy az Azure AI-szolgáltatások használatával bővítette az adatokat, és az eredményeket egy tudástárba kivetítette, a Storage Explorer vagy más alkalmazások segítségével felfedezheti a bővített adatkészletet.