Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Databricks Runtime
Ważna
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Funkcja ai_enrich() generuje nowe kolumny dla wiersza na podstawie schematu, który zdefiniujesz. Na podstawie treści wejściowej i docelowego schematu funkcja wywołuje model AI, który wypełnia każde pole. Może opcjonalnie osadzić wygenerowane wartości na jednym lub więcej źródłach wiedzy , takich jak indeks AI Search czy wyszukiwanie na żywo, tak aby wartości odzwierciedlały Twoje własne dane lub informacje o up-todaty, a nie tylko dane treningowe modelu.
Użyj ai_enrich do dodawania atrybutów pochodnych do tabeli na dużą skalę. Możesz tagować i kategoryzować rekordy, uzupełniać brakujące metadane lub przypisywać zbadany kontekst do każdego wiersza z pojedynczego wywołania funkcji SQL. Domyślnie każde wygenerowane pole zwracane jest z krótkim uzasadnieniem wyjaśniającym sposób wyprowadzenia wartości.
Wymagania
- Databricks Runtime 18.2 lub nowszy.
- Jeśli korzystasz z obliczeń serwerowych, wersja środowiska serwerless musi być ustawiona na 3 lub wyższą, ponieważ umożliwia to funkcje takie jak
VARIANT. - Aby ugruntować wzbogacenie indeksu AI Search, potrzebujesz jednego lub więcej indeksów AI Search , które będą wykorzystywane jako źródła wiedzy.
- Funkcja ta
ai_enrichjest dostępna za pomocą notatników Databricks, edytora SQL, workflowów Databricks, zadań lub Spark Declarative Pipelines w Lakeflow.
Bezpieczeństwo danych
Dane dokumentu są przetwarzane w ramach strefy bezpieczeństwa Databricks. Databricks nie przechowuje parametrów przekazywanych do wywołań funkcji AI, ale zachowuje szczegóły metadanych, takie jak używana wersja Databricks Runtime.
Składnia
ai_enrich(content, schema [, knowledge_sources] [, options])
Arguments
content: wyrażenieSTRINGlubVARIANT. Rząd wzbogacający ją.VARIANTwejście, takie jak wyjście innej funkcji AI, np.ai_parse_document, jest wewnętrznie serializowane do ciągu JSON.schema: LiteralSTRING, który definiuje kolumny do generowania. Używa tej samej gramatyki coai_extract. Schemat może być:Schemat prosty: tablica JSON z nazwami pól, które są generowane jako ciągi znaków.
["industry", "headquarters_country", "year_founded"]Zaawansowany schemat: Obiekt JSON z informacjami o typie, opisami i zagnieżdżonymi strukturami.
- Obsługuje
stringtypy , ,integernumber,booleanienum. Przeprowadza walidację typu. Maksymalnie 500 wartości wyliczenia. - Obsługuje zagnieżdżone obiekty używając
"type": "object"z ."properties" - Obsługuje tablice prymitywów lub obiektów używając
"type": "array"z ."items" - Opcjonalne pole dla każdej właściwości służące
"description"do wyznaczania wygenerowanej wartości.
{ "hq_address": { "type": "object", "description": "Registered headquarters address", "properties": { "city": { "type": "string" }, "country": { "type": "string" } } }, "founding_team": { "type": "array", "description": "Full names of the founders", "items": { "type": "string" } }, "founding_year": { "type": "integer", "description": "Year the company was founded" } }- Obsługuje
knowledge_sources: OpcjonalneVARIANTwyrażenie zawierająceSTRINGtablicę JSON konfiguracji źródeł wiedzy używanych do uziemienia wygenerowanych wartości. Zobacz Konfiguracja źródła wiedzy.options: opcjonalny elementMAP<STRING, STRING>. Obsługiwane klucze:-
'version': Wersja funkcjonalna do użycia. -
'instructions': DoSTRING20 000 znaków. Wskazówki w języku naturalnym opisujące zadanie wzbogacające. Opcjonalnie; same nazwy pól schematu mogą napędzać wzbogacenie. Na przykład'Infer attributes for each company from its public profile.' -
'enableRationale':'true'(wartość domyślna) lub'false'. Gdy'true', każde wygenerowane pole zwraca się jako{rationale, value}obiekt, gdzierationalewyjaśnia, jak wartość została wyprowadzona. Ustaw na'false'tylko zwrot{value}.
-
Konfiguracja źródła wiedzy
Argument knowledge_sources dotyczy tablicy JSON. Każdy element to koperta {type, description, config} . Pole wskazuje, type jak ai_enrich pobiera kontekst uziemienia, a pole config zawiera konfigurację specyficzną dla źródła.
| Key | Wymagane | Opis |
|---|---|---|
type |
Yes | Typ źródła wiedzy. Jeden z vector_search (indeksu wyszukiwania AI) lub web_search. |
description |
No | Opis źródła w języku naturalnym. Używa się, by pomóc funkcji zdecydować, kiedy i jak ją odzyskać. |
config |
Yes | Obiekt zawierający specyficzną dla źródła konfigurację. Zobacz konfigurację indeksu wyszukiwania AI dla vector_search oraz konfigurację wyszukiwania internetowego dla web_search. |
Konfiguracja indeksu wyszukiwania AI
Dla indeksu wyszukiwania AI ustawionym type na , vector_searchconfig akceptuje następujące klucze:
| Key | Wymagane | Opis |
|---|---|---|
index_name |
Yes | Na przykład catalog.schema.my_indextrzypoziomowa nazwa indeksu AI Search w katalogu Unity . |
text_col |
Yes | Kolumna w indeksie zawierająca tekst dokumentu. |
doc_uri_col |
Yes | Kolumna w indeksie zawierająca URI dokumentu. |
filter_columns |
No | Ciąg kolumn oddzielony przecinkami lub tablica kolumn JSON dostępna do filtrowania metadanych. Po pominięciu lista jest wyprowadzana ze schematu indeksu, z wyłączeniem kolumn URI zarezerwowanych, tekstowych i dokumentów. |
Możesz skonfigurować więcej niż jedno vector_search źródło podczas jednego połączenia.
Konfiguracja wyszukiwania w sieci
Dla wyszukiwania w sieci ustawionej type na , web_searchconfig akceptuje następujące klucze opcjonalne. Wyszukiwanie w sieci odbywa się przez wyszukiwanie na Azure Databricks; zobacz Ograniczenia dostępności.
| Key | Wymagane | Opis |
|---|---|---|
allowed_domains |
No | Tablica domen JSON do ograniczenia wyszukiwania. Po ustawieniu używane są tylko wyniki z tych dziedzin. |
blocked_domains |
No | Tablica domen JSON do wykluczenia z wyszukiwania. |
Możesz skonfigurować maksymalnie jedno web_search źródło na połączenie.
Poniższy przykład konfiguruje indeks wyszukiwania AI oraz wyszukiwanie internetowe jako źródła wiedzy:
[
{
"type": "vector_search",
"description": "Internal product catalog",
"config": {
"index_name": "prod_catalog.docs.product_catalog",
"text_col": "description",
"doc_uri_col": "product_url"
}
},
{
"type": "web_search",
"config": {
"allowed_domains": ["wikipedia.org"]
}
}
]
Returns
A VARIANT z następującym schematem:
{
"response": { ... }, // Generated columns matching the provided schema. Each leaf is returned as an object (see below).
"error_message": null, // null on success, or an error message on failure
"metadata": { ... } // Metadata about the response, including grounding sources.
}
Pole response zawiera wygenerowane kolumny:
- Nazwy i typy pól odpowiadają definicji schematu. Zagnieżdżone obiekty i tablice zachowują swój pierwotny kształt.
- Domyślnie (
enableRationalejest'true'), każdy liść jest obiektem{rationale, value}, gdzierationalejest krótkim wyjaśnieniem sposobu wyprowadzenia tej wartości, avaluejest wartością generowaną, typowaną zgodnie ze schematem. GdyenableRationalejest ,'false'każdy liść jest obiektem{value}. - Pole
valueto sytuacja,nullgdy nie może być wygenerowane.
Pole metadata zawiera metadane dotyczące odpowiedzi. Gdy wiersz jest uziemiony przez źródło wiedzy, metadata.sources jest to tablica identyfikatorów dokumentów źródłowych, które uziemiły ten wiersz. Uziemienie jest na poziomie rzędów, więc sources dotyczy całego rzędu, a nie pojedynczych pól.
Jeśli content jest NULL, wynik to NULL.
Examples
Podstawowe wzbogacenie
Poniższy przykład generuje dwie kolumny dla każdej nazwy firmy, korzystając z wiedzy modelu. Ponieważ rationale jest domyślnie włączone, każde pole zwracane jest jako obiekt:{rationale, value}
SELECT ai_enrich(
company_name,
'["industry", "headquarters_country"]'
) AS result
FROM sales.accounts.companies;
Schemat strukturalny z instrukcjami
Poniższy przykład definiuje schemat typowy, dodaje instructions do kierowania zadaniem i wyłącza racjonalność tak, aby każde pole zwracało wartość zwykłą:
SELECT ai_enrich(
review_text,
'{
"sentiment": {"type": "string", "description": "positive, negative, or neutral"},
"topics": {"type": "array", "items": {"type": "string"}},
"requires_follow_up": {"type": "boolean"}
}',
options => map(
'instructions', 'Analyze the customer review and categorize it for the support team.',
'enableRationale', 'false'
)
) AS result
FROM support.reviews.customer_reviews;
Wygeneruj zagnieżdżony schemat
Poniższy przykład generuje zagnieżdżony schemat dla każdej firmy — obiekt adresowy ustrukturyzowany, tablicę nazw założycieli, typowy rok oraz zagnieżdżoną rundę finansowania:
SELECT ai_enrich(
company_name,
'{
"hq_address": {
"type": "object",
"description": "Registered headquarters address",
"properties": {
"city": {"type": "string"},
"country": {"type": "string"}
}
},
"founding_team": {"type": "array", "description": "Full names of the founders", "items": {"type": "string"}},
"founding_year": {"type": "integer", "description": "Year the company was founded"},
"latest_funding_round": {
"type": "object",
"properties": {
"stage": {"type": "string", "description": "Funding stage, for example Seed or Series A"},
"amount_usd": {"type": "number", "description": "Amount raised in USD"}
}
}
}'
) AS result
FROM sales.accounts.companies;
Wzbogacenie podstaw w indeksie wyszukiwania AI
Poniższy przykład wzbogaca każde zgłoszenie wsparcia polami opartymi na indeksie AI Search dokumentacji produktu, tak aby wygenerowane wartości pochodziły z Twoich własnych treści:
SELECT
ticket_id,
ai_enrich(
customer_description,
'{
"affected_product": {"type": "string"},
"suggested_resolution": {"type": "string"},
"documentation_url": {"type": "string"}
}',
PARSE_JSON('[{
"type": "vector_search",
"description": "Product documentation and troubleshooting guides",
"config": {
"index_name": "support.docs.product_documentation",
"text_col": "content",
"doc_uri_col": "doc_url"
}
}]')
) AS result
FROM support.tickets.open_tickets;
Wzbogacanie gruntu za pomocą wyszukiwania w sieci
Poniższy przykład wzbogaca każdy wiersz firmy o informacje o up-to-dacie pobranej z internetu:
SELECT ai_enrich(
company_name,
'["recent_funding_round", "latest_headline"]',
PARSE_JSON('[{
"type": "web_search",
"config": {"allowed_domains": ["reuters.com", "bloomberg.com"]}
}]'),
options => map('instructions', 'Find the most recent, verifiable information for each company.')
) AS result
FROM sales.accounts.companies;
Limitations
- Uziemienie na
web_searchpodstawie źródła wiedzy jest dostępne tylko w niektórych regionach i miejscach pracy. Zobacz wyszukiwanie w sieci na Azure Databricks. - Opcja
instructionsjest ograniczona do 20 000 znaków.