Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Ebben az Azure AI Keresés oktatóanyagban megtudhatja, hogyan indexelheti és kérdezheti le a nagy adatokat, amelyeket egy Spark-fürtől töltöttek be. Beállítasz egy Jupyter Notebookot a következő célokra:
- Különböző űrlapok (számlák) betöltése adatkeretbe egy Apache Spark-munkamenetben
- Az űrlapok elemzése a funkciók meghatározásához
- Az eredményül kapott kimenet összeállítása táblázatos adatstruktúrába
- A kimenet írása az Azure AI Keresésben üzemeltetett keresési indexbe
- A létrehozott tartalom megismerése és lekérdezése
Ez az oktatóanyag a SynapseML-hez való függőséget veszi igénybe, amely egy nyílt forráskódú kódtár, amely nagy mennyiségű adaton keresztül támogatja a nagymértékben párhuzamos gépi tanulást. A SynapseML-ben a keresési indexelés és a gépi tanulás speciális feladatokat végző transzformátorokon keresztül érhető el. A transformerek az AI-képességek széles skáláját kiaknázzák. Ebben a gyakorlatban az AzureSearchWriter API-kat használja elemzéshez és AI-bővítéshez.
Bár az Azure AI Keresés natív AI-bővítéssel rendelkezik, ez az oktatóanyag bemutatja, hogyan férhet hozzá az AI-képességekhez az Azure AI Keresésen kívül. Ha a SynapseML-t használja indexelők vagy készségek helyett, nem vonatkoznak önre adatkorlátok vagy az objektumokkal kapcsolatos egyéb korlátozások.
Tipp
Tekintse meg a bemutató rövid videóját. A videó további lépésekkel és vizualizációkkal bővíti ezt az oktatóanyagot.
Prerequisites
Szüksége van a kódtárra synapseml és több Azure-erőforrásra. Ha lehetséges, használja ugyanazt az előfizetést és régiót az Azure-erőforrásokhoz, és helyezzen el mindent egy erőforráscsoportba az egyszerű törlés érdekében. Az alábbi hivatkozások a portál telepítésére mutatnak. A mintaadatok importálása nyilvános helyről történik.
- SynapseML 1. csomag
- Azure AI Keresés (bármely szint) 2
-
Microsoft Foundry-erőforrás (bármely szint) 3
AIServices - Azure Databricks (bármely szint) az Apache Spark 3.3.0 4-es verziójú futtatókörnyezetével.
1 Ez a hivatkozás a csomag betöltési útmutatóhoz vezet.
2 Az ingyenes szinttel indexelheti a mintaadatokat, de nagyobb adatmennyiségek esetén magasabb szintet is választhat . Számlázható szintek esetén adja meg a keresési API-kulcsot a Függőségek beállítása lépés későbbi szakaszában.
3 Ez az oktatóanyag a Foundry Tools Dokumentumintelligencia és Translator szolgáltatását használja. A következő utasításokban adjon meg egy Foundry-erőforráskulcsot a régióval együtt. Ugyanez a kulcs mindkét szolgáltatás esetében működik.
Ebben az oktatóanyagban fontos, hogy egy Foundry-erőforrást használjon API-val AIServices. Az API-típust az Azure Portalon, az Foundry-erőforrás Áttekintés lapján ellenőrizheti. További információ az API-típusról: Foundry-erőforrás csatolása az Azure AI Keresésben.
4 Ebben az oktatóanyagban az Azure Databricks biztosítja a Spark számítási platformot. A portál utasításait használva beállítottuk a fürtöt és a munkaterületet.
Megjegyzés
A fenti Azure-erőforrások támogatják a Microsoft Identity platform biztonsági funkcióit. Az egyszerűség kedvéért ez az oktatóanyag kulcsalapú hitelesítést feltételez az egyes szolgáltatások Azure Portal-oldalairól másolt végpontok és kulcsok használatával. Ha éles környezetben implementálja ezt a munkafolyamatot, vagy megosztja a megoldást másokkal, ne felejtse el lecserélni a rögzített kulcsokat integrált biztonsági vagy titkosított kulcsokkal.
Hozzon létre Spark-fürtöt és jegyzetfüzetet.
Ebben a szakaszban létrehoz egy fürtöt, telepíti a synapseml könyvtárat, és jegyzetfüzetet hoz létre a kód futtatásához.
Az Azure Portalon keresse meg az Azure Databricks-munkaterületet, és válassza a Munkaterület indítása lehetőséget.
A bal oldali menüben válassza a Számítás lehetőséget.
Válassza a Számítás létrehozása lehetőséget.
Fogadja el az alapértelmezett konfigurációt. A fürt létrehozása több percet vesz igénybe.
Ellenőrizze, hogy a klaszter működik-e és fut-e. A fürtnév által megadott zöld pont megerősíti az állapotát.
A fürt létrehozása után telepítse a
synapsemlkönyvtárat:Válassza a Könyvtárak lehetőséget a fürt lapjának tetején található lapok közül.
Válassza az Új telepítése lehetőséget.
Válassza a Maven lehetőséget.
A Koordináták területen keresse meg a következőt
com.microsoft.azure:synapseml_2.12:1.0.9: .Válassza a Telepítéslehetőséget.
A bal oldali menüben válassza aJegyzetfüzet>.
Adjon nevet a jegyzetfüzetnek, válassza a Pythont alapértelmezett nyelvként, és válassza ki a könyvtárat tartalmazó fürtöt
synapseml.Hozzon létre hét egymást követő cellát. A következő szakaszokban kódot illeszt be ezekbe a cellákba.
Függőségek beállítása
Illessze be a következő kódot a jegyzetfüzet első cellájába.
Cserélje le a helyőrzőket végpontokra és hozzáférési kulcsokra az egyes erőforrásokhoz. Adja meg a létrehozandó új keresési index nevét. Nincs szükség további módosításokra, ezért futtassa a kódot, amikor készen áll.
Ez a kód több csomagot importál, és beállítja az oktatóanyagban használt Azure-erőforrásokhoz való hozzáférést.
import os
from pyspark.sql.functions import udf, trim, split, explode, col, monotonically_increasing_id, lit
from pyspark.sql.types import StringType
from synapse.ml.core.spark import FluentAPI
cognitive_services_key = "placeholder-azure-ai-foundry-key"
cognitive_services_region = "placeholder-azure-ai-foundry-region"
search_service = "placeholder-search-service-name"
search_key = "placeholder-search-service-admin-api-key"
search_index = "placeholder-for-new-search-index-name"
Adatok betöltése a Sparkba
Illessze be a következő kódot a második cellába. Nincs szükség módosításokra, ezért futtassa a kódot, amikor készen áll.
Ez a kód betölt néhány külső fájlt egy Azure Storage-fiókból. A fájlok különböző számlák, amelyek adattáblába vannak olvasva.
def blob_to_url(blob):
[prefix, postfix] = blob.split("@")
container = prefix.split("/")[-1]
split_postfix = postfix.split("/")
account = split_postfix[0]
filepath = "/".join(split_postfix[1:])
return "https://{}/{}/{}".format(account, container, filepath)
df2 = (spark.read.format("binaryFile")
.load("wasbs://[email protected]/form_subset/*")
.select("path")
.limit(10)
.select(udf(blob_to_url, StringType())("path").alias("url"))
.cache())
display(df2)
Dokumentumintelligencia funkció hozzáadása
Illessze be a következő kódot a harmadik cellába. Nincs szükség módosításokra, ezért futtassa a kódot, amikor készen áll.
Ez a kód betölti az AnalyzeInvoices transzformátort , és átadja a számlákat tartalmazó adatkeretre mutató hivatkozást. Meghívja az Azure Document Intelligence előre összeállított számlamodellét az Foundry Toolsban, hogy adatokat nyerjen ki a számlákból.
from synapse.ml.services import AnalyzeInvoices
analyzed_df = (AnalyzeInvoices()
.setSubscriptionKey(cognitive_services_key)
.setLocation(cognitive_services_region)
.setImageUrlCol("url")
.setOutputCol("invoices")
.setErrorCol("errors")
.setConcurrency(5)
.transform(df2)
.cache())
display(analyzed_df)
A kimenetnek az alábbi képernyőképhez hasonlóan kell kinéznie. Figyelje meg, hogy az űrlapelemzés egy sűrűn strukturált oszlopba van csomagolva, amellyel nehéz dolgozni. A következő átalakítás úgy oldja meg ezt a problémát, hogy az oszlopot sorokra és oszlopokra bontja.
Dokumentum-intelligencia-kimenet átstrukturálása
Illessze be a következő kódot a negyedik cellába, és futtassa. Nincs szükség módosításra.
Ez a kód betölti a FormOntologyLearner nevű transzformátort, amely elemzi az Azure Document Intelligence-transzformátorok kimenetét, és táblázatos adatstruktúrára következtet. Az AnalyzeInvoices kimenete dinamikus, és a tartalomban észlelt funkcióktól függően változik. Ezenkívül a transzformátor egyetlen oszlopba összesíti a kimenetet. Mivel a kimenet dinamikus és konszolidált, nehéz olyan alárendelt átalakításokban használni, amelyek több struktúrát igényelnek.
A FormOntologyLearner kibővíti az AnalyzeInvoices transzformátor segédprogramját, és olyan mintákat keres, amelyek táblázatos adatstruktúra létrehozásához használhatók. Ha a kimenetet több oszlopba és sorba rendezi, a tartalom más átalakítókban, például az AzureSearchWriterben is hasznosíthatóvá válik.
from synapse.ml.cognitive import FormOntologyLearner
itemized_df = (FormOntologyLearner()
.setInputCol("invoices")
.setOutputCol("extracted")
.fit(analyzed_df)
.transform(analyzed_df)
.select("url", "extracted.*").select("*", explode(col("Items")).alias("Item"))
.drop("Items").select("Item.*", "*").drop("Item"))
display(itemized_df)
Figyelje meg, hogy ez az átalakítás hogyan alakítja át a beágyazott mezőket egy táblába, amely lehetővé teszi a következő két átalakítást. Ez a képernyőkép a rövidség kedvéért van levágva. Ha a saját jegyzetfüzetében dolgozik, 19 oszlopot és 26 sort lát.
Fordítások hozzáadása
Illessze be az alábbi kódot az ötödik cellába. Nincs szükség módosításokra, ezért futtassa a kódot, amikor készen áll.
Ez a kód betölti a Translate nevű transzformátort, amely meghívja az Azure Translatort az Foundry Toolsban. Az eredeti szöveg, amely angolul a "Leírás" oszlopban található, gépi fordításban különböző nyelvekre van lefordítva. Az összes kimenet a "output.translations" tömbbe van összesítve.
from synapse.ml.cognitive import Translate
translated_df = (Translate()
.setSubscriptionKey(cognitive_services_key)
.setLocation(cognitive_services_region)
.setTextCol("Description")
.setErrorCol("TranslationError")
.setOutputCol("output")
.setToLanguage(["zh-Hans", "fr", "ru", "cy"])
.setConcurrency(5)
.transform(itemized_df)
.withColumn("Translations", col("output.translations")[0])
.drop("output", "TranslationError")
.cache())
display(translated_df)
Tipp
A lefordított karakterláncok kereséséhez görgesse le a sorok végéhez.
Keresési index hozzáadása az AzureSearchWriter használatával
Illessze be a következő kódot a hatodik cellába, és futtassa. Nincs szükség módosításra.
Ez a kód betölti az AzureSearchWritert. Táblázatos adatkészletet használ fel, és egy keresési index sémájára következtet, amely minden oszlophoz egy mezőt határoz meg. Mivel a fordítási struktúra egy tömb, az index összetett gyűjteményként van tagolt, almezőkkel az egyes nyelvi fordításokhoz. A létrehozott index rendelkezik egy dokumentumkulccsal, és az Index REST API-val létrehozott mezők alapértelmezett értékeit használja.
from synapse.ml.cognitive import *
(translated_df.withColumn("DocID", monotonically_increasing_id().cast("string"))
.withColumn("SearchAction", lit("upload"))
.writeToAzureSearch(
subscriptionKey=search_key,
actionCol="SearchAction",
serviceName=search_service,
indexName=search_index,
keyCol="DocID",
))
Az AzureSearchWriter által létrehozott indexdefiníció megismeréséhez tekintse meg a keresési szolgáltatás lapjait az Azure Portalon.
Megjegyzés
Ha nem tudja használni az alapértelmezett keresési indexet, megadhat egy külső egyéni definíciót a JSON-ban, és az URI-t sztringként adja át az "indexJson" tulajdonságban. Először hozza létre az alapértelmezett indexet, hogy tudja, mely mezőket kell megadnia, majd kövesse a testreszabott tulajdonságokat, ha konkrét elemzőkre van szüksége, például.
Az index lekérdezése
Illessze be a következő kódot a hetedik cellába, és futtassa. Nincs szükség módosításra, kivéve, ha módosítani szeretné a szintaxist, vagy további példákat szeretne kipróbálni a tartalom további megismeréséhez:
Nincs olyan transzformátor vagy modul, amely lekérdezéseket ad ki. Ez a cella a Search Documents REST API egyszerű hívása.
Ez a példa az "ajtó" ("search": "door") szót keresi. Az egyező dokumentumok számának "számát" is visszaadja, és csak a "Leírás" és a "Fordítások" mezők tartalmát választja ki az eredményekhez. Ha meg szeretné jeleníteni a mezők teljes listáját, távolítsa el a "select" paramétert.
import requests
url = "https://{}.search.windows.net/indexes/{}/docs/search?api-version=2026-04-01".format(search_service, search_index)
requests.post(url, json={"search": "door", "count": "true", "select": "Description, Translations"}, headers={"api-key": search_key}).json()
Az alábbi képernyőképen a mintaszkript cellakimenete látható.
Erőforrások tisztítása
Ha a saját előfizetésedben dolgozol, a projekt végén célszerű eltávolítani azokat az erőforrásokat, amelyekre már nincs szükséged. A továbbra is futó erőforrások pénzbe kerülhetnek. 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
Ebben az oktatóanyagban megismerkedett az AzureSearchWriter transzformátorsal a SynapseML-ben, amely új módszer a keresési indexek Azure AI Keresésben való létrehozására és betöltésére. A transzformátor bemenetként strukturált JSON-t használ. A FormOntologyLearner biztosítja a SynapseML-ben az Azure Document Intelligence transzformátorok által előállított kimenethez szükséges struktúrát.
Következő lépésként tekintse át a SynapseML egyéb oktatóanyagait, amelyek átalakított tartalmakat hoznak létre, amelyeket érdemes lehet megvizsgálni az Azure AI Keresés használatával: