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.
    • 'generate_citations': lub 'true''false' (domyślnie). Gdy 'true', funkcja zwraca cytowania pokazujące, które fragmenty pobrał model do wsparcia wygenerowanej odpowiedzi. Ta opcja musi 'generate_answer' być .'true'

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
  "citations": [               // Present only when generate_citations is true
    {
      "document_index": INT    // Position in the document array above, starting at 0
    }
  ]
}
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.
citations ARRAY Występuje tylko wtedy, gdy generate_citations jest true. Każdy element wskazuje na zwrócony fragment przez jego pozycję opartą na zerze (document_index) w tablicy document , więc możesz zobaczyć, których fragmentów model użył do wsparcia swojej odpowiedzi. Pusta tablica oznacza, że generowanie cytowań zostało przeprowadzone, ale nie wygenerowało cytowań. Wartość ta występuje, null gdy generowanie cytowań jest niedostępne lub nie jest wywoływane, w tym gdy query jest SQL NULL. Te cytowania są najlepszym wyrazem modelu dotyczącymi fragmentów wspierających, a nie dowodem na konkretne twierdzenie.

Gdy generate_citations jest , trueczytaj answer pola i citations razem. Każda kombinacja wartości oznacza coś innego:

  • Nie-null answer z pustą citations tablicą oznacza, że wygenerowano odpowiedź, ale nie wybrano zwróconego fragmentu.
  • Null answer z pustą tablicą citations oznacza, że generowanie cytowań zostało przeprowadzone, ale nie wygenerowało cytowań, ponieważ nie wygenerowano odpowiedzi opartej na podstawie.
  • Wartość null citations oznacza, że generowanie cytowań nie było dostępne lub nie zostało wywołane, w tym gdy query jest SQL NULL.

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;

Zwróć chunks wspierające dla wygenerowanej odpowiedzi

Poniższy przykład zwraca podzbiór odzyskanych fragmentów, które model wybrał jako wspierające 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"
    }
  }]'),
  options => map('generate_citations', 'true')
) AS result;

Tablica document nadal zawiera pełny zestaw zwróconych chunków. Użyj w każdym cytowaniu do document_index wybrania wspierających z tego zestawu. Te indeksy są ważne tylko w jednej odpowiedzi. Mogą się zmieniać między połączeniami, podczas zmiany rankingu lub aktualizacji indeksu.

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.