Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
Důležité
Tato funkce je ve verzi Public Preview.
Tato funkce umožňuje dotazovat index vector_search() pomocí 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
V Databricks Runtime 15.3 a novějších použijte query_text nebo query_vector určete, co se má hledat v indexu.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
V Databricks Runtime 15.2 a níže můžete 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í. Definer musí mítSelectoprávnění k indexu. - 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_textk 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_vectork vyhledání určitého vektoru ve sloupci s vektorovými reprezentacemi vašeho Delta Sync Indexu. Tento argument je povinný pro vyhledávání indexu rozdílové synchronizace pomocí vektorů spravovaných vlastním systémem. 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
queryk 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í nastavení je 10. -
query_type(volitelné): Typ hledání, který chcete provést u indexu vektorového vyhledávání. Výchozí hodnota jeANN, pokud není explicitně zadána.- Pokud je
query_type,ANNpak buďquery_textneboquery_vectormusí být zadán pro provedení přibližného hledání souseda nebo podobnost hledání. - Pokud je ,
query_typeHYBRIDpakquery_textmusí být zadán. Můžete zadat jak hybridní vyhledávání, takquery_textquery_vectorpro hybridní vyhledávání. Hybridní vyhledávání v této instanci znamená kombinaci vyhledávání podobnosti a hledání klíčových slov, kde hledání klíčových slov používá jako cíl literálový text.
- Pokud je
Následující tabulka shrnuje, které argumenty je možné použít, když máte index Delta Sync s modelem vkládání:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
| ANN (označuje se také jako přibližné hledání nejbližšího souseda nebo podobnosti) | ✓ |
|
|
| ANN (označuje se také jako přibližné hledání nejbližšího souseda nebo podobnosti) | ✓ | Používá query_vector se pro vyhledávání podobnosti. |
|
| Hybridní | ✓ |
|
|
| Hybridní | ✓ | ✓ | Slouží query_text k vyhledávání klíčových slov a k query_vector hledání podobnosti. |
Následující tabulka popisuje různé scénáře a argumenty, které je možné použít, když máte index synchronizace Delta bez modelu vkládání:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
ANN (označuje se také jako přibližné hledání nejbližšího souseda nebo podobnosti) |
✓ | Používáquery_vector se pro vyhledávání podobnosti. Hledání podobnosti vyžaduje vložený vektor jako cíl hledání. Vzhledem k tomu, že model vložení není v tomto scénáři k dispozici k výpočtu vektoru vkládání, musíte jej zadat. |
|
| Hybridní | ✓ | ✓ | Pro hybridní hledání konkrétního řetězce textu a vektoru zadejte oba query_text a query_vector. |
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ů.
Hybridní vyhledávací dotazy
Následující příklad hybridního vyhledávání kombinuje následující typy hledání a vyhledá zadané termíny v textu nebo metadatech indexu vektorového vyhledávání:
- Hledání vektorové podobnosti: Vyhledání podobného sémantického významu pro
Wi-Fi issues. - Hledání klíčových slov: Hledání
Wi-Fi issues LMP-9R2v indexu klíčových slov
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 Průvodce odstraňováním potíží – LMP-9R2 | LMP-9R2 |
| 1332 | Známé problémy s připojením pro zařízení LMP-9R2 | LMP-9R2 |
| 1271 | Obecný průvodce odstraňováním potíží s Wi-Fi | LMP-8R2 |
Následující příklad hybridního vyhledávání určuje výraz i query_textquery_vector termín , Wi-Fi issues LMP-9R2. V tomto příkladu vyhledávání klíčových slov funguje lépe u proprietárních termínů jedinečných pro společnost (například "LMP-9R2" v tomto případě), zatímco vektorové vyhledávání, které jsou obvykle natrénované na veřejných datových sadách, nerozpozná termíny jako "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 Průvodce odstraňováním potíží – LMP-9R2 | LMP-9R2 |
| 1332 | Známé problémy s připojením pro zařízení LMP-9R2 | LMP-9R2 |
| 1271 | Obecný průvodce odstraňováním potíží s Wi-Fi | LMP-8R2 |
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 queryquery_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 | hledat.název_produktu |
|---|---|---|---|
| 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 queryquery_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)
| identifikační číslo | název_obrázku | 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_ACCESSnejsou podporovány. - Vstupní parametry
filters_jsonnebocolumnsse nepodporují. - Vektorové hledání s
num_resultsvětší než 100 není podporováno. -
vector_searchnelze použít s koncovými body pro obsluhu modelů s využitím základních modelů API se zřízenou propustností.