Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.
Artikel ini adalah dokumentasi referensi untuk konteks keterampilan dan sintaks input. Ini adalah deskripsi lengkap tentang bahasa ekspresi yang digunakan untuk membuat jalur ke simpul dalam dokumen yang diperkaya.
Keterampilan Pencarian Azure AI dapat menggunakan dan memperkaya data yang berasal dari sumber data dan dari output keterampilan lain. Himpunan kerja data yang mewakili status pekerjaan pengindeks saat ini untuk dokumen saat ini dimulai dari data mentah yang berasal dari sumber data dan secara progresif diperkaya dengan setiap data output perulangan keterampilan. Data tersebut diatur secara internal dalam struktur seperti pohon yang dapat dikueri untuk digunakan sebagai input keterampilan atau ditambahkan ke indeks. Simpul di pohon bisa menjadi nilai sederhana seperti string dan angka, array, atau objek kompleks dan bahkan file biner. Bahkan nilai sederhana dapat diperkaya dengan informasi yang lebih terstruktur. Misalnya, string dapat diannotasi dengan informasi tambahan yang disimpan di bawahnya di pohon pengayaan. Ekspresi yang digunakan untuk mengkueri struktur internal tersebut menggunakan sintaks kaya yang dirinci dalam artikel ini. Struktur data yang diperkaya dapat diperiksa dari sesi debug. Ekspresi yang mengkueri struktur juga dapat diuji dari sesi debug.
Sepanjang artikel, kami menggunakan data yang diperkaya berikut sebagai contoh. Data ini khas dari jenis struktur yang akan Anda dapatkan saat memperkaya dokumen menggunakan set keterampilan dengan OCR, ekstraksi frasa kunci, terjemahan teks, deteksi bahasa, dan keterampilan pengenalan entitas , ditambah keterampilan tokenizer kustom.
| Jalur | Value |
|---|---|
document |
|
merged_content |
"Studi BMN 110 pada Pasien Anak"... |
keyphrases |
|
[0] |
"Studi BMN" |
[1] |
"Syndrome" |
[2] |
"Pasien Anak" |
| ... | |
locations |
|
[0] |
"IVA" |
translated_text |
"Étude de BMN 110 chez les pasien 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" |
| ... | |
| ... | |
| ... |
Akar dokumen
Data berada di bawah satu elemen akar dan jalurnya adalah "/document". Elemen akar adalah konteks default untuk keterampilan.
Jalur sederhana
Jalur sederhana melalui dokumen yang diperkaya internal dapat diekspresikan dengan token sederhana yang dipisahkan oleh garis miring. Sintaks ini mirip dengan spesifikasi JSON Pointer.
Properti objek
Properti simpul yang mewakili objek menambahkan nilainya ke pohon di bawah nama properti. Nilai-nilai tersebut dapat diperoleh dengan menambahkan nama properti sebagai token yang dipisahkan oleh garis miring:
| Expression | Value |
|---|---|
/document/merged_content/language |
"en" |
Token nama properti peka huruf besar/kecil.
Indeks item array
Elemen tertentu dari array dapat dirujuk dengan menggunakan indeks numeriknya seperti nama properti:
| Expression | Value |
|---|---|
/document/merged_content/keyphrases/1 |
"Syndrome" |
/document/merged_content/entities/0/text |
"BMN" |
Urutan escape
Ada beberapa karakter yang memiliki arti khusus dan perlu diloloskan jika ditafsirkan as-is alih-alih elemen sintaksis. Karakter-karakter ini termasuk #, /, dan ~ antara lain.
| Urutan escape | Arti khusus (penggunaan dalam sintaks jalur) | Contoh |
|---|---|---|
~0 |
Digunakan untuk melarikan diri ~ |
"~0" untuk ~, di mana "~/documents" menjadi "~0~1documents" |
~1 |
Digunakan untuk melarikan diri / |
"~1" untuk /, di mana "~/documents" menjadi "~0~1documents" |
~2 |
Digunakan untuk secara generik untuk menghindari urutan arbitrer (termasuk tetapi tidak terbatas # pada dan *) |
"~2#~2" di mana "readme#requirements" menjadi "readme~2#~2requirements" |
Enumerasi array
Array nilai dapat diperoleh menggunakan '*' token:
| Expression | Value |
|---|---|
/document/normalized_images/0/text/words/* |
["Study", "of", "BMN", "110" ...] |
Token '*' tidak harus berada di akhir jalur. Dimungkinkan untuk menghitung semua simpul yang cocok dengan jalur dengan bintang di tengah atau dengan beberapa bintang:
| Expression | Value |
|---|---|
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ... "it", "is", "certainly" ...] |
Contoh ini mengembalikan daftar datar semua simpul yang cocok.
Dimungkinkan untuk mempertahankan lebih banyak struktur dan mendapatkan array terpisah untuk kata-kata setiap halaman dengan menggunakan '#' token alih-alih token kedua '*' :
| Expression | Value |
|---|---|
/document/normalized_images/*/text/words/# |
[["Study", "of", "BMN", "110" ...], ["it", "is", "certainly" ...] ...] |
Token '#' mengekspresikan bahwa array harus diperlakukan sebagai nilai tunggal alih-alih dijumlahkan.
Menghitung array dalam konteks
Seringkali berguna untuk memproses setiap elemen array dalam isolasi dan memiliki serangkaian input dan output keterampilan yang berbeda untuk masing-masing elemen.
Praktik terbaik ini dapat dilakukan dengan mengatur konteks keterampilan ke enumerasi alih-alih default "/document".
Dalam contoh berikut, kami menggunakan salah satu ekspresi input yang kami gunakan sebelumnya, tetapi dengan konteks berbeda yang mengubah nilai yang dihasilkan.
| Context | Expression | Values |
|---|---|---|
/document/normalized_images/* |
/document/normalized_images/*/text/words/* |
["Study", "of", "BMN", "110" ...]["it", "is", "certainly" ...]... |
Untuk kombinasi konteks dan input ini, keterampilan dijalankan sekali untuk setiap gambar yang dinormalisasi: sekali untuk "/document/normalized_images/0" dan sekali untuk "/document/normalized_images/1". Dua nilai input yang sesuai dengan setiap eksekusi keterampilan dirinci dalam kolom nilai.
Saat Anda mengurai array dalam konteks, output apa pun yang dihasilkan kemampuan ditambahkan ke dokumen sebagai pengayaan konteks.
Dalam contoh sebelumnya, output bernama "out" memiliki nilainya untuk setiap eksekusi yang ditambahkan ke dokumen masing-masing di bawah "/document/normalized_images/0/out" dan "/document/normalized_images/1/out".
Nilai harfiah
Input keterampilan dapat mengambil nilai harfiah sebagai inputnya alih-alih nilai dinamis yang dikueri dari dokumen yang ada. Praktik terbaik ini dapat dicapai dengan awalan nilai dengan tanda sama dengan. Nilai dapat berupa angka, string, atau Boolean.
Nilai string dapat diapit dalam tanda kutip tunggal ' atau ganda " .
| Expression | Value |
|---|---|
=42 |
42 |
=2.45E-4 |
0.000245 |
="some string" |
"some string" |
='some other string' |
"some other string" |
="unicod\u0065" |
"unicode" |
=false |
false |
Dalam array baris
Jika input keterampilan tertentu memerlukan array data, tetapi data direpresentasikan sebagai nilai tunggal saat ini atau Anda perlu menggabungkan beberapa nilai tunggal yang berbeda ke dalam bidang array, maka Anda dapat membuat nilai array sebaris sebagai bagian dari ekspresi input keterampilan dengan membungkus daftar ekspresi yang dipisahkan koma dalam tanda kurung ([ dan ]). Nilai array dapat berupa kombinasi jalur ekspresi atau nilai harfiah sesuai kebutuhan. Anda juga dapat membuat array berlapis dalam array dengan cara ini.
| Expression | Value |
|---|---|
=['item'] |
["item"] |
=[$(/document/merged_content/entities/0/text), 'item'] |
["BMN", "item"] |
=[1, 3, 5] |
[1, 3, 5] |
=[true, true, false] |
[benar, benar, salah] |
=[[$(/document/merged_content/entities/0/text), 'item'],['item2', $(/document/merged_content/keyphrases/1)]] |
[["BMN", "item"], ["item2", "Sindrom"]] |
Jika keterampilan memiliki konteks yang menjelaskan untuk menjalankan keterampilan per input array (artinya, bagaimana "context": "/document/pages/*" keterampilan berjalan sekali per "halaman" di pages) lalu meneruskan nilai tersebut sebagai ekspresi sebagai input ke array baris menggunakan salah satu nilai tersebut sekaligus.
Misalnya dengan data sampel kami yang diperkaya, jika keterampilan context Anda adalah /document/merged_content/keyphrases/* dan kemudian Anda membuat array sebaris dari berikut =['key phrase', $(/document/merged_content/keyphrases/*)] pada input keterampilan itu, maka keterampilan dijalankan tiga kali, sekali dengan nilai ["frasa kunci", "Studi BMN"], yang lain dengan nilai ["frasa kunci", "Sindrom"], dan akhirnya dengan nilai ["frasa kunci", "Pasien Anak"]. Nilai "frasa kunci" harfiah tetap sama setiap kali, tetapi nilai jalur ekspresi berubah dengan setiap eksekusi keterampilan.
Ekspresi komposit
Dimungkinkan untuk menggabungkan nilai bersama-sama menggunakan operator unary, biner, dan ternary.
Operator dapat menggabungkan nilai dan nilai harfiah yang dihasilkan dari evaluasi jalur.
Saat digunakan di dalam ekspresi, jalur harus diapit antara "$(" dan ")".
Boolean tidak '!'
| Expression | Value |
|---|---|
=!false |
true |
Negatif '-'
| Expression | Value |
|---|---|
=-42 |
-42 |
=-$(/document/merged_content/entities/0/offset) |
-9 |
Penambahan '+'
| Expression | Value |
|---|---|
=2+2 |
4 |
=2+$(/document/merged_content/entities/0/offset) |
11 |
Pengurangan '-'
| Expression | Value |
|---|---|
=2-1 |
1 |
=$(/document/merged_content/entities/0/offset)-2 |
7 |
Perkalian '*'
| Expression | Value |
|---|---|
=2*3 |
6 |
=$(/document/merged_content/entities/0/offset)*2 |
18 |
Divisi '/'
| 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 |
Perangkaian string '+'
| Expression | Value |
|---|---|
="Hello," + "world!" |
"Hello, world!" |
=$(/document/merged_content/entities/0/text) + $(/document/merged_content/entities/0/category) |
"BMN Organization" |
Kurang dari, kurang dari atau sama dengan, lebih besar dari dan lebih besar dari atau sama dengan '<''<=''>''>='
| Expression | Value |
|---|---|
=15<4 |
false |
=4<=4 |
true |
=15>4 |
true |
=1>=2 |
false |
Kesetaraan dan ketidaksetaraan '==''!='
| Expression | Value |
|---|---|
=15==4 |
false |
=4==4 |
true |
=15!=4 |
true |
=1!=1 |
false |
Operasi logis dan, atau dan eksklusif atau '&&''||''^'
| Expression | Value |
|---|---|
=true&&true |
true |
=true&&false |
false |
=true||true |
true |
=true||false |
true |
=false||false |
false |
=true^false |
true |
=true^true |
false |
Operator ternary '?:'
Dimungkinkan untuk memberikan input nilai yang berbeda berdasarkan evaluasi ekspresi Boolean menggunakan operator ternary.
| Expression | Value |
|---|---|
=true?"true":"false" |
"true" |
=$(/document/merged_content/entities/0/offset)==9?"nine":"not nine" |
"nine" |
Tanda kurung dan prioritas operator
Operator dievaluasi dengan prioritas yang sesuai dengan konvensi biasa: operator unary, kemudian perkalian, pembagian dan modulo, kemudian penambahan dan pengurangan, kemudian perbandingan, kemudian kesetaraan, dan kemudian operator logis. Aturan asokiativitas biasa juga berlaku.
Tanda kurung dapat digunakan untuk mengubah atau membedakan urutan evaluasi.
| Expression | Value |
|---|---|
=3*2+5 |
11 |
=3*(2+5) |
21 |