.qna 파일 형식

적용 대상: SDK v4

참고 항목

Azure AI QnA Maker는 2025년 3월 31일에 사용 중지됩니다. 2022년 10월 1일부터 새로운 QnA Maker 리소스 또는 참조 자료를 만들 수 없습니다. 이제 최신 버전의 질문 및 답변 기능이 Azure AI 언어의 일부로 사용할 수 있습니다.

Azure AI Language의 기능인 사용자 지정 질문 답변은 QnA Maker 서비스의 업데이트된 버전입니다. Bot Framework SDK의 질문 및 답변 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.

.qna 파일에는 QnAmaker.ai 개념에 대한 Markdown 같은 텍스트 기반 정의가 포함되어 있습니다. 이 문서에서는 .qna 파일 형식을 통해 표현되는 다양한 개념을 설명합니다.

메모 추가

주석을 만드는 데 사용합니다 > . 예를 들면 다음과 같습니다.

> This is a comment and will be ignored

질문 및 답변 쌍

.qna 파일 및 파서는 질문 및 답변 정의를 지원합니다.

기본 질문 및 답변 정의의 구문은 다음과 같습니다.

# ? Question
[list of question variations]
```
Answer
```

다음은 질문 및 답변 정의의 예입니다.

> # QnA Definitions
### ? who is the ceo?
```
You can change the default message if you use the QnAMakerDialog.
For details, see [Azure AI Bot Service documentation](/articles/adaptive-dialog/adaptive-dialog-prebuilt-actions.md).
```


### ? How do I programmatically update my KB?
```
You can use our REST apis to manage your KB.
\#1. See here for details: https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa
```

markdown 형식 식별자는 answer 선택 사항입니다.

여러 질문

질문에 변형을 추가하여 동일한 답변에 여러 질문을 추가할 수 있습니다.

### ? Aren't you feeling happy today?
- Feeling cheerful?
```markdown
I'm quite happy, thank you.
```

QnAMaker 필터

QnA Maker의 필터는 검색 결과의 범위를 좁히고, 답변을 향상하고, 컨텍스트를 저장하는 데 사용할 수 있는 간단한 키-값 쌍입니다.

필터를 추가하려면 다음 구문을 사용합니다.

***Filters:***
- name = value
- name = value

필터를 사용하는 방법의 예는 다음과 같습니다.

### ? Where can I get coffee?
- I need coffee

**Filters:**
- location = seattle

```markdown
You can get coffee in our Seattle store at 1 pike place, Seattle, WA
```

### ? Where can I get coffee?
- I need coffee

**Filters:**
- location = portland

```markdown
You can get coffee in our Portland store at 52 marine drive, Portland, OR
```

QnA Maker PDF 파일 수집

QnA Maker는 KB를 만드는 동안 PDF 파일 수집도 지원합니다. URL 참조 체계를 사용하여 수집할 QnA Maker용 파일을 추가할 수 있습니다. URI의 콘텐츠 형식이 텍스트 또는 HTML이 아닌 경우 파서는 QnA Maker에서 수집할 파일 컬렉션에 추가합니다.

[SurfaceManual.pdf](https://download.microsoft.com/download/2/9/B/29B20383-302C-4517-A006-B0186F04BE28/surface-pro-4-user-guide-EN.pdf)

외부 참조

외부 참조는 .qna 파일에서 지원되며 Markdown 링크 구문을 사용합니다.

다른 .qna 파일 참조

를 사용하여 [link name](<.qna file name>)다른 .qna 파일에 대한 참조입니다. 참조는 포함하는 .qna 파일의 절대 경로 또는 상대 경로일 수 있습니다.

.qna 파일이 포함된 폴더에 대한 참조

다른 .qna 파일이 있는 폴더에 대한 참조는 다음을 통해 지원됩니다.

  • [link name](<.qna file path>/*): 지정된 절대 경로 또는 상대 경로에서 .qna 파일을 찾습니다.
  • [link name](<.qna file path>/**): 하위 폴더를 포함하여 지정된 절대 또는 상대 경로에서 .qna 파일을 재귀적으로 찾습니다.

URL 참조

를 통해 [link name](<URL>)KB를 만드는 동안 수집할 QnAMaker의 URL을 참조합니다.

특정 파일의 참조

의도 섹션 아래의 특정 파일에 정의된 발화에 대한 참조를 추가하거나 QnA 쌍으로 추가할 수도 있습니다.

  • [link name](<.lu file path>#<INTENT-NAME>): .lu 파일의 INTENT-NAME> 아래에 <있는 모든 발화를 찾아 참조가 지정된 질문 목록에 추가합니다.
  • [link name](<.lu file path>#*utterances*): .lu 파일의 모든 발화를 찾아 참조가 지정된 질문 목록에 추가합니다.
  • [link name](<.qna file path>#?): .qna 파일에 정의된 모든 QnA 쌍에서 질문을 찾아서 이 참조가 지정된 발화 목록에 추가합니다.
  • [link name](<.qna folder>/*#?): 지정된 폴더의 모든 .qna 파일에서 모든 질문을 찾아서 이 참조가 지정된 발화 목록에 추가합니다.

위의 참조 예는 다음과 같습니다.

> QnA URL reference
[QnaURL](/azure/ai-services/qnamaker/)

> Include all content in ./kb1.qna
[KB1](./kb1.qna)

> Look for all .qna files under a path
[ChitChat](./chitchat/*)

> Recursively look for .qna files under a path including subfolders.
[ChitChat](../chitchat/resources/**)

모델 설명

.qna 파일에 LUIS 애플리케이션 또는 QnA Maker KB에 대한 구성 정보를 포함하면 파서가 LU 콘텐츠를 올바르게 처리하도록 지시할 수 있습니다.

참고 항목

LUIS(Language Understanding)는 2025년 10월 1일에 사용 중지됩니다. 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 이제 최신 버전의 언어 이해가 Azure AI Language의 일부로 제공됩니다.

Azure AI Language의 기능인 CLU(대화형 언어 이해)는 업데이트된 LUIS 버전입니다. Bot Framework SDK의 언어 이해 지원에 대한 자세한 내용은 자연어 이해를 참조하세요.

구성 정보를 > 추가하는 방법은 다음과 같습니다. !#:

> !# @<property> = <value>
> !# @<scope>-<property> = <value>
> !# @<scope>-<property> = <semicolon-delimited-key-value-pairs>

CLI 인수를 통해 명시적으로 전달된 모든 정보는 .qna 파일의 정보를 재정의합니다.

> Parser instruction - this is optional; unless specified, the parser will default to the latest version.
> !# @version = 1.0

> QnA Maker KB description
> !# @kb.name = my qna maker kb name

> Source for a specific QnA pair
> !# @qna.pair.source = <source value>

다중 턴 콘텐츠

멀티턴 콘텐츠는 Markdown 링크 표기법을 사용하여 .qna 형식으로 표현됩니다. 링크는 다음과 같은 방법으로 지정됩니다.

- [display text](#<ID or question>)

필요에 따라 질문에 컨텍스트적으로만 사용할 수 있는 프롬프트를 포함 context-only 할 수 있습니다. 사용에 대한 자세한 내용은 후속 프롬프트 로 기존 질문 및 답변 쌍을 추가하는 방법에 대한 context섹션을 참조하세요.

- [tell me a joke](#?joke) `context-only`

후속 프롬프트 추가

개발자는 후속 프롬프트를 만드는 두 가지 옵션이 있습니다. 즉, 질문을 후속 프롬프트로 직접 사용하거나 명시적 ID를 QnA 쌍에 할당합니다.

직접 질문 사용

링크 텍스트가 question인 첫 번째 QnA 쌍이 프롬프트로 추가됩니다. 더 명시적인 제어가 필요한 경우 ID를 대신 사용합니다.

질문을 직접 사용하는 경우 Markdown 규칙을 사용하고 공백을 하이픈으로 대체합니다(예: 대신 #?when is the portland store open사용#?when-is-the-portland-store-open). 파서는 링크를 찾기 위해 최선을 다할 것입니다.

# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#?seattle)
- [Portland store](#?when-is-the-portland-store-open)

# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```

# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```

링크는 실제로 대부분의 Markdown 렌더러에서 선택 가능한 링크로 렌더링되지 않습니다.

QnA 쌍에 명시적 ID 할당

번호를 사용하여 각 프롬프트에 ID를 할당합니다. 아래 예제에서는 각 저장소에 대한 프롬프트에 다른 숫자 값이 할당된 것을 볼 수 있습니다.

# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#1)
- [Portland store](#2)

<a id = "1"></a>

# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```

<a id = "2"></a>

# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```

추가 리소스