Kontext dovedností a jazyk pro zadávání poznámek

Note

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Tento článek je referenční dokumentace pro kontext dovedností a syntaxi vstupu. Jedná se o úplný popis jazyka výrazů, který slouží k vytváření cest k uzlům v rozšířeném dokumentu.

Dovednosti Azure AI Vyhledávač můžou využívat a rozšiřovat data pocházející ze zdroje dat a z výstupu dalších dovedností. Pracovní sada dat, která představuje aktuální stav práce indexeru pro aktuální dokument, začíná z nezpracovaných dat pocházejících ze zdroje dat a postupně se rozšiřuje o výstupní data jednotlivých dovedností. Tato data jsou interně uspořádaná ve stromové struktuře, která se dá dotazovat, aby se použila jako vstupy dovedností nebo aby se přidala do indexu. Uzly ve stromu mohou být jednoduché hodnoty, jako jsou řetězce a čísla, pole nebo složité objekty a dokonce binární soubory. Dokonce i jednoduché hodnoty lze rozšířit o strukturovanější informace. Řetězec může být například opatřen poznámkami s dalšími informacemi, které jsou pod ním uloženy ve stromu rozšiřování. Výrazy používané k dotazování na tuto interní strukturu používají bohatou syntaxi, která je podrobně popsána v tomto článku. Rozšířenou datovou strukturu je možné zkontrolovat z ladicích relací. Výrazy dotazující se na strukturu je možné testovat také z ladicích relací.

V celém článku jako příklad používáme následující rozšířená data. Tato data jsou typická pro typ struktury, kterou byste získali při rozšiřování dokumentu pomocí sady dovedností pomocí OCR, extrakce klíčových frází, překladu textu, rozpoznávání jazyka a dovedností rozpoznávání entit a dovednosti vlastního tokenizátoru.

Cesta Value
document
merged_content "Studie BMN 110 u pediatrických pacientů"...
  keyphrases
   [0] "Studie BMN"
   [1] "Syndrome"
   [2] "Pediatrii pacienti"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "Organization"
    subcategory null
    confidenceScore 0.72
    length 3
    offset 9
    text "BMN"
   ...
  organizations
   [0] "BMN"
  language "en"
normalized_images
  [0]
   layoutText ...
   text
    words
     [0] "Study"
     [1] "of"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] "it"
     [1] "is"
     [2] "certainly"
     ...
    ...
  ...

Kořenový adresář dokumentu

Data jsou pod jedním kořenovým prvkem a cesta je "/document". Kořenový prvek je výchozím kontextem dovedností.

Jednoduché cesty

Jednoduché cesty prostřednictvím interního rozšířeného dokumentu lze vyjádřit jednoduchými tokeny oddělenými lomítky. Tato syntaxe se podobá specifikaci ukazatele JSON.

Vlastnosti objektu

Vlastnosti uzlů, které představují objekty, přidávají své hodnoty do stromu pod názvem vlastnosti. Tyto hodnoty lze získat připojením názvu vlastnosti jako tokenu odděleného lomítkem:

Expression Value
/document/merged_content/language "en"

U tokenů názvů vlastností se rozlišují malá a velká písmena.

Index položky pole

Na konkrétní prvky pole lze odkazovat pomocí jejich číselného indexu, jako je název vlastnosti:

Expression Value
/document/merged_content/keyphrases/1 "Syndrome"
/document/merged_content/entities/0/text "BMN"

Escape sekvence

Existuje několik znaků, které mají zvláštní význam a musí být speciálně zpracovány, pokud mají být interpretovány doslova místo jako prvek syntaxe. Mezi tyto znaky patří #, /a ~ mimo jiné.

Úniková sekvence Speciální význam (použití v syntaxi cesty) Příklad
~0 Používá se pro zapouzdření ~ "~0" pro ~, kde "~/documents" se změní na ~0 ~1documents.
~1 Používá se pro zapouzdření / "~1" pro /, kde "~/documents" se změní na ~0~1documents.
~2 Slouží k obecnému úniku libovolných sekvencí (včetně mimo jiné # a *) "~2#~2", kde se "readme#requirements" stane "readme~2#~2requirements"

Výčet polí

Pole hodnot lze získat pomocí tokenu '*' :

Expression Value
/document/normalized_images/0/text/words/* ["Study", "of", "BMN", "110" ...]

Token '*' nemusí být na konci cesty. Je možné vytvořit výčet všech uzlů odpovídající cestě s hvězdičkou uprostřed nebo několika hvězdičkami:

Expression Value
/document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...]

Tento příklad vrátí plochý seznam všech odpovídajících uzlů.

Je možné zachovat větší strukturu a získat samostatné pole pro slova každé stránky pomocí '#' tokenu místo druhého '*' tokenu:

Expression Value
/document/normalized_images/*/text/words/# [["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...]

Token '#' vyjadřuje, že pole by mělo být považováno za jednu hodnotu, nikoli jako výčet.

Výčet polí v kontextu

Často je užitečné zpracovat každý prvek pole izolovaně a mít pro každý z nich jinou sadu vstupů dovedností a výstupů. Tento osvědčený postup lze provést nastavením kontextu dovednosti na výčet místo výchozího "/document".

V následujícím příkladu použijeme jeden ze vstupních výrazů, které jsme použili dříve, ale s jiným kontextem, který změní výslednou hodnotu.

Context Expression Values
/document/normalized_images/* /document/normalized_images/*/text/words/* ["Study", "of", "BMN", "110" ...]
["it", "is", "certainly" ...]
...

Pro tuto kombinaci kontextu a vstupu se dovednost provede jednou pro každý normalizovaný obrázek: jednou pro "/document/normalized_images/0" a jednou pro "/document/normalized_images/1". Dva vstupní hodnoty odpovídající jednotlivým spuštěním dovedností jsou podrobně popsány ve sloupci hodnot.

Při vytváření výčtu pole v kontextu se všechny výstupy, které dovednost vytváří, přidají do dokumentu jako obohacení kontextu. V předchozím příkladu jsou hodnoty výstupu s názvem "out" pro každé spuštění přidány do dokumentu pod "/document/normalized_images/0/out" a "/document/normalized_images/1/out".

Literální hodnoty

Vstupy dovedností mohou jako vstupy přijímat literály místo dynamických hodnot dotazovaných z existujícího dokumentu. Tento osvědčený postup lze dosáhnout předponou hodnoty symbolem rovná se. Hodnoty můžou být čísla, řetězce nebo logická hodnota. Řetězcové hodnoty mohou být uzavřeny v jednoduchých ' nebo dvojitých " uvozovkách.

Expression Value
=42 42
=2.45E-4 0.000245
="some string" "some string"
='some other string' "some other string"
="unicod\u0065" "unicode"
=false false

V řádcích polí

Pokud určitý vstup dovednosti vyžaduje pole dat, ale data jsou reprezentována jako jedna hodnota v současné době nebo potřebujete zkombinovat více různých jednoduchých hodnot do pole pole, pak můžete vytvořit maticovou hodnotu vloženou jako součást vstupního výrazu dovednosti tak, že zabalíte čárkami oddělený seznam výrazů v hranatých závorkách ([ a ]). Hodnota pole může být kombinací cest výrazů nebo literálových hodnot podle potřeby. Tímto způsobem můžete také vytvořit vnořená pole v rámci polí.

Expression Value
=['item'] ["item"]
=[$(/document/merged_content/entities/0/text), 'item'] ["BMN", "položka"]
=[1, 3, 5] [1, 3, 5]
=[true, true, false] [pravda, pravda, lež]
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] [["BMN", "item"], ["item2", "Syndrom"]]

Pokud má dovednost kontext, který vysvětluje spuštění dovednosti pro vstup pole (to znamená, jak to znamená, že "context": "/document/pages/*" dovednost se spouští jednou za "stránku" v pages) a předání této hodnoty jako výrazu jako vstupu do řádku používá jednu z těchto hodnot najednou.

Příklad s našimi ukázkovými obohacenými daty, pokud je context vaše dovednost /document/merged_content/keyphrases/* a pak vytvoříte vložené pole následujícího =['key phrase', $(/document/merged_content/keyphrases/*)] na vstupu této dovednosti, pak se dovednost provede třikrát, jednou s hodnotou ["klíčové fráze", "Studie BMN"], další s hodnotou ["klíčové fráze", další s hodnotou ["klíčové fráze", "Syndrom"] a nakonec s hodnotou ["klíčové fráze", "Pediatrii pacienti"]. Hodnota literálu "klíčová fráze" zůstává vždy stejná, ale hodnota cesty výrazu se mění při každém provádění dovedností.

Složené výrazy

Hodnoty je možné kombinovat pomocí unárních, binárních a ternárních operátorů. Operátory mohou kombinovat hodnoty literálů a hodnoty vyplývající z vyhodnocení cesty. Při použití uvnitř výrazu by měly být cesty uzavřeny mezi "$(" a ")".

Logická hodnota není '!'

Expression Value
=!false true

Negativní '-'

Expression Value
=-42 -42
=-$(/document/merged_content/entities/0/offset) -9

Sčítání '+'

Expression Value
=2+2 4
=2+$(/document/merged_content/entities/0/offset) 11

Odčítání '-'

Expression Value
=2-1 1
=$(/document/merged_content/entities/0/offset)-2 7

Násobení '*'

Expression Value
=2*3 6
=$(/document/merged_content/entities/0/offset)*2 18

Dělení '/'

Expression Value
=3/2 1.5
=$(/document/merged_content/entities/0/offset)/3 3

Modulo '%'

Expression Value
=15%4 3
=$(/document/merged_content/entities/0/offset)%2 1

Zřetězení řetězců '+'

Expression Value
="Hello," + "world!" "Hello, world!"
=$(/document/merged_content/entities/0/text) + $(/document/merged_content/entities/0/category) "BMN Organization"

Menší než, menší než nebo rovno, větší než a větší než nebo rovno '<''<=''>''>='

Expression Value
=15<4 false
=4<=4 true
=15>4 true
=1>=2 false

Rovnost a nerovnost '==''!='

Expression Value
=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

Logické operace a nebo výhradní nebo '&&''||''^'

Expression Value
=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

Ternární operátor '?:'

Je možné zadat různé hodnoty na základě vyhodnocení logického výrazu pomocí ternárního operátoru.

Expression Value
=true?"true":"false" "true"
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" "nine"

Priorita závorek a operátorů

Operátory se vyhodnocují s prioritami, které odpovídají obvyklým konvencím: unární operátory, pak násobení, dělení a modulo, následné sčítání a odčítání, pak porovnání, pak rovnost a logické operátory. Platí také běžná pravidla asociativity.

Závorky lze použít ke změně nebo nejednoznačnosti pořadí vyhodnocení.

Expression Value
=3*2+5 11
=3*(2+5) 21

Viz také