기술 컨텍스트 및 입력 주석 언어

이 문서는 기술 컨텍스트 및 입력 구문에 대한 참조 설명서입니다. 보강된 문서의 노드에 대한 경로를 생성하는 데 사용되는 식 언어에 대한 전체 설명입니다.

Azure AI Search 기술은 데이터 원본 및 다른 기술의 출력에서 제공되는 데이터를 사용하고 보강할 수 있습니다. 현재 문서에 대한 인덱서 작업의 현재 상태를 나타내는 데이터 작업 세트는 데이터 원본에서 오는 원시 데이터에서 시작하여 각 기술 반복의 출력 데이터로 점진적으로 보강됩니다. 해당 데이터는 내부적으로 기술 입력으로 사용하거나 인덱스에 추가하기 위해 쿼리할 수 있는 트리와 비슷한 구조로 구성됩니다. 트리의 노드는 간단한 값(예: 문자열 및 숫자, 배열 또는 복잡한 개체 및 이진 파일)일 수 있습니다. 간단한 값도 구조화된 추가 정보로 보강할 수 있습니다. 예를 들어 보강 트리의 문자열 아래에 저장되는 추가 정보로 해당 문자열에 주석을 달 수 있습니다. 해당 내부 구조를 쿼리하는 데 사용되는 식은 이 문서에서 자세히 설명하는 풍부한 구문을 사용합니다. 보강된 데이터 구조는 디버그 세션에서 검사할 수 있습니다. 또한 구조를 쿼리하는 식은 디버그 세션에서 테스트할 수 있습니다.

문서 전체에서 다음과 같은 보강된 데이터를 예로 사용합니다. 이 데이터는 OCR, 핵심 구 추출, 텍스트 번역, 언어 감지, 엔터티 인식 기술 및 사용자 지정 토크나이저 기술이 포함된 기술 세트를 사용하여 문서를 보강하는 경우 가져올 수 있는 구조의 일반적인 종류입니다.

Path
document
merged_content "소아 환자의 BMN 110 연구"...
  keyphrases
   [0] "BMN 연구"
   [1] "증후군"
   [2] "소아 환자"
   ...
  locations
   [0] "IVA"
  translated_text "Étude de BMN 110 chez les patients pédiatriques"...
  entities
   [0]
    category "조직"
    subcategory null
    confidenceScore 0.72
    length 3
    offset 9
    text "BMN"
   ...
  organizations
   [0] "BMN"
  language "en"
normalized_images
  [0]
   layoutText ...
   text
    words
     [0] "연구"
     [1] "의"
     [2] "BMN"
     [3] "110"
     ...
  [1]
   layoutText ...
   text
    words
     [0] “it”
     [1] "입니다"
     [2] "확실히"
     ...
    ...
  ...

문서 루트

모든 데이터는 경로가 "/document"인 하나의 루트 요소 아래에 있습니다. 루트 요소는 기술의 기본 컨텍스트입니다.

단순 경로

내부 보강된 문서를 통한 단순 경로는 슬래시로 구분된 간단한 토큰으로 표현할 수 있습니다. 이 구문은 JSON 포인터 사양과 비슷합니다.

개체 속성

개체를 나타내는 노드의 속성은 해당 값을 속성 이름 아래의 트리에 추가합니다. 이러한 값은 속성 이름을 슬래시로 구분된 토큰으로 추가하여 가져올 수 있습니다.

/document/merged_content/language "en"

속성 이름 토큰은 대/소문자를 구분합니다.

배열 항목 인덱스

배열의 특정 요소는 속성 이름과 같은 숫자 인덱스를 사용하여 참조할 수 있습니다.

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

이스케이프 시퀀스

특별한 의미가 있고 식에 나타나는 경우 이스케이프해야 하는 두 문자('/''~')가 있으며, 특별한 의미 대신 있는 그대로 해석되어야 합니다. 이러한 문자는 각각 '~0''~1'로 이스케이프해야 합니다.

배열 열거형

값 배열은 '*' 토큰을 사용하여 가져올 수 있습니다.

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

'*' 토큰은 경로 끝에 있을 필요가 없습니다. 가운데에 하나의 별이 있거나 여러 개의 별이 있는 경로와 일치하는 모든 노드를 열거할 수 있습니다.

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

예제에서는 일치하는 모든 노드의 단순 목록을 반환합니다.

두 번째 '*' 토큰 대신 '#' 토큰을 사용하여 더 많은 구조를 유지하고 각 페이지의 단어에 대해 별도의 배열을 가져올 수 있습니다.

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

'#' 토큰은 배열이 열거되는 대신 단일 값으로 처리되어야 함을 나타냅니다.

컨텍스트에서 배열 열거

배열의 각 요소를 격리 상태로 처리하고 각각에 대해 서로 다른 기술 입력 및 출력 세트를 갖는 것이 유용한 경우가 많습니다. 이 작업은 기술의 컨텍스트를 기본 "/document" 대신 열거형으로 설정하여 수행할 수 있습니다.

다음 예제에서는 이전에 사용한 입력 식 중 하나를 사용하지만 결과 값을 변경하는 다른 컨텍스트를 사용합니다.

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

이 컨텍스트 및 입력 조합의 경우 기술은 각 정규화된 이미지에 대해 한 번 실행됩니다("/document/normalized_images/0"에 대해 한 번, "/document/normalized_images/1"에 대해 한 번). 각 기술 실행에 해당하는 두 개의 입력 값은 값 열에 자세히 설명되어 있습니다.

컨텍스트에서 배열을 열거하는 경우 기술에서 생성하는 모든 출력도 컨텍스트의 보강으로 문서에 추가됩니다. 위의 예제에서 "out"이라는 출력에는 "/document/normalized_images/0/out""/document/normalized_images/1/out" 각각의 아래에 있는 문서에 추가된 각 실행에 대한 해당 값이 있습니다.

리터럴 값

기술 입력은 기존 문서에서 쿼리된 동적 값 대신 리터럴 값을 입력으로 사용할 수 있습니다. 이 작업은 등호를 값 앞의 접두사로 지정하여 수행할 수 있습니다. 값은 숫자, 문자열 또는 부울일 수 있습니다. 문자열 값은 작은따옴표(') 또는 큰 따옴표(")로 묶을 수 있습니다.

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

복합 식

단항, 이항 및 삼항 연산자를 사용하여 값을 모두 결합할 수 있습니다. 연산자는 리터럴 값과 경로 평가의 결과 값을 결합할 수 있습니다. 식 내에서 사용되는 경우 경로는 "$("")" 사이에 묶어야 합니다.

'!'가 아닌 부울

=!false true

부정 '-'

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

더하기 '+'

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

빼기 '-'

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

곱하기 '*'

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

나누기 '/'

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

모듈로 '%'

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

보다 작음, 작거나 같음, 보다 큼, 크거나 같음 '<''<=''>''>='

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

같음 및 같지 않음 '==''!='

=15==4 false
=4==4 true
=15!=4 true
=1!=1 false

and, or 및 배타적 or 논리 연산 '&&''||''^'

=true&&true true
=true&&false false
=true||true true
=true||false true
=false||false false
=true^false true
=true^true false

삼항 연산자 '?:'

삼항 연산자를 사용하는 부울 식의 계산에 따라 다른 값을 입력에 제공할 수 있습니다.

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

괄호 및 연산자 우선 순위

연산자는 단항 연산자, 곱하기, 나누기 및 모듈로, 더하기 및 빼기, 비교, 같음, 논리 연산자 순서의 일반적인 규칙과 일치하는 우선 순위로 계산됩니다. 일반적인 연결 규칙도 적용됩니다.

괄호는 계산 순서를 변경하거나 명확히 하는 데 사용하는 데 수 있습니다.

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

참고 항목