ai_search 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 pobiera ai_search() informacje z jednego lub więcej indeksów wyszukiwania AI. Mając zapytanie w języku naturalnym i indeksy skonfigurowane jako źródła wiedzy, funkcja generuje zoptymalizowane zapytania wyszukiwania, pobiera i deduplikuje wyniki między źródłami, klasyfikuje je według trafności oraz zwraca najbardziej istotne dokumenty. Domyślnie syntetyzuje także ugruntowaną odpowiedź w języku naturalnym na podstawie odzyskanych dokumentów.

Wykorzystaj do wzbogacania danych operacyjnych o istotny kontekst na dużą skalę, budowania potoków generowania wsadowego i uzupełnionego generowania (RAG) lub udostępniania ai_search pobierania jako narzędzia do systemu AI złożonego — wszystko to z jednego wywołania funkcji SQL.

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.

Requirements

  • Databricks Runtime 18.2 lub nowszy.
  • Jeden lub więcej indeksów wyszukiwania AI do wykorzystania jako źródła wiedzy.
  • 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.
  • Funkcja ta ai_search jest dostępna za pomocą notatników Databricks, edytora SQL, workflowów Databricks, zadań lub Spark Declarative Pipelines w Lakeflow.

Składnia

ai_search(query, knowledge_sources [, instructions] [, options])

Arguments

  • query: wyrażenie STRING lub VARIANT. Zapytanie do wyszukiwania w języku naturalnym. VARIANT wejście, takie jak wyjście innej funkcji AI, jest wewnętrznie serializowane do ciągu JSON.
  • knowledge_sources: Wyrażenie VARIANT lub STRING zawierające tablicę JSON konfiguracji źródeł wiedzy do przeszukiwania. Zobacz Konfiguracja źródła wiedzy. Możesz określić do 10 źródeł wiedzy.
  • instructions: Opcjonalne STRING wyrażenie do 4 000 znaków. Instrukcje w języku naturalnym, które kierują generowaniem zapytań, generowaniem filtrów metadanych i ponownym rankingiem. Na przykład 'Prefer official documentation over internal articles when both cover the same topic.'
  • options: opcjonalny element MAP<STRING, STRING>. Obsługiwane klucze:
    • 'version': Wersja funkcjonalna do użycia.
    • 'generate_answer': 'true' (wartość domyślna) lub 'false'. Gdy 'true', funkcja syntetyzuje ugruntowaną odpowiedź w języku naturalnym z odzyskanych dokumentów i zwraca ją w answer polu. Ustaw na 'false' tylko do zwrotu dokumentów.

Konfiguracja źródła wiedzy

Argument knowledge_sources dotyczy tablicy JSON. Każdy element to koperta {type, config} . Pole type to identyfikuje, jak ai_search łączy się ze źródłem i jest oddzielne od nazwy zasobu skierowanego do klienta. Dla indeksu wyszukiwania AI ustaw type dosłownie vector_search. Pole config zawiera konfigurację specyficzną dla źródła.

Key Wymagane Opis
type Yes Typ źródła wiedzy. Obecnie obsługiwany jest tylko vector_search.
config Yes Obiekt zawierający specyficzną dla źródła konfigurację. Dla vector_search, zobacz konfigurację indeksu wyszukiwania AI.

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 zwracała jako page_content.
doc_uri_col Yes Kolumna w indeksie zawierająca URI dokumentu zwracała jako doc_uri.
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.

Poniższy przykład konfiguruje jeden indeks wyszukiwania AI jako źródło wiedzy:

[
  {
    "type": "vector_search",
    "config": {
      "index_name": "prod_catalog.docs.support_articles",
      "text_col": "article_body",
      "doc_uri_col": "article_url",
      "filter_columns": "product,language"
    }
  }
]

Aby zbudować indeks AI Search z surowych dokumentów, użyj ai_parse_document i ai_prep_search tworz gotowe do wyszukiwania fragmenty w tabeli Delta. Następnie stwórz indeks wyszukiwania AI z tej tabeli. Po uruchomieniu indeksu używamy jego trzypoziomowej nazwy jako index_name.

Returns

A VARIANT z następującym schematem:

{
  "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
}
Pole Typ Opis
document ARRAY Zestaw odzyskanych dokumentów, uporządkowanych według znaczenia.
document[].page_content STRING Treść tekstu pobranego fragmentu.
document[].doc_uri STRING URI dokumentu źródłowego.
document[].metadata MAP Dodatkowe metadane z indeksu.
answer STRING Ugruntowana odpowiedź w naturalnym języku syntetyzowana z odzyskanych dokumentów. null gdy generowanie odpowiedzi jest wyłączone lub gdy nie są pobierane żadne dokumenty.

Examples

Poniższy przykład wyszukuje jeden indeks AI Search i zwraca dokumenty o rankingu oraz osadzoną odpowiedź:

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;

Wyszukiwanie wieloźródłowe z instrukcjami

Poniższy przykład wyszukuje dwa indeksy AI Search i wykorzystuje je instructions do sterowania generowaniem zapytań oraz rerankingiem:

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;

Wzbogać tabelę o wyszukiwanie i wygenerowaną odpowiedź

Poniższy przykład wzbogaca każde zgłoszenie wsparcia odpowiednią dokumentacją i sugerowaną rezolucją. Ponieważ generowanie odpowiedzi jest domyślnie włączone, sugerowana rozdzielczość jest dostępna bezpośrednio w answer terenie — nie jest wymagany osobny etap generowania.

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;

Aby kontrolować format wyjściowy lub użyć konkretnego modelu, ustaw 'generate_answer' na i 'false' łańcuch połącz pobrane dokumenty ai_query .

Ograniczenia

  • ai_search obecnie obsługuje tylko indeksy wyszukiwania AI. Ustaw "type": "vector_search" dla każdego źródła wiedzy.
  • Możesz określić do 10 źródeł wiedzy na jedno połączenie.
  • Argument instructions jest ograniczony do 4 000 znaków.