Функция vector_search
Область применения: Databricks SQL
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Эта vector_search()
функция позволяет запрашивать индекс поиска вектора вектора мозаики с помощью SQL.
Требования
- Эта функция недоступна в классических хранилищах SQL.
- Дополнительные сведения см. на странице цен на Databricks SQL.
- Эта функция доступна в регионах , где поддерживается Векторного Поиска Mosaic AI.
Синтаксис
В Databricks Runtime 15.3 и более поздних версий можно использовать query_text
или query_vector
, чтобы указать, что нужно искать в индексе.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
В Databricks Runtime 15.2 и ниже можно использовать query
, чтобы указать, что нужно искать в индексе.
SELECT * FROM vector_search(
index, query, num_results
)
Аргументы
Все аргументы должны передаваться по имени, например vector_search(index => indexName, query_text => queryText)
.
-
index
STRING
: константа, полное имя существующего индекса векторного поиска в той же рабочей области для вызовов. У определителя должно быть разрешение на выборку данных в индексе. - Используйте одно из следующих действий, чтобы указать выражение для поиска в индексе:
- Для Databricks Runtime 15.3 или более поздней версии используйте
query_text
для поиска определенной строки текста в столбце источника вашего Delta Sync Index. Запрос должен бытьSTRING
выражением строки для поиска в индексе. - Для Databricks Runtime 15.3 или более поздней версии используйте
query_vector
для поиска определенного вектора в столбце встраивания векторов вашего индекса Delta Sync. Этот аргумент необходим для поиска индекса Delta Sync с использованием автономных векторов. Запрос должен быть выражениемARRAY<FLOAT>
,ARRAY<DOUBLE>
илиARRAY<DECIMAL(_, _)>
вектора внедрения для поиска в индексе. - Для Databricks Runtime 15.2 или ниже используйте
query
, чтобы указать строку для поиска в индексе.
- Для Databricks Runtime 15.3 или более поздней версии используйте
-
num_results
(необязательно): целочисленная константа, максимальное число возвращаемых записей. Значение по умолчанию равно 10.
Возвраты
Таблица верхних соответствующих записей из индекса. Все столбцы индекса включены.
Примеры
В следующих разделах показаны примеры запросов SQL для различных поисковых запросов индекса.
Текстовые запросы на индексы с внедрением исходных столбцов
Выполните поиск по индексу номеров SKU продукта, чтобы найти аналогичные продукты по имени. В следующем примере используется query_text
, который поддерживается только в Databricks Runtime 15.3 и выше. Для Databricks Runtime 15.2 и ниже используйте query
вместо query_text
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID | Название продукта |
---|---|
10 | iPhone |
20 | iPhone SE |
В следующем примере выполняется поиск нескольких терминов одновременно с помощью вложенных запросов 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 |
пиксель 8 | 2 | 30 | Пиксель 8 |
пиксель 8 | 2 | 40 | Пиксель 8a |
Текстовые запросы на индексы с внедрением исходных столбцов
Выполните поиск по индексу изображений с предвычисленными встраиваниями, чтобы найти аналогичные изображения по встраиваниям. В следующем примере используется query_vector
, который поддерживается только в Databricks Runtime 15.3 и выше. Для Databricks Runtime 15.2 и ниже используйте query
вместо 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)
идентификатор | image_name | встраивание изображения |
---|---|---|
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] |
В следующем примере выполняется поиск нескольких терминов одновременно с помощью вложенных запросов 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
встраивание запроса | search.id | поиск.имя_изображения | поиск встраивания изображения |
---|---|---|---|
[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] |
Ограничения
Следующие ограничения применяются во время предварительной версии:
- Типы индексов
DIRECT_ACCESS
запросов не поддерживаются. - Входные параметры
filters_json
илиcolumns
не поддерживаются. - Поиск векторов с
num_results
более чем 100 не поддерживается. - Пользователи, у которых нет доступа READ к исходной таблице, не могут использовать
vector_search()
. - Поиск по сходству с гибридными ключевыми словами не поддерживается с помощью
vector_search()
. -
vector_search
нельзя использовать с конечными точками обслуживания моделей с помощью api-интерфейсов модели Foundation, подготовленных пропускной способностью.