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 a rövid útmutatóban szemantikai rangsorolást adhat hozzá egy meglévő Azure AI Keresés indexhez, és szemantikai lekérdezéseket futtathat az eredmény relevanciájának javítása érdekében. A nyelvi fülekkel kiválaszthatja az előnyben részesített SDK- vagy REST-munkafolyamatot.
Ebben a gyorsútmutatóban az Azure AI Keresés .NET ügyfélkódtára-t használja, hogy hozzáadjon szemantikus rangsorolást egy meglévő keresési indexhez, és lekérdezze az indexet.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi..NET 9 vagy újabb.
Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-dotnet-samplesNavigáljon a quickstart mappára.
cd azure-search-dotnet-samples/quickstart-semantic-rankingEbben
BuildIndex/Program.csa fájlban cserélje le a helyőrző értékétendpointa Get végpontban beszerzett URL-címre.Ismételje meg az előző lépést a következőhöz
QueryIndex/Program.cs: .Ha kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az login
A kód futtatása
Futtassa az első projektet az index szemantikai beállításokkal történő frissítéséhez.
dotnet run --project BuildIndexFuttassa a második projektet az index lekérdezéséhez. Nyomja le az Enter billentyűt a lekérdezések között az egyszerű lekérdezéstől a szemantikai lekérdezésig a feliratok és válaszok megjelenítéséhez.
dotnet run --project QueryIndex
Kimenet
Az első projekt szemantikai konfigurációval frissíti a szállodai mintaindexet. A kimenet tartalmazza a szemantikai konfiguráció megerősítését.
Here's a list of all indexes on the search service. You should see hotels-sample:
hotels-sample
Added new semantic configuration 'semantic-config' to the index definition.
Index updated successfully.
Here is the revised index definition:
{
"Name": "hotels-sample",
... // Trimmed for brevity
"SemanticSearch": {
"DefaultConfigurationName": "semantic-config",
"Configurations": [
{
"Name": "hotels-sample-semantic-configuration",
... // Trimmed for brevity
},
{
"Name": "semantic-config",
"PrioritizedFields": {
"TitleField": {
"FieldName": "HotelName"
},
"ContentFields": [
{
"FieldName": "Description"
}
],
"KeywordsFields": [
{
"FieldName": "Tags"
}
]
},
"RankingOrder": {}
}
]
}
}
A második projekt négy lekérdezést futtat. A kimenet tartalmazza a találatokat relevanciapontokkal, feliratokkal és válaszokkal.
Query 1: Simple query using the search string 'walking distance to live music'.
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
@search.score: 5.004435
----------------------------------------
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
@search.score: 4.555706
----------------------------------------
... // Trimmed for brevity
Press Enter to continue to the next query...
Query 2: Semantic query (no captions, no answers) for 'walking distance to live music'.
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
@search.score: 4.555706
@search.rerankerScore: 2.613231658935547
----------------------------------------
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
@search.score: 5.004435
@search.rerankerScore: 2.271434783935547
----------------------------------------
... // Trimmed for brevity
Press Enter to continue to the next query...
Query 3: Semantic query with captions.
Caption: Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance.
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
@search.score: 4.555706
@search.rerankerScore: 2.613231658935547
----------------------------------------
... // Trimmed for brevity
Press Enter to continue to the next query...
Query 4: Semantic query with a verbatim answer from the Description field for 'what's a good hotel for people who like to read'.
Extractive Answers:
Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
----------------------------------------
... // Trimmed for brevity
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
Mindkét projekt ugyanazzal a konfigurációs mintával rendelkezik. A Program.cs fájlok határozzák meg a keresési végpontot, és kulcs nélküli hitelesítésre használják DefaultAzureCredential .
var endpoint = new Uri("PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE");
var credential = new DefaultAzureCredential();
var indexClient = new SearchIndexClient(endpoint, credential);
Főbb tanulságok
-
DefaultAzureCredentialkulcs nélküli hitelesítést biztosít Microsoft Entra ID használatával. Több hitelesítő adattípust is összekapcsol, beleértve aaz login> Azure CLI hitelesítő adatait is. -
SearchIndexClientkezeli az indexszintű műveleteket, például az indexséma frissítését. -
SearchClientdokumentumszintű műveleteket kezel, például az index lekérdezését.
Az index frissítése szemantikai konfigurációval
A következő kód szemantikai BuildIndex/Program.cs konfigurációt ad hozzá a meglévő indexhez. Ez a művelet nem töröl keresési dokumentumokat, és az index a konfiguráció hozzáadása után is működőképes marad.
static void AddSemanticConfiguration(
SearchIndex index,
string semanticConfigName)
{
if (index.SemanticSearch == null)
{
index.SemanticSearch = new SemanticSearch();
}
var configs = index.SemanticSearch.Configurations;
if (!configs.Any(c => c.Name == semanticConfigName))
{
var prioritizedFields =
new SemanticPrioritizedFields
{
TitleField = new SemanticField("HotelName"),
ContentFields =
{
new SemanticField("Description")
},
KeywordsFields =
{
new SemanticField("Tags")
}
};
configs.Add(
new SemanticConfiguration(
semanticConfigName,
prioritizedFields
)
);
}
index.SemanticSearch.DefaultConfigurationName =
semanticConfigName;
}
Főbb tanulságok
- A szemantikai konfiguráció a szemantikai rangsoroláshoz használt mezőket határozza meg.
- A szemantikai konfigurációk újraépítés nélkül hozzáadhatók a meglévő indexekhez.
-
TitleFieldbeállítja a dokumentum címét jelképező mezőt. -
ContentFieldsbeállítja a fő tartalmat tartalmazó mezőket. -
KeywordsFieldskulcsszavakat vagy címkéket tartalmazó mezőket állít be.
Az index lekérdezése
A QueryIndex projekt négy lekérdezést futtat egymás után, az egyszerű kulcsszókereséstől a szemantikai rangsorolásig feliratokkal és válaszokkal.
Egyszerű lekérdezés
Az első lekérdezés egy egyszerű kulcsszókeresés, amely nem használ szemantikai rangsorolást. Ez a lekérdezés viszonyítási alapként szolgál az eredmények szemantikai újrarendezéssel és anélkül történő összehasonlításához.
await RunQuery(client, searchText, new SearchOptions
{
Size = 5,
QueryType = SearchQueryType.Simple,
IncludeTotalCount = true,
Select = { "HotelId", "HotelName", "Description" }
});
Főbb tanulságok
-
SearchQueryType.Simpleaz alapértelmezett BM25 rangsorolási algoritmust használja. - Az eredmények csak kulcsszó-relevancia (
@search.score) alapján vannak rangsorolva.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
A következő lekérdezés felirat és válasz nélkül ad hozzá szemantikai rangsorolást. Az alábbi kód a szemantikai rangsorolás minimális követelményét mutatja be.
var semanticOptions = new SearchOptions
{
Size = 5,
QueryType = SearchQueryType.Semantic,
SemanticSearch = new SemanticSearchOptions
{
SemanticConfigurationName = "semantic-config"
},
IncludeTotalCount = true,
Select =
{
"HotelId", "HotelName", "Description"
}
};
await RunQuery(client, searchText, semanticOptions);
Főbb tanulságok
-
SearchQueryType.Semanticlehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
SemanticConfigurationNamea használni kívánt szemantikai konfigurációt határozza meg. -
@search.rerankerScoreszemantikai relevanciát jelez (a magasabb jobb). - A kifejezés lekérdezésének kezdeti eredményei szemantikai rangsorolási modellek használatával lesznek újból megszerkesztve. Ebben az adatkészletben és lekérdezésben a szemantikai rangsorolás hatása hangsúlyosabb az alacsonyabb rangsorolású eredményekben.
Szemantikai lekérdezés feliratokkal
Az alábbi kód feliratokat ad hozzá az egyes eredmények legfontosabb szakaszainak kinyeréséhez, a fontos kifejezésekre és kifejezésekre pedig találatkiemelést alkalmazva.
var captionsOptions = new SearchOptions
{
Size = 5,
QueryType = SearchQueryType.Semantic,
SemanticSearch = new SemanticSearchOptions
{
SemanticConfigurationName = "semantic-config",
QueryCaption =
new QueryCaption(QueryCaptionType.Extractive)
{
HighlightEnabled = true
}
},
IncludeTotalCount = true,
Select =
{
"HotelId", "HotelName", "Description"
}
};
captionsOptions.HighlightFields.Add("Description");
await RunQuery(
client, searchText, captionsOptions, showCaptions: true
);
Főbb tanulságok
-
QueryCaptionlehetővé teszi a feliratok kinyerését a tartalommezőkből. - A feliratok kiemelik a legrelevánsabb szakaszokat, és címkékkel látják el
<em>a fontos kifejezéseket.
Szemantikai lekérdezés válaszokkal
A végső lekérdezés szemantikai válaszokat ad hozzá. Ez a lekérdezés egy másik keresési sztringet () használ,searchText2 mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazza meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvedhez, hagyd ki QueryAnswer a kódból. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
var answersOptions = new SearchOptions
{
Size = 5,
QueryType = SearchQueryType.Semantic,
SemanticSearch = new SemanticSearchOptions
{
SemanticConfigurationName = "semantic-config",
QueryAnswer =
new QueryAnswer(QueryAnswerType.Extractive)
},
IncludeTotalCount = true,
Select =
{
"HotelId", "HotelName", "Description"
}
};
await RunQuery(
client, searchText2, answersOptions, showAnswers: true
);
Főbb tanulságok
-
QueryAnswerlehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
Ebben a rövid útmutatóban a Java számára készült Azure AI Keresés klienskönyvtárát használja, hogy szemantikus rangsorolást adjon hozzá egy meglévő keresési indexhez, és lekérdezze az indexet.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi.Java 21 (LTS) és Maven.
Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-java-samplesNavigáljon a quickstart mappára.
cd azure-search-java-samples/quickstart-semantic-rankingEbben
src/main/resources/application.propertiesa fájlban cserélje le a helyőrző értékétazure.search.endpointa Get végpontban beszerzett URL-címre.Állítsa össze a projektet a függőségek, köztük az azure-search-documents feloldása érdekében.
mvn compileHa a build befejeződött, ellenőrizze, hogy nem jelennek-e meg hibák a kimenetben.
Ha kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az login
A kód futtatása
Kérje le a meglévő indexbeállításokat.
mvn compile exec:java "-Dexec.mainClass=com.azure.search.quickstart.GetIndexSettings"Frissítse az indexet szemantikai konfigurációval.
mvn compile exec:java "-Dexec.mainClass=com.azure.search.quickstart.UpdateIndexSettings"Szemantikai lekérdezés futtatása.
mvn compile exec:java "-Dexec.mainClass=com.azure.search.quickstart.SemanticQuery"Szemantikai lekérdezés futtatása feliratokkal.
mvn compile exec:java "-Dexec.mainClass=com.azure.search.quickstart.SemanticQueryWithCaptions"Szemantikai lekérdezés futtatása válaszokkal.
mvn compile exec:java "-Dexec.mainClass=com.azure.search.quickstart.SemanticAnswer"
Kimenet
A kimenet GetIndexSettings.java az index neve, mezői és szemantikai konfigurációi. Új konfiguráció hozzáadása előtt az index csak az alapértelmezett konfigurációval rendelkezik.
Index name: hotels-sample
Number of fields: 23
Field: HotelId, Type: Edm.String, Searchable: true
Field: HotelName, Type: Edm.String, Searchable: true
Field: Description, Type: Edm.String, Searchable: true
// Trimmed for brevity
Semantic search configurations: 1
Configuration name: hotels-sample-semantic-configuration
A kimenet felsorolja UpdateIndexSettings.java az index összes szemantikai konfigurációját, beleértve a hozzáadott kódot, majd egy sikeres üzenetet.
// Trimmed for brevity
Configuration name: semantic-config
Title field: HotelName
Keywords fields: Tags
Content fields: Description
----------------------------------------
Semantic configuration updated successfully.
A SemanticQuery.java kimenet minden egyező dokumentumot visszaad, amelyeket a szemantikai újrarangsorolási pontszám szerint rendez.
Search result #1:
Re-ranker Score: 2.61
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
Search result #2:
Re-ranker Score: 2.27
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
Search result #3:
Re-ranker Score: 1.99
HotelId: 4
HotelName: Sublime Palace Hotel
Description: Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
// Trimmed for brevity
A kimenet SemanticQueryWithCaptions.java egy feliratelemet ad hozzá, amely a keresési mezők mellett a találatok kiemelésével is rendelkezik. Az eredmény szempontjából a feliratok a legrelevánsabb szakaszok. Ha az index nagyobb szöveget tartalmaz, a feliratok segítenek kinyerni a legérdekesebb mondatokat.
Search result #1:
Re-ranker Score: 2.61
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
Caption with highlights: Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance.
------------------------------------------------------------
Search result #2:
Re-ranker Score: 2.27
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
Caption text: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live.
------------------------------------------------------------
// Trimmed for brevity
A kimenet SemanticAnswer.java tartalmaz egy szemantikai választ, amely az egyik találatból származik, amely a legjobban megfelel a kérdésnek, majd a keresési eredmények feliratokkal.
Semantic answer result #1:
Semantic Answer: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
Semantic Answer Score: 0.98
Search Results:
Search result #1:
Re-ranker Score: 2.12
Hotel: Stay-Kay City Hotel
Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
Caption: This classic hotel is<em> fully-refurbished </em>and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
Search result #2:
Re-ranker Score: 2.07
Hotel: Double Sanctuary Resort
Description: 5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
Caption: <em>5 star Luxury Hotel </em>-<em> Biggest </em>Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
// Trimmed for brevity
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
Az SearchConfig.java osztály betölti a tulajdonságokat a application.properties forrásból, és létrehoz egy DefaultAzureCredential-t kulcs nélküli hitelesítéshez.
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class SearchConfig {
private static final Properties properties =
new Properties();
static {
try (InputStream input = SearchConfig.class
.getClassLoader()
.getResourceAsStream(
"application.properties")) {
properties.load(input);
} catch (IOException e) {
throw new RuntimeException(
"Failed to load application.properties",
e);
}
}
public static final String SEARCH_ENDPOINT =
properties.getProperty(
"azure.search.endpoint");
public static final String INDEX_NAME =
properties.getProperty(
"azure.search.index.name");
public static final String SEMANTIC_CONFIG_NAME =
properties.getProperty(
"semantic.configuration.name");
public static final DefaultAzureCredential
CREDENTIAL = new DefaultAzureCredentialBuilder()
.build();
}
Főbb tanulságok
-
DefaultAzureCredentialkulcs nélküli hitelesítést biztosít Microsoft Entra ID használatával. Több hitelesítő adattípust is összekapcsol, beleértve aaz login> Azure CLI hitelesítő adatait is. - A tulajdonságok az
application.propertiesosztályúton lévő fájlból töltődnek be. - A statikus mezők (
SEARCH_ENDPOINT,INDEX_NAME, ,SEMANTIC_CONFIG_NAMECREDENTIAL) a projekt összes osztályában meg vannak osztva.
Az index frissítése szemantikai konfigurációval
Az UpdateIndexSettings.java osztály szemantikai konfigurációt ad hozzá a meglévő hotels-sample indexhez. Ez a művelet nem töröl keresési dokumentumokat, és az index a konfiguráció hozzáadása után is működőképes marad.
import com.azure.search.documents.indexes
.SearchIndexClientBuilder;
import com.azure.search.documents.indexes.models
.SearchIndex;
import com.azure.search.documents.indexes.models
.SemanticConfiguration;
import com.azure.search.documents.indexes.models
.SemanticField;
import com.azure.search.documents.indexes.models
.SemanticPrioritizedFields;
import com.azure.search.documents.indexes.models
.SemanticSearch;
import java.util.ArrayList;
import java.util.List;
var indexClient = new SearchIndexClientBuilder()
.endpoint(SearchConfig.SEARCH_ENDPOINT)
.credential(SearchConfig.CREDENTIAL)
.buildClient();
SearchIndex existingIndex =
indexClient.getIndex(SearchConfig.INDEX_NAME);
var prioritizedFields =
new SemanticPrioritizedFields()
.setTitleField(
new SemanticField("HotelName"))
.setKeywordsFields(
List.of(new SemanticField("Tags")))
.setContentFields(
List.of(
new SemanticField("Description")));
var newSemanticConfiguration =
new SemanticConfiguration(
SearchConfig.SEMANTIC_CONFIG_NAME,
prioritizedFields);
SemanticSearch semanticSearch =
existingIndex.getSemanticSearch();
if (semanticSearch == null) {
semanticSearch = new SemanticSearch();
existingIndex.setSemanticSearch(semanticSearch);
}
List<SemanticConfiguration> configurations =
semanticSearch.getConfigurations();
if (configurations == null) {
configurations = new ArrayList<>();
semanticSearch.setConfigurations(configurations);
}
configurations.add(newSemanticConfiguration);
indexClient.createOrUpdateIndex(existingIndex);
Főbb tanulságok
-
SemanticPrioritizedFieldsMeghatározza, hogy a szemantikai rangsoroló mely mezőket értékeli ki.setTitleFieldbeállítja a dokumentum címét,setContentFieldsbeállítja a fő tartalmat, éssetKeywordsFieldsbeállítja a kulcsszó- vagy címkemezőket. -
SemanticConfigurationa rangsorban szereplő mezőkkel párosít egy nevet, amely meghatározza, hogy melyik szemantikai konfigurációt használja a lekérdezési időpontban. -
createOrUpdateIndexLeküldi a frissített sémát a keresési szolgáltatásba az index újraépítése vagy a dokumentumok törlése nélkül.
Az index lekérdezése
Az alábbi három osztály egymás után kérdezi le az indexet, és az alapszintű szemantikai kereséstől a szemantikai rangsorolásig halad, feliratokkal és válaszokkal.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
Az első lekérdezés felirat és válasz nélkül ad hozzá szemantikai rangsorolást. Az SemanticQuery.java osztály a szemantikai rangsor meghívásának minimális követelményét mutatja.
import com.azure.search.documents
.SearchClientBuilder;
import com.azure.search.documents.SearchDocument;
import com.azure.search.documents.models.QueryType;
import com.azure.search.documents.models.SearchOptions;
import com.azure.search.documents.models.SearchResult;
import com.azure.search.documents.models
.SemanticSearchOptions;
import com.azure.search.documents.util
.SearchPagedIterable;
var searchClient = new SearchClientBuilder()
.endpoint(SearchConfig.SEARCH_ENDPOINT)
.indexName(SearchConfig.INDEX_NAME)
.credential(SearchConfig.CREDENTIAL)
.buildClient();
var searchOptions = new SearchOptions()
.setQueryType(QueryType.SEMANTIC)
.setSemanticSearchOptions(
new SemanticSearchOptions()
.setSemanticConfigurationName(
SearchConfig.SEMANTIC_CONFIG_NAME))
.setSelect("HotelId", "HotelName", "Description");
SearchPagedIterable results = searchClient.search(
"walking distance to live music",
searchOptions, null);
for (SearchResult result : results) {
var document = result.getDocument(
SearchDocument.class);
double rerankerScore = result
.getSemanticSearch().getRerankerScore();
System.out.printf("Re-ranker Score: %.2f%n",
rerankerScore);
System.out.printf("HotelName: %s%n",
document.get("HotelName"));
System.out.printf("Description: %s%n%n",
document.get("Description"));
}
Főbb tanulságok
-
QueryType.SEMANTIClehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
setSemanticConfigurationNamea használni kívánt szemantikai konfigurációt határozza meg. -
SearchPagedIterableiterálható objektumot biztosít a visszarendezett eredményekre. MindegyikSearchResulttartalmaz egygetSemanticSearch()kiegészítőt a reranker pontszámhoz.
Szemantikai lekérdezés feliratokkal
Az SemanticQueryWithCaptions.java osztály feliratokat ad hozzá az egyes eredmények legrelevánsabb részeihez, és a fontos kifejezésekre pedig találatkiemelést alkalmaz.
import com.azure.search.documents.models
.QueryCaption;
import com.azure.search.documents.models
.QueryCaptionResult;
import com.azure.search.documents.models
.QueryCaptionType;
var searchOptions = new SearchOptions()
.setQueryType(QueryType.SEMANTIC)
.setSemanticSearchOptions(
new SemanticSearchOptions()
.setSemanticConfigurationName(
SearchConfig.SEMANTIC_CONFIG_NAME)
.setQueryCaption(
new QueryCaption(
QueryCaptionType.EXTRACTIVE)
.setHighlightEnabled(true)))
.setSelect(
"HotelId", "HotelName", "Description");
SearchPagedIterable results = searchClient.search(
"walking distance to live music",
searchOptions, null);
for (SearchResult result : results) {
List<QueryCaptionResult> captions =
result.getSemanticSearch()
.getQueryCaptions();
if (captions != null && !captions.isEmpty()) {
QueryCaptionResult caption = captions.get(0);
if (caption.getHighlights() != null) {
System.out.printf(
"Caption: %s%n",
caption.getHighlights());
}
}
}
Főbb tanulságok
-
QueryCaption(QueryCaptionType.EXTRACTIVE)lehetővé teszi a feliratok kinyerését a tartalommezőkből. -
setHighlightEnabled(true)címkéket<em>ad hozzá a fontos kifejezésekhez a feliratokban. - Mindegyik
SearchResulttartalmazzagetQueryCaptions()a szemantikai keresési kiegészítőt.
Szemantikai lekérdezés válaszokkal
Az SemanticAnswer.java osztály szemantikai válaszokat ad hozzá. Ez az osztály egy kérdést használ keresési szövegként, mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazták meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvedhez, hagyd ki setQueryAnswer a kódból. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
import com.azure.search.documents.models
.QueryAnswer;
import com.azure.search.documents.models
.QueryAnswerResult;
import com.azure.search.documents.models
.QueryAnswerType;
var searchOptions = new SearchOptions()
.setQueryType(QueryType.SEMANTIC)
.setSemanticSearchOptions(
new SemanticSearchOptions()
.setSemanticConfigurationName(
SearchConfig.SEMANTIC_CONFIG_NAME)
.setQueryCaption(
new QueryCaption(
QueryCaptionType.EXTRACTIVE))
.setQueryAnswer(
new QueryAnswer(
QueryAnswerType.EXTRACTIVE)))
.setSelect(
"HotelName", "Description", "Category");
SearchPagedIterable results = searchClient.search(
"What's a good hotel for people who like to read",
searchOptions, null);
List<QueryAnswerResult> semanticAnswers =
results.getSemanticResults().getQueryAnswers();
for (QueryAnswerResult answer :
semanticAnswers != null ? semanticAnswers
: List.<QueryAnswerResult>of()) {
if (answer.getHighlights() != null) {
System.out.printf(
"Semantic Answer: %s%n",
answer.getHighlights());
} else {
System.out.printf(
"Semantic Answer: %s%n",
answer.getText());
}
System.out.printf(
"Semantic Answer Score: %.2f%n",
answer.getScore());
}
Főbb tanulságok
-
QueryAnswer(QueryAnswerType.EXTRACTIVE)lehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
-
results.getSemanticResults().getQueryAnswers()a válaszobjektumokat a keresési eredményektől elkülönítve kéri le.
Ebben a rövid útmutatóban a JavaScripthez készült Azure AI Keresés ügyfélkódtárat használjasemantikus rangsorolás hozzáadásához egy meglévő keresési indexhez, és lekérdezi az indexet.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi.Node.js 20 LTS vagy újabb.
Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-javascript-samplesNavigáljon a quickstart mappára.
cd azure-search-javascript-samples/quickstart-semantic-ranking-jsEbben
sample.enva fájlban cserélje le a helyőrző értékétAZURE_SEARCH_ENDPOINTa Get végpontban beszerzett URL-címre.Átnevezés
sample.env:.env.mv sample.env .envTelepítse a függőségeket.
npm installAmikor a telepítés befejeződött, a projektkönyvtárban meg kell jelennie egy
node_modulesmappának.Ha kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az login
A kód futtatása
Kérje le a meglévő indexbeállításokat.
node -r dotenv/config src/getIndexSettings.jsFrissítse az indexet szemantikai konfigurációval.
node -r dotenv/config src/updateIndexSettings.jsSzemantikai lekérdezés futtatása.
node -r dotenv/config src/semanticQuery.jsSzemantikai lekérdezés futtatása feliratokkal.
node -r dotenv/config src/semanticQueryReturnCaptions.jsSzemantikai lekérdezés futtatása válaszokkal.
node -r dotenv/config src/semanticAnswer.js
Kimenet
A getIndexSettings.js szkript visszaadja az index nevét, a mezőit és a meglévő szemantikai konfigurációkat.
Getting semantic ranking index settings...
Index name: hotels-sample
Number of fields: 23
Field: HotelId, Type: Edm.String, Searchable: true
Field: HotelName, Type: Edm.String, Searchable: true
Field: Description, Type: Edm.String, Searchable: true
Field: Description_fr, Type: Edm.String, Searchable: true
Field: Category, Type: Edm.String, Searchable: true
Field: Tags, Type: Collection(Edm.String), Searchable: true
// Trimmed for brevity
Semantic ranking configurations: 1
Configuration name: hotels-sample-semantic-configuration
Title field: undefined
A updateIndexSettings.js szkript visszaadja az index összes szemantikai konfigurációját, beleértve a hozzáadott kódot, majd egy sikeres üzenetet.
Semantic configurations:
----------------------------------------
Configuration name: hotels-sample-semantic-configuration
Title field: undefined
Keywords fields:
Content fields: AzureSearch_DocumentKey
----------------------------------------
Configuration name: semantic-config
Title field: HotelName
Keywords fields: Tags
Content fields: Description
----------------------------------------
Semantic configuration updated successfully.
A semanticQuery.js szkript visszaadja az összes egyező dokumentumot, amelyeket a szemantikai újraértékelő pontszám szerint rendez.
Search result #1:
Re-ranker Score: 2.613231658935547
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
Search result #2:
Re-ranker Score: 2.271434783935547
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
Search result #3:
Re-ranker Score: 1.9861756563186646
HotelId: 4
HotelName: Sublime Palace Hotel
Description: Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
// Trimmed for brevity
A semanticQueryReturnCaptions.js szkript egy feliratelemet ad vissza, a keresési mezők mellett a találatok kiemelésével. Az eredmény szempontjából a feliratok a legrelevánsabb szakaszok. Ha az index nagyobb szöveget tartalmaz, a feliratok segítenek kinyerni a legérdekesebb mondatokat.
Search result #1:
Re-ranker Score: 2.613231658935547
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
Caption with highlights: Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance.
------------------------------------------------------------
Search result #2:
Re-ranker Score: 2.271434783935547
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
Caption text: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live.
------------------------------------------------------------
// Trimmed for brevity
A semanticAnswer.js szkript egy szemantikai választ ad vissza az egyik olyan eredményből, amely a legjobban megfelel a kérdésnek, ezt követik a keresési eredmények leírásokkal.
Answers:
Semantic answer result #1:
Semantic Answer: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
Semantic Answer Score: 0.9829999804496765
Search Results:
Search result #1:
2.124817371368408
Stay-Kay City Hotel
This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
Caption: This classic hotel is<em> fully-refurbished </em>and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
// Trimmed for brevity
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
A config.js fájl betölti a környezeti változókat, és létrehoz egy DefaultAzureCredential hitelesítéshez szükségest.
import { DefaultAzureCredential }
from "@azure/identity";
export const searchEndpoint =
process.env.AZURE_SEARCH_ENDPOINT
|| "PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE";
export const indexName =
process.env.AZURE_SEARCH_INDEX_NAME
|| "hotels-sample";
export const semanticConfigurationName =
process.env.SEMANTIC_CONFIGURATION_NAME
|| "semantic-config";
export const credential = new DefaultAzureCredential();
Főbb tanulságok
-
DefaultAzureCredentialkulcs nélküli hitelesítést biztosít Microsoft Entra ID használatával. Több hitelesítő adattípust is összekapcsol, beleértve aaz login> Azure CLI hitelesítő adatait is. - A környezeti változók a
.envfájlból töltődnek be adotenvhasználatával.
Az index frissítése szemantikai konfigurációval
A updateIndexSettings.js fájl szemantikai konfigurációt ad hozzá a meglévő hotels-sample indexhez. Ez a művelet nem töröl keresési dokumentumokat, és az index a konfiguráció hozzáadása után is működőképes marad.
import { SearchIndexClient }
from "@azure/search-documents";
import {
searchEndpoint, indexName,
credential, semanticConfigurationName
} from "./config.js";
const indexClient = new SearchIndexClient(
searchEndpoint, credential
);
const existingIndex =
await indexClient.getIndex(indexName);
const fields = {
titleField: { name: "HotelName" },
keywordsFields: [{ name: "Tags" }],
contentFields: [{ name: "Description" }]
};
const newSemanticConfiguration = {
name: semanticConfigurationName,
prioritizedFields: fields
};
if (existingIndex.semanticSearch
&& existingIndex.semanticSearch.configurations) {
existingIndex.semanticSearch.configurations
.push(newSemanticConfiguration);
} else {
existingIndex.semanticSearch = {
configurations: [newSemanticConfiguration]
};
}
await indexClient.createOrUpdateIndex(existingIndex);
Főbb tanulságok
- A szemantikai konfiguráció a szemantikai rangsoroláshoz használt mezőket határozza meg.
titleFieldmeghatározza a dokumentum címét,contentFieldsmeghatározza a fő tartalmat, éskeywordsFieldsmeghatározza a kulcsszó- vagy címkemezőket. - Létre kell hoznia egy konfigurációs objektumot, és le kell küldenie a meglévő indextömbbe
semanticSearch.configurations. -
createOrUpdateIndexLeküldi a frissített sémát a keresési szolgáltatásba az index újraépítése vagy a dokumentumok törlése nélkül.
Az index lekérdezése
A lekérdezési szkriptek három lekérdezést futtatnak egymás után, és az alapszintű szemantikai kereséstől a szemantikai rangsorolásig haladnak feliratokkal és válaszokkal.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
Az alábbi kód a szemantikai rangsorolás minimális követelményét mutatja be.
import { SearchClient }
from "@azure/search-documents";
import {
credential, searchEndpoint,
indexName, semanticConfigurationName
} from "./config.js";
const searchClient = new SearchClient(
searchEndpoint, indexName, credential
);
const results = await searchClient.search(
"walking distance to live music",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName
},
select: [
"HotelId", "HotelName", "Description"
]
}
);
Főbb tanulságok
-
queryType: "semantic"lehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
semanticSearchOptions.configurationNamea használni kívánt szemantikai konfigurációt határozza meg. - Az
rerankerScoreeredmények szemantikai relevanciát jeleznek (a magasabb jobb).
Szemantikai lekérdezés feliratokkal
Az alábbi kód feliratokat ad hozzá az egyes eredmények legfontosabb szakaszainak kinyeréséhez, a fontos kifejezésekre és kifejezésekre pedig találatkiemelést alkalmazva.
const results = await searchClient.search(
"walking distance to live music",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName,
captions: {
captionType: "extractive",
highlight: true
}
},
select: [
"HotelId", "HotelName", "Description"
]
}
);
for await (const result of results.results) {
const captions = result.captions;
if (captions && captions.length > 0) {
const caption = captions[0];
if (caption.highlights) {
console.log(
`Caption: ${caption.highlights}`
);
}
}
}
Főbb tanulságok
-
captions.captionType: "extractive"lehetővé teszi a feliratok kinyerését a tartalommezőkből. - A feliratok kiemelik a legrelevánsabb szakaszokat, és címkékkel látják el
<em>a fontos kifejezéseket.
Szemantikai lekérdezés válaszokkal
A végső lekérdezés szemantikai válaszokat ad hozzá. Ez a lekérdezés egy kérdést használ keresési szövegként, mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazták meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvedhez, hagyd ki answers a kódból. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
const results = await searchClient.search(
"What's a good hotel for people who "
+ "like to read",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName,
captions: {
captionType: "extractive"
},
answers: {
answerType: "extractive"
}
},
select: [
"HotelName", "Description", "Category"
]
}
);
const semanticAnswers = results.answers;
for (const answer of semanticAnswers || []) {
if (answer.highlights) {
console.log(
`Semantic Answer: ${answer.highlights}`
);
} else {
console.log(
`Semantic Answer: ${answer.text}`
);
}
console.log(
`Semantic Answer Score: ${answer.score}`
);
}
Főbb tanulságok
-
answers.answerType: "extractive"lehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
-
results.answersa válaszobjektumokat a keresési eredményektől elkülönítve kéri le.
A(z) ebben a gyors útmutatóban az Azure AI Keresés Python-ügyfélkönyvtár segítségével szemantikus rangsorolást adhat hozzá egy meglévő keresési indexhez, és lekérdezheti az indexet.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi.Python 3.10 vagy újabb.
Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-python-samplesNyissa meg a quickstart mappát a Visual Studio Code-ban.
cd azure-search-python-samples/Quickstart-Semantic-Ranking code .Ebben
sample.enva fájlban cserélje le a helyőrző értékétAZURE_SEARCH_ENDPOINTa Get végpontban beszerzett URL-címre.Átnevezés
sample.env:.env.mv sample.env .envNyisd meg
semantic-ranking-quickstart.ipynb.Nyomja le a Ctrl+Shift+P billentyűkombinációt, válassza a Jegyzetfüzet: Jegyzetfüzet kernel kiválasztása lehetőséget, és kövesse az utasításokat egy virtuális környezet létrehozásához. Válassza a requirements.txt a függőségekhez.
Ha elkészült, meg kell jelennie egy
.venvmappának a projektkönyvtárban.Ha kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az login
A kód futtatása
Futtassa a
Install packages and set variablescellákat a szükséges csomagok telepítéséhez és a környezeti változók betöltéséhez.Futtassa a fennmaradó cellákat egymás után a szemantikai konfiguráció hozzáadásához és az index lekérdezéséhez.
Kimenet
A Get the index definition cella kimenete az index neve, annak mezői, és a meglévő szemantikai konfigurációk.
Index name: hotels-sample
Number of fields: 23
Field: HotelId, Type: Edm.String, Searchable: True
Field: HotelName, Type: Edm.String, Searchable: True
Field: Description, Type: Edm.String, Searchable: True
Field: Description_fr, Type: Edm.String, Searchable: True
Field: Category, Type: Edm.String, Searchable: True
Field: Tags, Type: Collection(Edm.String), Searchable: True
// Trimmed for brevity
Semantic config: hotels-sample-semantic-configuration
Title field: HotelName
A cella kimenete felsorolja az Add a semantic configuration to the index index összes szemantikai konfigurációját, beleértve a hozzáadott kódot, majd egy sikeres üzenetet.
Semantic configurations:
----------------------------------------
Configuration: hotels-sample-semantic-configuration
Title field: HotelName
Keywords fields: Category
Content fields: Description
Configuration: semantic-config
Title field: HotelName
Keywords fields: Tags
Content fields: Description
✅ Semantic configuration successfully added!
A Run a term query kimenete az összes egyező dokumentumot visszaadja, amelyeket a BM25 pontszám alapján rendeztek. Ez az alapkonfigurációs lekérdezés nem használ szemantikai rangsorolást.
5.360838
4
Sublime Palace Hotel
Description: Sublime Cliff Hotel is located in the heart of the
historic center of Sublime in an extremely vibrant and lively area
within short walking distance to the sites and landmarks of the city
and is surrounded by the extraordinary beauty of churches, buildings,
shops and monuments. Sublime Cliff is part of a lovingly restored
19th century resort, updated for every modern convenience.
4.691083
2
Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza,
which has been expanded and renovated to the highest architectural
standards to create a modern, functional and first-class hotel in
which art and unique historical elements coexist with the most
modern comforts. The hotel also regularly hosts events like wine
tastings, beer dinners, and live music.
// Trimmed for brevity
A cella kimenete a Run a semantic query szemantikai rangsoroló pontszáma szerint rendezett összes egyező dokumentumot visszaadja.
2.613231658935547
24
Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown,
within walking distance to theaters, art galleries, restaurants and
shops. Visit Seattle Art Museum by day, and then head over to
Benaroya Hall to catch the evening's concert performance.
2.271434783935547
2
Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza,
which has been expanded and renovated to the highest architectural
standards to create a modern, functional and first-class hotel in
which art and unique historical elements coexist with the most
modern comforts. The hotel also regularly hosts events like wine
tastings, beer dinners, and live music.
// Trimmed for brevity
A Return captions cella kimenete egy feliratkomponenst ad hozzá, amely kiemeli a találatokat, és a keresési mezők mellett helyezkedik el. Az eredmény szempontjából a feliratok a legrelevánsabb szakaszok. Ha az index nagyobb szöveget tartalmaz, a feliratok segítenek kinyerni a legérdekesebb mondatokat.
2.613231658935547
24
Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown,
within walking distance to theaters, art galleries, restaurants and
shops. Visit Seattle Art Museum by day, and then head over to
Benaroya Hall to catch the evening's concert performance.
Caption: Chic hotel near the city. High-rise hotel in downtown,
within walking distance to<em> theaters, </em>art galleries,
restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and
then head over to<em> Benaroya Hall </em>to catch the evening's
concert performance.
// Trimmed for brevity
A Return semantic answers cella kimenete tartalmaz egy szöveges választ, amely a kérdésnek legmegfelelőbb találatok egyikéből származik, majd a keresési találatok feliratokkal következnek.
Semantic Answer: Nature is Home on the beach. Explore the shore by
day, and then come home to our shared living space to relax around a
stone fireplace, sip something warm, and explore the<em> library
</em>by night. Save up to 30 percent. Valid Now through the end of
the year. Restrictions and blackouts may apply.
Semantic Answer Score: 0.9829999804496765
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
A Install packages and set variables cella betölti a környezeti változókat, és létrehoz egy DefaultAzureCredential hitelesítést.
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.identity import get_bearer_token_provider
import os
load_dotenv(override=True)
search_endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
credential = DefaultAzureCredential()
index_name = os.getenv(
"AZURE_SEARCH_INDEX", "hotels-sample"
)
Főbb tanulságok
-
DefaultAzureCredentialkulcs nélküli hitelesítést biztosít Microsoft Entra ID használatával. Több hitelesítő adattípust is összekapcsol, beleértve aaz login> Azure CLI hitelesítő adatait is. - A környezeti változók a
.envfájlból töltődnek be apython-dotenvhasználatával.
Az index frissítése szemantikai konfigurációval
A Add a semantic configuration to the index cella szemantikai konfigurációt ad hozzá a meglévő hotels-sample indexhez. Ez a művelet nem töröl keresési dokumentumokat, és az index a konfiguráció hozzáadása után is működőképes marad.
from azure.search.documents.indexes.models import (
SemanticConfiguration,
SemanticField,
SemanticPrioritizedFields,
SemanticSearch
)
new_semantic_config = SemanticConfiguration(
name="semantic-config",
prioritized_fields=SemanticPrioritizedFields(
title_field=SemanticField(field_name="HotelName"),
keywords_fields=[
SemanticField(field_name="Tags")
],
content_fields=[
SemanticField(field_name="Description")
]
)
)
if existing_index.semantic_search is None:
existing_index.semantic_search = SemanticSearch(
configurations=[new_semantic_config]
)
else:
existing_index.semantic_search.configurations.append(
new_semantic_config
)
result = index_client.create_or_update_index(existing_index)
Főbb tanulságok
- A szemantikai konfiguráció a szemantikai rangsoroláshoz használt mezőket határozza meg.
title_fieldbeállítja a dokumentum címét,content_fieldsbeállítja a fő tartalmat, éskeywords_fieldsbeállítja a kulcsszó- vagy címkemezőket. - Hozza létre a konfigurációt
SemanticConfigurationés annak társított modelljétSemanticPrioritizedFields, majd fűzze hozzá a meglévő indexhez. -
create_or_update_indexLeküldi a frissített sémát a keresési szolgáltatásba az index újraépítése vagy a dokumentumok törlése nélkül.
Az index lekérdezése
A lekérdezéscellák négy lekérdezést futtatnak egymás után: egy alapszintű kulcsszókeresést, majd három szemantikai rangsorolási változatot, amelyek egyre nagyobb funkcionalitással működnek.
Kifejezés lekérdezése (alapterv)
A Run a term query cella BM25-pontozással futtat egy kulcsszókeresést. Ez az alapkonfigurációs lekérdezés nem használ szemantikai rangsorolást, és összehasonlítási pontként szolgál.
from azure.search.documents import SearchClient
search_client = SearchClient(
endpoint=search_endpoint,
index_name=index_name,
credential=credential
)
results = search_client.search(
query_type='simple',
search_text="walking distance to live music",
select='HotelId,HotelName,Description',
include_total_count=True
)
Főbb tanulságok
-
query_type='simple'kulcsszókeresést határoz meg a BM25 pontozás alkalmazásával. - A
@search.scoreaz eredményeknél a BM25 relevancia-pontszámát jelzi.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
A Run a semantic query cella a szemantikai rangsor meghívásának minimális követelményét jeleníti meg.
from azure.search.documents import SearchClient
search_client = SearchClient(
endpoint=search_endpoint,
index_name=index_name,
credential=credential
)
results = search_client.search(
query_type='semantic',
semantic_configuration_name='semantic-config',
search_text="walking distance to live music",
select='HotelId,HotelName,Description',
query_caption='extractive'
)
Főbb tanulságok
-
query_type='semantic'lehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
semantic_configuration_namea használni kívánt szemantikai konfigurációt határozza meg. - Az
@search.reranker_scoreeredmények szemantikai relevanciát jeleznek (a magasabb jobb).
Szemantikai lekérdezés feliratokkal
A Return captions cella feliratokat ad hozzá az egyes eredmények legrelevánsabb részeinek kiemelésére, a fontos szavak és kifejezések találatkiemelésével.
results = search_client.search(
query_type='semantic',
semantic_configuration_name='semantic-config',
search_text="walking distance to live music",
select='HotelName,HotelId,Description',
query_caption='extractive'
)
for result in results:
captions = result["@search.captions"]
if captions:
caption = captions[0]
if caption.highlights:
print(f"Caption: {caption.highlights}\n")
Főbb tanulságok
-
query_caption='extractive'lehetővé teszi a feliratok kinyerését a tartalommezőkből. - A feliratok kiemelik a legrelevánsabb szakaszokat, és címkékkel látják el
<em>a fontos kifejezéseket.
Szemantikai lekérdezés válaszokkal
A Return semantic answers cella szemantikai válaszokat ad hozzá. Ez a lekérdezés egy kérdést használ keresési szövegként, mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazták meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvedhez, hagyd ki query_answer a kódból. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
results = search_client.search(
query_type='semantic',
semantic_configuration_name='semantic-config',
search_text="what's a good hotel for people who "
"like to read",
select='HotelName,Description,Category',
query_caption='extractive',
query_answer="extractive",
)
semantic_answers = results.get_answers()
for answer in semantic_answers:
if answer.highlights:
print(f"Semantic Answer: {answer.highlights}")
else:
print(f"Semantic Answer: {answer.text}")
print(f"Semantic Answer Score: {answer.score}\n")
Főbb tanulságok
-
query_answer="extractive"lehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
-
results.get_answers()a válaszobjektumokat a keresési eredményektől elkülönítve kéri le.
Ebben a rövid útmutatóban a JavaScript-hez készült Azure AI Keresés ügyfélkódtárat (a TypeScripttel kompatibilis) használja szemantikus rangsorolás hozzáadása egy meglévő keresési indexhez, és annak lekérdezése céljából.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi.Node.js 20 LTS-t vagy újabb verziót a lefordított kód futtatásához.
TypeScript a TypeScript JavaScriptre való fordításához.
Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-javascript-samplesNavigáljon a quickstart mappára.
cd azure-search-javascript-samples/quickstart-semantic-ranking-tsEbben
sample.enva fájlban cserélje le a helyőrző értékétAZURE_SEARCH_ENDPOINTa Get végpontban beszerzett URL-címre.Átnevezés
sample.env:.env.mv sample.env .envTelepítse a függőségeket.
npm installAmikor a telepítés befejeződött, a projektkönyvtárban meg kell jelennie egy
node_modulesmappának.A TypeScript-fájlok fordítása JavaScript-fájlba.
npm run buildHa kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az login
A kód futtatása
Kérje le a meglévő indexbeállításokat.
node -r dotenv/config dist/getIndexSettings.jsFrissítse az indexet szemantikai konfigurációval.
node -r dotenv/config dist/updateIndexSettings.jsSzemantikai lekérdezés futtatása.
node -r dotenv/config dist/semanticQuery.jsSzemantikai lekérdezés futtatása feliratokkal.
node -r dotenv/config dist/semanticQueryReturnCaptions.jsSzemantikai lekérdezés futtatása válaszokkal.
node -r dotenv/config dist/semanticAnswer.jsMegjegyzés
Ezek a parancsok futtatják a lefordított
.jsfájlokat adistmappából. A TypeScript-kódot JavaScriptre kell lefordítani, mielőtt a Node.js végrehajthatja azt, ezért korábban futtatta anpm run build-t.
Kimenet
A getIndexSettings.js szkript visszaadja az index nevét, a mezők számát, a mezők típusát és kereshető állapotát, valamint a meglévő szemantikai konfigurációkat.
Index name: hotels-sample
Number of fields: 23
Field: HotelId, Type: Edm.String, Searchable: true
Field: HotelName, Type: Edm.String, Searchable: true
Field: Description, Type: Edm.String, Searchable: true
// Trimmed for brevity
Semantic ranking configurations: 1
Configuration name: hotels-sample-semantic-configuration
Title field: undefined
A updateIndexSettings.js szkript az összes szemantikai konfigurációt visszaadja, beleértve a hozzáadott konfigurációt is.
Semantic configurations:
----------------------------------------
Configuration name: hotels-sample-semantic-configuration
Title field: undefined
Keywords fields:
Content fields: AzureSearch_DocumentKey
----------------------------------------
Configuration name: semantic-config
Title field: HotelName
Keywords fields: Tags
Content fields: Description
----------------------------------------
Semantic configuration updated successfully.
A semanticQuery.js szkript a reranker-pontszám által rendezett eredményeket adja vissza.
Search result #1:
Re-ranker Score: 2.613231658935547
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown,
within walking distance to theaters, art galleries, restaurants and
shops. Visit Seattle Art Museum by day, and then head over to
Benaroya Hall to catch the evening's concert performance.
Search result #2:
Re-ranker Score: 2.271434783935547
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza...
// Trimmed for brevity
A semanticQueryReturnCaptions.js szkript kinyert feliratokat ad vissza a találatok kiemelésével. Az eredmény szempontjából a feliratok a legrelevánsabb szakaszok.
Search result #1:
Re-ranker Score: 2.613231658935547
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown,
within walking distance to theaters, art galleries, restaurants and
shops. Visit Seattle Art Museum by day, and then head over to
Benaroya Hall to catch the evening's concert performance.
Caption with highlights: Chic hotel near the city. High-rise hotel
in downtown, within walking distance to<em> theaters, </em>art
galleries, restaurants and shops. Visit<em> Seattle Art Museum
</em>by day, and then head over to<em> Benaroya Hall </em>to catch
the evening's concert performance.
------------------------------------------------------------
Search result #2:
Re-ranker Score: 2.271434783935547
HotelName: Old Century Hotel
// Trimmed for brevity
A semanticAnswer.js szkript egy szemantikai választ (szó szerinti tartalmat) ad vissza az eredményből, amely a legjobban megfelel a kérdésnek.
Semantic answer result #1:
Semantic Answer: Nature is Home on the beach. Explore the shore by
day, and then come home to our shared living space to relax around
a stone fireplace, sip something warm, and explore the<em> library
</em>by night. Save up to 30 percent. Valid Now through the end of
the year. Restrictions and blackouts may apply.
Semantic Answer Score: 0.9829999804496765
Search Results:
Search result #1:
2.124817371368408
Stay-Kay City Hotel
This classic hotel is fully-refurbished and ideally located on the
main commercial artery of the city in the heart of New York...
Caption: This classic hotel is<em> fully-refurbished </em>and
ideally located on the main commercial artery of the city...
// Trimmed for brevity
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
A config.ts fájl betölti a környezeti változókat, létrehoz egy DefaultAzureCredential hitelesítést, és meghatározza a HotelDocument típusbiztonság felületét.
import { DefaultAzureCredential }
from "@azure/identity";
export const searchEndpoint =
process.env.AZURE_SEARCH_ENDPOINT
|| "PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE";
export const indexName =
process.env.AZURE_SEARCH_INDEX_NAME
|| "hotels-sample";
export const semanticConfigurationName =
process.env.SEMANTIC_CONFIGURATION_NAME
|| "semantic-config";
export const credential = new DefaultAzureCredential();
export interface HotelDocument {
HotelId: string;
HotelName: string;
Description: string;
Category: string;
Tags: string[];
}
Főbb tanulságok
-
DefaultAzureCredentialkulcs nélküli hitelesítést biztosít Microsoft Entra ID használatával. Több hitelesítő adattípust is összekapcsol, beleértve aaz login> Azure CLI hitelesítő adatait is. - A
HotelDocumentfelület fordítási idejű típusellenőrzést biztosít a keresési eredményekhez, biztosítva a dokumentummezők típusbiztos elérését. - A környezeti változók a
.envfájlból töltődnek be adotenvhasználatával.
Az index frissítése szemantikai konfigurációval
A updateIndexSettings.ts fájl szemantikai konfigurációt ad hozzá a meglévő hotels-sample indexhez. Ez a művelet nem töröl keresési dokumentumokat, és az index a konfiguráció hozzáadása után is működőképes marad. A TypeScript típusú széljegyzetek biztosítják, hogy a konfiguráció megegyezik a várt sémával.
import {
SearchIndexClient,
SemanticConfiguration,
SemanticPrioritizedFields,
SemanticField
} from "@azure/search-documents";
import {
searchEndpoint, indexName,
credential, semanticConfigurationName
} from "./config.js";
const indexClient = new SearchIndexClient(
searchEndpoint, credential
);
const existingIndex =
await indexClient.getIndex(indexName);
const fields: SemanticPrioritizedFields = {
titleField: { name: "HotelName" },
keywordsFields: [
{ name: "Tags" }
] as SemanticField[],
contentFields: [
{ name: "Description" }
] as SemanticField[]
};
const newSemanticConfiguration:
SemanticConfiguration = {
name: semanticConfigurationName,
prioritizedFields: fields
};
if (existingIndex.semanticSearch
&& existingIndex.semanticSearch.configurations) {
existingIndex.semanticSearch.configurations
.push(newSemanticConfiguration);
} else {
existingIndex.semanticSearch = {
configurations: [newSemanticConfiguration]
};
}
await indexClient.createOrUpdateIndex(existingIndex);
Főbb tanulságok
- TypeScript-típusok, mint például a
SemanticPrioritizedFields,SemanticConfiguration, ésSemanticField, fordítási időbeli ellenőrzést biztosítanak a konfigurációs struktúra számára. -
titleFieldbeállítja a dokumentum címét,contentFieldsbeállítja a fő tartalmat, éskeywordsFieldsbeállítja a kulcsszó- vagy címkemezőket. -
createOrUpdateIndexLeküldi a frissített sémát a keresési szolgáltatásba az index újraépítése vagy a dokumentumok törlése nélkül.
Az index lekérdezése
A lekérdezési szkriptek három lekérdezést futtatnak egymás után, és az alapszintű szemantikai kereséstől a szemantikai rangsorolásig haladnak feliratokkal és válaszokkal.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
A semanticQuery.ts szkript bemutatja a szemantikai rangsor típusbiztos eredményekkel való meghívásának minimális követelményét.
import { SearchClient }
from "@azure/search-documents";
import {
HotelDocument, credential,
searchEndpoint, indexName,
semanticConfigurationName
} from "./config.js";
const searchClient =
new SearchClient<HotelDocument>(
searchEndpoint, indexName, credential
);
const results = await searchClient.search(
"walking distance to live music",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName
},
select: [
"HotelId", "HotelName", "Description"
]
}
);
Főbb tanulságok
-
SearchClient<HotelDocument>típusbiztos hozzáférést nyújt a dokumentummezőkhöz az eredményekben, és automatikus kiegészítést biztosít a mezőnevekhez aselectésresult.document. -
queryType: "semantic"lehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
semanticSearchOptions.configurationNamea használni kívánt szemantikai konfigurációt határozza meg.
Szemantikai lekérdezés feliratokkal
A semanticQueryReturnCaptions.ts szkript feliratokkal kinyeri a legrelevánsabb részeket az egyes eredményekből, a fontos szavak és kifejezések pedig kiemeléssel jelezve jelennek meg.
const results = await searchClient.search(
"walking distance to live music",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName,
captions: {
captionType: "extractive",
highlight: true
}
},
select: [
"HotelId", "HotelName", "Description"
]
}
);
for await (const result of results.results) {
const captions = result.captions;
if (captions && captions.length > 0) {
const caption = captions[0];
if (caption.highlights) {
console.log(
`Caption: ${caption.highlights}`
);
}
}
}
Főbb tanulságok
-
captions.captionType: "extractive"lehetővé teszi a feliratok kinyerését a tartalommezőkből. - A feliratok kiemelik a legrelevánsabb szakaszokat, és címkékkel látják el
<em>a fontos kifejezéseket.
Szemantikai lekérdezés válaszokkal
A semanticAnswer.ts szkript szemantikai válaszokat ad hozzá. Egy kérdést használ keresési szövegként, mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazták meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvedhez, hagyd ki answers a kódból. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
const results = await searchClient.search(
"What's a good hotel for people who "
+ "like to read",
{
queryType: "semantic",
semanticSearchOptions: {
configurationName:
semanticConfigurationName,
captions: {
captionType: "extractive"
},
answers: {
answerType: "extractive"
}
},
select: [
"HotelName", "Description", "Category"
]
}
);
const semanticAnswers = results.answers;
for (const answer of semanticAnswers || []) {
if (answer.highlights) {
console.log(
`Semantic Answer: ${answer.highlights}`
);
} else {
console.log(
`Semantic Answer: ${answer.text}`
);
}
console.log(
`Semantic Answer Score: ${answer.score}`
);
}
Főbb tanulságok
-
answers.answerType: "extractive"lehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
-
results.answersa válaszobjektumokat a keresési eredményektől elkülönítve kéri le.
Ebben a rövid útmutatóban a Azure AI Keresés REST API-k használatával adhat hozzá semantikus rangsorolást egy meglévő keresési indexhez, és lekérdezheti az indexet.
A szemantikai rangsor egy lekérdezés oldalán található funkció, amely gépi olvasási megértést használ a keresési eredmények újraértékeléséhez, elősegítve a szemantikai szempontból releváns találatokat a lista tetejére. Szemantikai konfigurációt adhat hozzá egy meglévő indexhez újraépítési követelmény nélkül. A szemantikai rangsorolás az információs vagy leíró szövegek esetében a leghatékonyabb.
Tipp
Azonnal hozzá szeretne kezdeni? Töltse le a forráskódot GitHub.
Előfeltételek
Aktív előfizetéssel rendelkező Azure fiók. Hozzon létre egy fiókot ingyenesen.
Index leíró szövegmezőkkel, amelyhez a
searchableés aretrievableattribútumok tartoznak. Ez a rövid útmutató a szállodai mintaindexet feltételezi.Git a mintaadattár klónozásához.
A Microsoft Entra ID-vel történő kulcs nélküli hitelesítéshez használt Azure CLI.
Hozzáférés konfigurálása
Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez a Azure AI Keresés. Ez a rövid útmutató a Microsoft Entra ID-t használja hitelesítéshez és szerepköralapú jogosultságkezeléshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .
Az ajánlott szerepköralapú hozzáférés konfigurálása:
Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.
Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.
Keresési szolgáltatás közreműködője
Keresési index adatolvasó
Megjegyzés
Az indexet létrehozó és betöltő többi gyorsútmutatóval ellentétben ez a rövid útmutató egy olyan meglévő indexet feltételez, amely már tartalmaz adatokat, így nincs szüksége a keresési index adatszolgáltatói szerepkörére.
Végpont lekérése
Minden Azure AI Keresés szolgáltatás rendelkezik egy endpoint, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.
A végpont lekérése:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza az Áttekintés lehetőséget.
Jegyezze fel a végpontot, amelynek így kell kinéznie
https://my-service.search.windows.net.
Első lépés egy index
Ez a rövid útmutató egy meglévő indexet módosít, hogy szemantikai konfigurációt tartalmazzon. Javasoljuk a szállodai mintaindexet, amelyet percek alatt létrehozhat egy Azure portál varázsló használatával.
Másik index használatához cserélje le az index nevét, a szemantikai konfiguráció mezőneveit és a lekérdezési select utasítások mezőneveit a mintakódban. Az indexnek tartalmaznia kell olyan leíró szövegmezőket, amelyek attribútumként vannak megadva: searchable és retrievable.
A szállodák mintaindexének áttekintése és lekérdezése szemantikai rangsorolás előtt:
Nyissa meg a keresőszolgáltatást a Azure portálon.
A bal oldali panelen válassza a Kereséskezelési>indexek lehetőséget.
Válassza ki hotels-sample.
A meglévő konfigurációk megtekintéséhez válassza a szemantikai konfigurációkat . Ha engedélyezte a szemantikai rangsorolást a varázslólétrehozási folyamat során, rendelkeznie kell egy alapértelmezett konfigurációval.
Alapértelmezett szemantikai konfiguráció képernyőképe az Azure portálon. Válassza a Kereséskezelő, majd a JSON-nézet megtekintése> lehetőséget.
Illessze be a következő JSON-t a lekérdezésszerkesztőbe.
{ "search": "walking distance to live music", "select": "HotelId, HotelName, Description", "count": true }A lekérdezés futtatásához válassza a Keresés lehetőséget .
A válasznak az alábbi példához hasonlónak kell lennie. Ez egy teljes szöveges lekérdezés, amelyet a BM25 rangsorol, így az eredmények a lekérdezés általános jelentése helyett az egyes lekérdezési kifejezéseken és nyelvi változatokon egyeznek. Például a
walkingegyezik awalk-el, és aliveés amusicegymástól függetlenül egyeznek meg, nem pedig kifejezésként."@odata.count": 30, "value": [ { "@search.score": 5.004435, "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music." }, { "@search.score": 4.555706, "HotelId": "24", "HotelName": "Uptown Chic Hotel", "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance." }, { "@search.score": 3.5625167, "HotelId": "4", "HotelName": "Sublime Palace Hotel", "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience." }, ... // Trimmed for brevity ]Tipp
Ez a lekérdezés bemutatja, hogyan néz ki a válasz a szemantikai rangsor alkalmazása előtt. Miután konfigurált egy szemantikai konfigurációt, adja hozzá
"queryType": "semantic"és"semanticConfiguration": "semantic-config"elemeket, és tekintse meg, hogyan rangsorolja a szemantikai rangsorolás ugyanazt a lekérdezést.
A környezet beállítása
A Git használatával klónozza a mintaadattárat.
git clone https://github.com/Azure-Samples/azure-search-rest-samplesNyissa meg a quickstart mappát a Visual Studio Code-ban.
cd azure-search-rest-samples/Quickstart-semantic-ranking code .Ebben
semantic-index-update.resta fájlban cserélje le a helyőrző értékét@searchUrla Get végpontban beszerzett URL-címre.Ismételje meg az előző lépést a következőhöz
semantic-query.rest: .Ha kulcs nélküli hitelesítést szeretne a Microsoft Entra ID-vel, jelentkezzen be az Azure-fiókjába. Ha több előfizetéssel rendelkezik, válassza ki azt, amelyik a Azure AI Keresés szolgáltatást tartalmazza.
az loginA Microsoft Entra ID kulcs nélküli hitelesítéséhez hozzon létre egy hozzáférési jogkivonatot.
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsvMindkét
.restfájlban cserélje le a helyőrző értékét@personalAccessTokena tokennel az előző lépés alapján.
A kód futtatása
Nyisd meg
semantic-index-update.rest.Válassza a Kérés küldése lehetőséget az első GET kérelemben a kapcsolat ellenőrzéséhez.
A válasznak egy szomszédos panelen kell megjelennie. Ha rendelkezik meglévő indexel, azok név szerint vannak felsorolva. Ha a HTTP-kód az
200 OK, készen áll a folytatásra.Küldje el azt a
### Update the hotels-sample index to include a semantic configurationkérést, amely szemantikai konfigurációt szeretne hozzáadni az indexhez.Ha hibaüzenetet
400 Bad Requestkap, az indexséma eltér a mintától. Küldje el a### Get the schema of the indexkérést, másolja ki a válasz JSON-t, adja hozzá asemanticszakaszt a forráskódból a JSON-hoz, és cserélje le a PUT kérés törzsét az egyesített sémára.Váltson
semantic-query.rest-re, és küldje el a kérelmeket egymás után: egy egyszerű lekérdezést az alapkonfiguráció összehasonlításához, majd szemantikai lekérdezéseket rangsorolással, feliratokkal és válaszokkal.
Kimenet
A Send a search query to the hotels-sample index kérelem a BM25 relevancia alapján rangsorolt eredményeket adja vissza, amelyet a @search.score mező jelez.
{
"@odata.count": 30,
"value": [
{
"@search.score": 5.004435,
"HotelId": "2",
"HotelName": "Old Century Hotel",
"Description": "The hotel is situated in a nineteenth century plaza..."
},
// Trimmed for brevity
]
}
A Send a search query to the hotels-sample index with semantic ranking kérés hozzáadja a elemet @search.rerankerScore. Figyelje meg, hogy a rendelés az egyszerű lekérdezésből változik.
{
"@odata.count": 30,
"@search.answers": [],
"value": [
{
"@search.score": 4.555706,
"@search.rerankerScore": 2.613231658935547,
"HotelId": "24",
"HotelName": "Uptown Chic Hotel",
"Description": "Chic hotel near the city. High-rise hotel in downtown..."
},
// Trimmed for brevity
]
}
A Return captions in the query kérelem kibontott szöveggel és kiemelésekkel bővíthető @search.captions .
{
"value": [
{
"@search.score": 4.555706,
"@search.rerankerScore": 2.613231658935547,
"@search.captions": [
{
"text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops...",
"highlights": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops..."
}
],
"HotelId": "24",
"HotelName": "Uptown Chic Hotel"
},
// Trimmed for brevity
]
}
A Return semantic answers in the query kérés kinyerő választ @search.answers ad vissza, amikor a lekérdezés kérdésként van megfogalmazva.
{
"@odata.count": 46,
"@search.answers": [
{
"key": "38",
"text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night...",
"highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night...",
"score": 0.9829999804496765
}
],
"value": [
{
"@search.score": 2.060124,
"@search.rerankerScore": 2.124817371368408,
"@search.captions": [
{
"text": "This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city...",
"highlights": "This classic hotel is<em> fully-refurbished </em>and ideally located on the main commercial artery of the city..."
}
],
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel"
},
// Trimmed for brevity
]
}
A kód ismertetése
Megjegyzés
Előfordulhat, hogy az ebben a szakaszban szereplő kódrészletek az olvashatóság érdekében módosultak. A teljes munka példához tekintse meg a forráskódot.
Most, hogy futtatta a kódot, bontsuk le a legfontosabb lépéseket:
Konfiguráció és hitelesítés
Mindkét .rest fájl a tetején változókat határoz meg az összes kérés újrafelhasználásához.
@searchUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
@personalAccessToken = PUT-YOUR-PERSONAL-ACCESS-TOKEN-HERE
@api-version = 2026-04-01
Főbb tanulságok
-
@searchUrla keresési szolgáltatás végpontja. -
@personalAccessTokenegy Microsoft Entra ID jogkivonat, amely az Azure CLI-ből származik. Ez az API-kulcsokat kulcs nélküli hitelesítésre cseréli. -
Authorization: Bearer {{personalAccessToken}}minden kérés fejlécébe bekerül a hitelesítéshez.
Az index frissítése szemantikai konfigurációval
A ### Update the hotels-sample index to include a semantic configuration kérés a semantic-index-update.rest-ben a teljes indexsémát küldi el egy új semantic szakaszsal együtt. A REST API-hoz minden frissítési művelet teljes sémája szükséges, így nem küldheti el csak a szemantikai konfigurációt.
Az új semantic szakasz a kulcsfontosságú hozzáadás.
"semantic": {
"configurations": [
{
"name": "semantic-config",
"rankingOrder":
"BoostedRerankerScore",
"prioritizedFields": {
"titleField": {
"fieldName": "HotelName"
},
"prioritizedContentFields": [
{
"fieldName": "Description"
}
],
"prioritizedKeywordsFields": [
{
"fieldName": "Tags"
}
]
}
}
]
}
Főbb tanulságok
-
titleFieldazonosítja, hogy melyik mező tartalmazza a szemantikai értékelés dokumentumcímét. -
prioritizedContentFieldsazonosítja a fő tartalommezőket. A szemantikai rangsoroló ezeket értékeli ki először a relevancia értékelésekor. -
prioritizedKeywordsFieldsa további környezet kulcsszó- vagy címkemezőit azonosítja. -
rankingOrder: BoostedRerankerScoreegyesíti a BM25 pontszámot a szemantikai reranker pontszámmal. - A REST API-hoz a PUT-műveletek teljes sémája szükséges. Csak a
semanticszakasz új, az összes többi mező változatlan marad.
Az index lekérdezése
A semantic-query.rest kérések egy egyszerű kulcsszókereséstől a szemantikai rangsorolásig terjednek, magyarázó szövegekkel és válaszokkal. Minden lekérdezés POST-kérés a Dokumentumok – Search Post (REST API) szolgáltatáshoz.
Egyszerű lekérdezés
A ### Send a search query to the hotels-sample index kérés egy egyszerű kulcsszókeresés, amely nem használ szemantikai rangsorolást. Alapkonfigurációként szolgál az eredmények szemantikai újrarankálással és anélkül történő összehasonlításához.
{
"search":
"walking distance to live music",
"select":
"HotelId, HotelName, Description",
"count": true,
"queryType": "simple"
}
Főbb tanulságok
-
queryType: "simple"az alapértelmezett BM25 rangsorolási algoritmust használja. - Az eredmények csak kulcsszó-relevancia (
@search.score) alapján vannak rangsorolva.
Szemantikai lekérdezés (nincs felirat, nincs válasz)
A ### Send a search query to the hotels-sample index with semantic ranking kérés szemantikai rangsorolást ad hozzá. Az alábbi JSON a szemantikai rangsor meghívásának minimális követelményét mutatja be.
{
"search":
"walking distance to live music",
"select":
"HotelId, HotelName, Description",
"count": true,
"queryType": "semantic",
"semanticConfiguration": "semantic-config"
}
Főbb tanulságok
-
queryType: "semantic"lehetővé teszi a szemantikai rangsorolást a lekérdezésen. -
semanticConfigurationa használni kívánt szemantikai konfigurációt határozza meg.
Szemantikai lekérdezés feliratokkal
A ### Return captions in the query kérés feliratokat ad az egyes eredmények legfontosabb részeinek kiemeléséhez, a fontos fogalmakra és kifejezésekre pedig találati kiemelés vonatkozik.
{
"search":
"walking distance to live music",
"select":
"HotelId, HotelName, Description",
"count": true,
"queryType": "semantic",
"semanticConfiguration": "semantic-config",
"captions": "extractive|highlight-true"
}
Főbb tanulságok
-
captions: "extractive|highlight-true"lehetővé teszi a fontos kifejezésekhez kapcsolódó címkékkel rendelkező<em>kinyerési feliratok használatát. - Az egyes eredményekhez felirat jelenik meg a
@search.captionstömbben.
Szemantikai lekérdezés válaszokkal
A ### Return semantic answers in the query kérés szemantikai válaszokat ad hozzá. Egy kérdést használ keresési szövegként, mert a szemantikai válaszok akkor működnek a legjobban, ha a lekérdezést kérdésként fogalmazták meg. A válasz egy, az indexből kinyert szó szerinti részlet, nem pedig egy csevegési modell által összerakott válasz.
A lekérdezést és az indexelt tartalmat szorosan össze kell igazítani a válasz visszaadásához. Ha egyetlen jelölt sem éri el a megbízhatósági küszöbértéket, a válasz nem tartalmaz választ. Ez a példa egy olyan kérdést használ, amelyről ismert, hogy eredményt ad, így láthatja a szintaxist. Ha a válaszok nem hasznosak a forgatókönyvhöz, hagyja ki a paramétert a answers kérésből. A megkomponált válaszok esetében fontolja meg a RAG-mintát vagy az agent alapú lekérést.
{
"search":
"what's a good hotel for people who like to read",
"select":
"HotelId, HotelName, Description",
"count": true,
"queryType": "semantic",
"semanticConfiguration": "semantic-config",
"captions": "extractive|highlight-true",
"answers": "extractive"
}
Főbb tanulságok
-
answers: "extractive"lehetővé teszi a kérdésekhez hasonló lekérdezések kinyerési válaszait. - A válaszok a legfelső szintű
@search.answerstömbben jelennek meg, az egyes eredményektől elkülönítve. - A válaszok az indexből kinyert szó szerinti tartalom, nem pedig a létrehozott szöveg.
Erőforrások törlése
Ha a saját előfizetésében dolgozik, érdemes befejezni egy projektet a már nem szükséges erőforrások eltávolításával. Az otthagyott futó erőforrások pénzbe kerülhetnek.
Az Azure portálon válassza a Minden erőforrás vagy Erőforráscsoportok lehetőséget a bal oldali panelen az erőforrások megkereséséhez és kezeléséhez. Az erőforrásokat egyenként törölheti, vagy törölheti az erőforráscsoportot az összes erőforrás egyidejű eltávolításához.