Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Область применения:
Databricks SQL
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Эта vector_search() функция позволяет запрашивать индекс векторного поиска Mosaic AI с помощью 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).
-
indexSTRING: константа, полное имя существующего индекса векторного поиска в той же рабочей области для вызовов. Определяющий объект должен иметьSelectразрешение на индекс. - Используйте одно из следующих действий, чтобы указать выражение для поиска в индексе:
- Для Databricks Runtime 15.3 или более поздней версии используйте
query_textдля поиска определенной строки текста в столбце источника вашего Delta Sync Index. Запрос должен бытьSTRINGвыражением строки для поиска в индексе. - Для Databricks Runtime 15.3 или более поздней версии используйте
query_vectorдля поиска определенного вектора в столбце встраивания векторов вашего индекса Delta Sync. Этот аргумент является обязательным для поиска индекса разностной синхронизации с помощью самоуправляемых векторов. Запрос должен быть выражениемARRAY<FLOAT>,ARRAY<DOUBLE>илиARRAY<DECIMAL(_, _)>вектора внедрения для поиска в индексе. - Для Databricks Runtime 15.2 или ниже используйте
query, чтобы указать строку для поиска в индексе.
- Для Databricks Runtime 15.3 или более поздней версии используйте
-
num_results(необязательно): целочисленная константа, максимальное число возвращаемых записей. Значение по умолчанию равно 10. -
query_type(необязательно): тип поиска, который требуется выполнить в индексе векторного поиска. Значение по умолчанию,ANNесли не указано явно.- Если значение
query_typeимеет значениеANN, тоquery_textquery_vectorили должно быть указано для выполнения приблизительного ближайшего поиска соседа или поиска сходства. - Если значение
query_typeимеет значениеHYBRID,query_textнеобходимо указать. Вы можете указать обаquery_textварианта иquery_vectorдля гибридного поиска. Гибридный поиск в этом экземпляре означает сочетание поиска сходства и поиска ключевых слов, где поиск по ключевым словам использует литеральный текст в качестве целевого объекта.
- Если значение
В следующей таблице приведены сведения о том, какие аргументы можно использовать при наличии индекса Delta Sync с моделью внедрения:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
| ANN (также известный как приблизительный ближайший сосед или поиск сходства) | ✓ |
|
|
| ANN (также известный как приблизительный ближайший сосед или поиск сходства) | ✓ | Используется query_vector для поиска сходства. |
|
| Гибридный | ✓ |
|
|
| Гибридный | ✓ | ✓ | Используется query_text для поиска ключевых слов и используется query_vector для поиска сходства. |
В следующей таблице описаны различные сценарии и аргументы, которые можно использовать при наличии индекса разностной синхронизации без модели внедрения.
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
ANN (также называется приблизительным ближайшим соседом или поиском сходства) |
✓ | Используетсяquery_vector для поиска сходства. Для поиска сходства требуется вектор внедрения в качестве целевого объекта поиска. Так как модель внедрения недоступна в этом сценарии для вычисления вектора внедрения, необходимо предоставить ее. |
|
| Гибридный | ✓ | ✓ | Для гибридного поиска определенной строки текста и вектора укажите оба query_text и query_vector. |
Возвраты
Таблица верхних соответствующих записей из индекса. Все столбцы индекса включены.
Примеры
В следующих разделах показаны примеры запросов SQL для различных поисковых запросов индекса.
Гибридные поисковые запросы
Следующий пример гибридного поиска объединяет следующие типы поиска, чтобы найти предоставленные термины в тексте или метаданных индекса векторного поиска:
- Поиск сходства векторов: поиск аналогичного семантического значения для
Wi-Fi issues. - Поиск по ключевым словам: поиск
Wi-Fi issues LMP-9R2по индексу ключевого слова.
SELECT * FROM vector_search(
index => 'main.support_docs.index',
query_text => 'Wi-Fi issues LMP-9R2',
query_type => 'HYBRID',
num_results => 3)
| doc_id | title | product_code |
|---|---|---|
| 1403 | руководство по устранению неполадок Wi-Fi — LMP-9R2 | LMP-9R2 |
| 1332 | Известные проблемы с подключением для устройств LMP-9R2 | LMP-9R2 |
| 1271 | Общее руководство по устранению неполадок Wi-Fi | LMP-8R2 |
В следующем примере гибридного поиска указывается как для термина, query_textтак query_vector и Wi-Fi issues LMP-9R2 для термина. В этом примере поиск ключевых слов лучше работает на собственных терминах, уникальных для компании (например, LMP-9R2), в то время как векторный поиск, который обычно обучен на общедоступных наборах данных, не распознает такие термины, как LMP-9R2.
SELECT * FROM vector_search(
index => 'main.support_docs.index',
query_text => 'Wi-Fi issues LMP-9R2',
query_vector => array( 0.0213, 0.1045, 0.0871, 0.0562, 0.1459, ... 0.0131),-- a self computed embedding of the `query_text` param
query_type => 'HYBRID',
num_results => 3 )
| doc_id | title | product_code |
|---|---|---|
| 1403 | руководство по устранению неполадок Wi-Fi — LMP-9R2 | LMP-9R2 |
| 1332 | Известные проблемы с подключением для устройств LMP-9R2 | LMP-9R2 |
| 1271 | Общее руководство по устранению неполадок Wi-Fi | LMP-8R2 |
Текстовые запросы на индексы с внедрением исходных столбцов
Выполните поиск по индексу номеров 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)
| идентификатор | Название продукта |
|---|---|
| 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 |
идентификатор_запроса | search.id | поиск.название_продукта |
|---|---|---|---|
| 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)
| идентификатор | имя_изображения | встраивание изображения |
|---|---|---|
| 28 | horse.jpg | [0.46, -0.34, 0.77, 0.21] |
| двадцать семь | 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] | двадцать семь | 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 не поддерживается. -
vector_searchнельзя использовать с конечными точками подачи моделей при помощи API основополагающей модели с предоставленной пропускной способностью.