Funkce vector_search
Platí pro: Databricks SQL
Důležité
Tato funkce je ve verzi Public Preview.
Tato vector_search()
funkce umožňuje dotazovat se na index Služby vektoru AI v systému Sql.
Požadavky
- Tato funkce není k dispozici v klasických skladech SQL.
- Další informace najdete na stránce s cenami SQL služby Databricks.
- Tato funkce je dostupná v oblastech, kde je podporováno.
Syntaxe
Ve službě Databricks Runtime 15.3 a novějších můžete pomocí query_text
nebo query_vector
určit, co se má v indexu hledat.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
V Databricks Runtime 15.2 a níže můžete pomocí query
určit, co se má v indexu hledat.
SELECT * FROM vector_search(
index, query, num_results
)
Argumenty
Všechny argumenty musí být předány názvem, například vector_search(index => indexName, query_text => queryText)
.
-
index
: KonstantaSTRING
, plně kvalifikovaný název existujícího indexu vektorového vyhledávání ve stejném pracovním prostoru pro vyvolání. Definující uživatel musí mít u indexu oprávnění „Vybrat“. - K zadání výrazu, který se má v indexu hledat, použijte jednu z následujících možností:
- Pro Databricks Runtime 15.3 nebo novější použijte
query_text
k vyhledání konkrétního řetězce textu ve vloženém zdrojovém sloupci indexu Delta Sync. Dotaz musí být výrazemSTRING
řetězce, který se má vyhledat v indexu. - Pro Databricks Runtime 15.3 nebo novější použijte
query_vector
k vyhledání konkrétního vektoru ve sloupci vloženého vektoru indexu Delta Sync. Tento argument je nezbytný pro vyhledávání indexu Delta Sync pomocí samosprávných vektorů. Dotaz musí býtARRAY<FLOAT>
neboARRAY<DOUBLE>
neboARRAY<DECIMAL(_, _)>
výrazem vloženého vektoru, který se má vyhledat v indexu. - Pro Databricks Runtime 15.2 nebo novější použijte
query
k zadání řetězce, který chcete vyhledat v indexu.
- Pro Databricks Runtime 15.3 nebo novější použijte
-
num_results
(volitelné): Celočíselná konstanta, maximální počet záznamů, které se mají vrátit. Výchozí hodnota je 10.
Návraty
Tabulka nejvyšších odpovídajících záznamů z indexu Zahrnou se všechny sloupce indexu.
Příklady
Následující části ukazují ukázkové dotazy SQL pro různá vyhledávání indexů.
Textové dotazy na indexy s vloženými zdrojovými sloupci
Vyhledejte podobné produkty podle názvu pomocí indexu skladových položek produktu. Následující příklad používá query_text
, která je podporována pouze v Databricks Runtime 15.3 a vyšší. Pro Databricks Runtime 15.2 a níže použijte místo query
query_text
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID | Název produktu |
---|---|
10 | iPhone |
20 | iPhone SE |
Následující příklad vyhledá více termínů najednou pomocí poddotazů 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 |
pixel 8 | 2 | 30 | Pixel 8 |
pixel 8 | 2 | 40 | Pixel 8a |
Textové dotazy na indexy s vloženými zdrojovými sloupci
Prohledejte index obrázků s předem vypočítanými vkládáními, abyste našli podobné obrázky vložením. Následující příklad používá query_vector
, která je podporována pouze v Databricks Runtime 15.3 a vyšší. Pro Databricks Runtime 15.2 a níže použijte místo 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)
id | image_name | vkládání obrázků |
---|---|---|
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] |
Následující příklad vyhledá více termínů najednou pomocí poddotazů 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
vložený dotaz | search.id | vyhledání.název_obrazu | vyhledávání vkládání obrazu |
---|---|---|---|
[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] |
Omezení
Během verze Preview platí následující omezení:
- Dotazy na typy indexů
DIRECT_ACCESS
nejsou podporovány. - Vstupní parametry
filters_json
nebocolumns
se nepodporují. - Vektorové vyhledávání s
num_results
více než 100 se nepodporuje. - Uživatelé, kteří nemají přístup ke čtení ke zdrojové tabulce, nemůžou používat
vector_search()
. - Hybridní vyhledávání podobnosti klíčových slov není podporováno pomocí
vector_search()
. -
vector_search
nelze použít s koncovými body obsluhující modely pomocí zřízených rozhraní API modelu foundation.