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 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_searchjest 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żenieSTRINGlubVARIANT. Zapytanie do wyszukiwania w języku naturalnym.VARIANTwejście, takie jak wyjście innej funkcji AI, jest wewnętrznie serializowane do ciągu JSON. -
knowledge_sources: WyrażenieVARIANTlubSTRINGzawierają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: OpcjonalneSTRINGwyraż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 elementMAP<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ą wanswerpolu. 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
answerz pustącitationstablicą oznacza, że wygenerowano odpowiedź, ale nie wybrano zwróconego fragmentu. - Null
answerz pustą tablicącitationsoznacza, że generowanie cytowań zostało przeprowadzone, ale nie wygenerowało cytowań, ponieważ nie wygenerowano odpowiedzi opartej na podstawie. - Wartość null
citationsoznacza, że generowanie cytowań nie było dostępne lub nie zostało wywołane, w tym gdyqueryjest SQLNULL.
Examples
Wyszukiwanie podstawowe
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_searchobecnie 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
instructionsjest ograniczony do 4 000 znaków.