ai_enrich funkcja

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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_enrich jest 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żenie STRING lub VARIANT. Rząd wzbogacający ją. VARIANT wejście, takie jak wyjście innej funkcji AI, np. ai_parse_document, jest wewnętrznie serializowane do ciągu JSON.

  • schema: Literal STRING , który definiuje kolumny do generowania. Używa tej samej gramatyki co ai_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, booleani enum . 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" }
      }
      
  • knowledge_sources: Opcjonalne VARIANT wyrażenie zawierające STRING tablicę JSON konfiguracji źródeł wiedzy używanych do uziemienia wygenerowanych wartości. Zobacz Konfiguracja źródła wiedzy.

  • options: opcjonalny element MAP<STRING, STRING>. Obsługiwane klucze:

    • 'version': Wersja funkcjonalna do użycia.
    • 'instructions': Do STRING 20 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, gdzie rationale wyjaś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 (enableRationale jest 'true'), każdy liść jest obiektem {rationale, value} , gdzie rationale jest krótkim wyjaśnieniem sposobu wyprowadzenia tej wartości, a value jest wartością generowaną, typowaną zgodnie ze schematem. Gdy enableRationale jest , 'false'każdy liść jest obiektem {value} .
  • Pole value to sytuacja, null gdy 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;

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_search podstawie źródła wiedzy jest dostępne tylko w niektórych regionach i miejscach pracy. Zobacz wyszukiwanie w sieci na Azure Databricks.
  • Opcja instructions jest ograniczona do 20 000 znaków.