Funkcja vector_search
Dotyczy: Databricks SQL
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Funkcja vector_search()
umożliwia wykonywanie zapytań względem indeksu wyszukiwania wektorów mozaiki sztucznej inteligencji przy użyciu języka SQL.
Wymagania
- Ta funkcja nie jest dostępna w klasycznych magazynach SQL.
- Aby uzyskać więcej informacji, zobacz stronę cennika usługi Databricks SQL.
- Ta funkcja jest dostępna w regionach, w których jest obsługiwane wyszukiwanie wektorów mozaiki sztucznej inteligencji.
Składnia
W środowisku Databricks Runtime 15.3 lub nowszym można użyć query_text
lub query_vector
, aby określić, co należy wyszukać w indeksie.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
W środowisku Databricks Runtime 15.2 lub nowszym można użyć query
, aby określić, co należy wyszukać w indeksie.
SELECT * FROM vector_search(
index, query, num_results
)
Argumenty
Wszystkie argumenty muszą być przekazywane według nazwy, na przykład vector_search(index => indexName, query_text => queryText)
.
-
index
: stała, w pełni kwalifikowanaSTRING
nazwa istniejącego indeksu wyszukiwania wektorów w tym samym obszarze roboczym dla wywołań. Definiowanie musi mieć uprawnienie "Wybierz" w indeksie. - Użyj jednego z następujących elementów, aby określić wyrażenie do wyszukania w indeksie:
- W przypadku środowiska Databricks Runtime 15.3 lub nowszego użyj
query_text
, aby wyszukać określony ciąg tekstu w kolumnie źródłowej indeksu Delta Sync . Zapytanie musi być wyrażeniem ciąguSTRING
, który należy wyszukać w indeksie. - W przypadku środowiska Databricks Runtime 15.3 lub nowszego użyj
query_vector
, aby wyszukać konkretny wektor w kolumnie wektora osadzania indeksu Delta Sync. Ten argument jest wymagany do wyszukiwania indeksu synchronizacji różnicowej przy użyciu samodzielnie zarządzanych wektorów. Zapytanie musi być wyrażeniem wektora osadzeniaARRAY<FLOAT>
,ARRAY<DOUBLE>
lubARRAY<DECIMAL(_, _)>
, aby wyszukać w indeksie. - W przypadku środowiska Databricks Runtime 15.2 lub starszego użyj
query
, aby określić ciąg do wyszukania w indeksie.
- W przypadku środowiska Databricks Runtime 15.3 lub nowszego użyj
-
num_results
(opcjonalnie): stała całkowita, maksymalna liczba rekordów do zwrócenia. Wartość domyślna to 10.
Zwraca
Tabela najważniejszych pasujących rekordów z indeksu. Wszystkie kolumny indeksu są uwzględniane.
Przykłady
W poniższych sekcjach przedstawiono przykładowe zapytania SQL dotyczące różnych wyszukiwań indeksów.
Zapytania tekstowe dotyczące indeksów z osadzanymi kolumnami źródłowymi
Wyszukaj indeks jednostek SKU produktu, aby znaleźć podobne produkty według nazwy. W poniższym przykładzie użyto query_text
, która jest obsługiwana tylko w środowisku Databricks Runtime 15.3 lub nowszym. W przypadku środowiska Databricks Runtime 15.2 lub starszego użyj query
zamiast query_text
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID | Nazwa produktu |
---|---|
10 | iPhone |
20 | iPhone SE |
Poniższy przykład wyszukuje wiele terminów jednocześnie przy użyciu podzapytania LATERAL.
SELECT
query_txt,
query_id,
search.*
FROM
query_table,
LATERAL(
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => query_txt, num_results => 2)
) as search
query_txt |
query_id | search.id | search.product_name |
---|---|---|---|
iPhone | 1 | 10 | iPhone 10 |
iPhone | 1 | 20 | iPhone SE |
piksel 8 | 2 | 30 | Piksel 8 |
piksel 8 | 2 | 40 | Piksel 8a |
Zapytania tekstowe dotyczące indeksów z osadzanymi kolumnami źródłowymi
Wyszukaj indeks obrazów przy użyciu wstępnie obliczonych osadzeń, aby znaleźć podobne obrazy, osadzając. W poniższym przykładzie użyto query_vector
, która jest obsługiwana tylko w środowisku Databricks Runtime 15.3 lub nowszym. W przypadku Databricks Runtime w wersji 15.2 lub starszej, użyj query
zamiast query_vector
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45, -0.35, 0.78, 0.22), num_results => 3)
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45F, -0.35F, 0.78F, 0.22F), num_results => 3)
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => ARRAY(0.45D, -0.35D, 0.78D, 0.22D), num_results => 3)
id | image_name | osadzanie obrazu |
---|---|---|
28 | horse.jpg | [0.46, -0.34, 0.77, 0.21] |
27 | donkey.jpg | [0.44, -0.36, 0.79, 0.23] |
5 | elk.jpg | [0.23, -0.44, 0.77, 0.80] |
Poniższy przykład wyszukuje wiele terminów jednocześnie przy użyciu podzapytania LATERAL.
SELECT
query_embedding,
search.*
FROM
query_table,
LATERAL(
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_vector => image_embedding, num_results => 1)
) as search
osadzanie zapytania | search.id | search.image_name | search_image_embedding |
---|---|---|---|
[0.45, -0.35, 0.78, 0.22] | 27 | donkey.jpg | [0.46, -0.34, 0.77, 0.21] |
[0.14, 0.29, 0.30, -0.90] | 3 | landscape.jpg | [0.15, 0.30, 0.31, -0.91] |
[0.23, -0.44, 0.77, 0.80] | 10 | golden_gate_bridge.jpg | [0.28, -0.40, 0.23, 0.81] |
[0.88, 0.88, 0.88, 0.88] | 44 | blank.jpg | [0.88, 0.88, 0.88, 0.88] |
Ograniczenia
W wersji zapoznawczej obowiązują następujące ograniczenia:
- Wykonywanie zapytań dotyczących typów indeksów
DIRECT_ACCESS
nie jest obsługiwane. - Parametry
filters_json
wejściowe lubcolumns
nie są obsługiwane. - Wyszukiwanie wektorowe z
num_results
większa niż 100 nie jest obsługiwane. - Użytkownicy, którzy nie mają prawa do odczytu tabeli źródłowej, nie mogą używać
vector_search()
. - Hybrydowe wyszukiwanie podobieństwa słów kluczowych nie jest obsługiwane przy użyciu
vector_search()
. -
vector_search
nie można używać z punktami końcowymi obsługującymi model przy użyciu interfejsów API modelu foundation aprowizowanej przepływności.