적용 대상:
Databricks SQL
Databricks Runtime
Important
이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.
ai_search() 이 기능은 하나 이상의 AI 검색 인덱스에서 정보를 검색합니다. 자연어 쿼리와 지식 소스로 구성된 인덱스가 주어지면, 이 함수는 최적화된 검색 쿼리를 생성하고, 출처 간 결과를 검색하고 중복 제거하며, 관련성에 따라 재순위를 매기고, 가장 관련성 높은 문서를 반환합니다. 기본적으로 검색된 문서 위에 근거 있는 자연어 답변을 합성합니다.
ai_search 대규모 운영 데이터를 관련 맥락으로 풍부하게 하거나, 배치 검색 증강(RAG) 파이프라인을 구축하거나, 복합 AI 시스템에 검색을 도구로 노출하는 데 사용할 수 있습니다 — 모두 단일 SQL 함수 호출에서 가능합니다.
데이터 보안
문서 데이터는 Databricks 보안 경계 내에서 처리됩니다. Databricks는 AI 함수 호출에 전달되는 매개변수를 저장하지 않지만, Databricks 런타임 버전과 같은 메타데이터 실행 세부 사항은 유지합니다.
요구 사항
- Databricks Runtime 18.2 이상.
- 지식 출처로 사용할 하나 이상의 AI 검색 색인 .
- 서버리스 컴퓨트를 사용할 경우, 서버리스 환경 버전은 3 이상으로 설정해야 하며, 이는 .과 같은
VARIANT기능을 가능하게 하기 때문입니다. -
ai_search이 기능은 Databricks 노트북, SQL 편집기, Databricks 워크플로우, 작업 또는 Lakeflow의 Spark 선언적 파이프라인을 통해 이용할 수 있습니다.
Syntax
ai_search(query, knowledge_sources [, instructions] [, options])
Arguments
-
query: ASTRING또는VARIANT식입니다. 자연어 검색 쿼리입니다.VARIANT다른 AI 함수의 출력과 같은 입력은 내부적으로 JSON 문자열로 직렬화됩니다. -
knowledge_sources:VARIANTSTRING또는 JSON 배열을 포함하는 지식 소스 구성의 표현식을 검색할 수 있습니다. 지식 소스 구성(Knowledge source configuration)을 참조하세요. 최대 10개의 지식 출처를 지정할 수 있습니다. -
instructions: 최대 4,000자 수 있는 선택적STRING표현식입니다. 쿼리 생성, 메타데이터 필터 생성, 재랭킹을 안내하는 자연어 지침입니다. 예를 들어'Prefer official documentation over internal articles when both cover the same topic.' -
options: 선택 사항MAP<STRING, STRING>입니다. 지원되는 키:-
'version': 사용할 기능 버전. -
'generate_answer':'true'(기본값) 또는'false'. 이 함수'true'는 검색된 문서에서 근거 있는 자연어 답변을 합성하여 현장에answer반환합니다. 서류만 반환하도록 설정'false'하세요.
-
지식 소스 구성
knowledge_sources 인자는 JSON 배열입니다. 각 요소는 하나의 봉투입니다 {type, config} . 이 필드는 type 소스와 어떻게 연결되는지를 ai_search 나타내며, 고객 대상 리소스 이름과는 별개입니다. AI 검색 인덱스의 경우, 문자 그대로 type.vector_search 필드는 config 소스별 특정 구성을 포함합니다.
| Key | Required | 설명 |
|---|---|---|
type |
예 | 지식 원천 유형. 현재는 vector_search만 지원됩니다. |
config |
예 | 소스별 구성을 포함하는 객체입니다. 이에 대해서는 vector_searchAI 검색 인덱스 구성을 참조하세요. |
AI 검색 인덱스 구성
로 설정된 typeAI 검색 인덱스 vector_search 의 경우, config 다음 키를 수용합니다:
| Key | Required | 설명 |
|---|---|---|
index_name |
예 | 예를 들어, Unity 카탈로그의 AI 검색 인덱스 3단계 명칭은 다음과 같습니다 catalog.schema.my_index. |
text_col |
예 | 문서 텍스트를 포함하는 인덱스 내 열은 로 반환 page_content되었습니다. |
doc_uri_col |
예 | 문서 URI를 포함하는 인덱스 열은 로 반환 doc_uri되었습니다. |
filter_columns |
No | 메타데이터 필터링에 사용할 수 있는 쉼표 구분된 문자열 또는 JSON 열 배열입니다. 누락 시 리스트는 예약, 텍스트, 문서 URI 열을 제외한 인덱스 스키마에서 파생됩니다. |
다음 예시는 하나의 AI 검색 인덱스를 지식 소스로 구성합니다:
[
{
"type": "vector_search",
"config": {
"index_name": "prod_catalog.docs.support_articles",
"text_col": "article_body",
"doc_uri_col": "article_url",
"filter_columns": "product,language"
}
}
]
원시 문서에서 AI 검색 인덱스를 만들려면 델타 테이블에서 검색 준비가 가능한 청크를 생성 ai_parse_documentai_prep_search 하세요. 그 테이블에서 AI 검색 인덱스를 생성 하세요. 인덱스가 온라인에 올라가면, 3단계 이름으로 사용 index_name하세요.
Returns
다음과 같은 스키마를 가진 A VARIANT :
{
"document": [
{
"page_content": STRING, // Text content of the retrieved chunk
"doc_uri": STRING, // URI of the source document
"metadata": MAP // Additional metadata from the index
}
],
"answer": STRING // Grounded answer synthesized from the retrieved
// documents, or null
}
| Field | Type | 설명 |
|---|---|---|
document |
ARRAY |
관련 순서대로 정렬된 조회된 문서 배열. |
document[].page_content |
STRING |
검색된 청크의 텍스트 내용. |
document[].doc_uri |
STRING |
원본 문서의 URI. |
document[].metadata |
MAP |
색인에서 추가 메타데이터를 제공합니다. |
answer |
STRING |
검색된 문서들을 종합한 근본적인 자연어 답변.
null 답변 생성이 비활성화되었거나 문서가 검색되지 않을 때. |
예시
기본 검색
다음 예시는 하나의 AI 검색 인덱스를 검색하여 순위가 매겨진 문서와 근거 있는 답변을 반환합니다:
SELECT ai_search(
'How do I configure auto-scaling for my SQL warehouse?',
PARSE_JSON('[{
"type": "vector_search",
"config": {
"index_name": "prod_catalog.docs.support_articles",
"text_col": "article_body",
"doc_uri_col": "article_url",
"filter_columns": "product,language"
}
}]')
) AS result;
지침이 포함된 다중 소스 검색
다음 예시는 두 개의 AI 검색 인덱스를 검색하고 쿼리 생성 및 재순위 조정에 사용합니다 instructions :
SELECT ai_search(
'What are the networking requirements for serverless SQL warehouses?',
PARSE_JSON('[
{
"type": "vector_search",
"config": {"index_name": "prod_catalog.docs.public_docs", "text_col": "content", "doc_uri_col": "doc_url"}
},
{
"type": "vector_search",
"config": {"index_name": "prod_catalog.docs.internal_kb", "text_col": "body", "doc_uri_col": "source_uri"}
}
]'),
'Focus on firewall rules and VPC/VNet configuration. Prefer official documentation over internal articles when both cover the same topic.'
) AS result;
검색과 생성된 답변으로 테이블을 풍부하게 만듭니다
다음 예시는 관련 문서와 제안된 해결책으로 각 지원 티켓을 풍부하게 합니다. 답변 생성이 기본적으로 켜져 있기 때문에, 제안된 해상도는 현장에서 answer 직접 확인할 수 있으며, 별도의 생성 단계가 필요하지 않습니다.
SELECT
ticket_id,
customer_description,
ai_search(
customer_description,
PARSE_JSON('[{
"type": "vector_search",
"config": {
"index_name": "support.docs.product_documentation",
"text_col": "content",
"doc_uri_col": "doc_url"
}
}]'),
'Find product documentation, known issues, and troubleshooting guides relevant to this support ticket.'
):answer::STRING AS suggested_resolution
FROM support.tickets.open_tickets;
출력 형식을 제어하거나 특정 모델을 사용하려면 대신 조 'generate_answer' 회된 문서를 에 체인 'false' 하여 설정 ai_query 하세요.
Limitations
-
ai_search현재는 AI 검색 인덱스만 지원합니다. 각 지식 소스마다 설정"type": "vector_search"하세요. - 통화당 최대 10개의 지식 소스를 지정할 수 있습니다.
- 논증은
instructions4,000자로 제한됩니다.