Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Belangrijk
Deze functie is beschikbaar als openbare preview.
Met de vector_search() functie kunt u een query uitvoeren op een Mozaïek AI Vector Search-index met behulp van SQL.
Vereisten
- Deze functie is niet beschikbaar in klassieke SQL-warehouses.
- Zie de pagina met prijzen voor Databricks SQL voor meer informatie.
- Deze functie is beschikbaar in regio's waar Mozaïek AI Vector Search wordt ondersteund.
Syntaxis
Gebruik of query_text geef in Databricks Runtime 15.3 en hoger query_vector op wat u zoekt in de index.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
Gebruik in Databricks Runtime 15.2 en hieronder query om op te geven wat u zoekt in de index.
SELECT * FROM vector_search(
index, query, num_results
)
Argumenten
Alle argumenten moeten worden gespecificeerd bij naam, zoals vector_search(index => indexName, query_text => queryText).
-
index: EenSTRINGconstante, de volledig gekwalificeerde naam van een bestaande vectorzoekindex in dezelfde werkruimte voor aanroepen. De definitier moet gemachtigd zijnSelectvoor de index. - Gebruik een van de volgende opties om de expressie op te geven die u in de index wilt zoeken:
- Gebruik voor Databricks Runtime 15.3 of hoger
query_textom te zoeken naar een specifieke tekenreeks in de kolom met ingesloten bron van uw Delta Sync Index. De query moet eenSTRINGexpressie van de tekenreeks zijn om in de index te zoeken. - Gebruik voor Databricks Runtime 15.3 of hoger
query_vectorom te zoeken naar een specifieke vector in de insluitvectorkolom van uw Delta Sync-index. Dit argument is vereist voor het doorzoeken van een Delta Sync-index met behulp van zelfbeheerde vectoren. De query moet eenARRAY<FLOAT>ofARRAY<DOUBLE>ofARRAY<DECIMAL(_, _)>expressie van de insluitvector zijn om naar te zoeken in de index. - Voor Databricks Runtime 15.2 of lager gebruikt u
queryom de tekenreeks op te geven die u in uw index wilt zoeken.
- Gebruik voor Databricks Runtime 15.3 of hoger
-
num_results(optioneel): Een geheel getalconstante, het maximum aantal records dat moet worden geretourneerd. De standaardwaarde is 10. -
query_type(optioneel): Het type zoekopdracht dat u wilt uitvoeren op uw vectorzoekindex. Standaard ingesteldANNop indien niet expliciet opgegeven.- Als dit het
query_typegeval isANN,query_textmoet ofquery_vectorworden opgegeven om een dichtstbijzijnde buurzoekopdracht of overeenkomstenzoekopdracht uit te voeren. - Als dit het
query_typeisHYBRID,query_textmoet worden opgegeven. U kunt zowelquery_textalsquery_vectorvoor een hybride zoekopdracht opgeven. Hybride zoeken in dit geval betekent een combinatie van overeenkomsten zoeken en zoeken naar trefwoorden waarbij een trefwoordzoekopdracht de letterlijke tekst als doel gebruikt.
- Als dit het
De volgende tabel bevat een overzicht van de argumenten die kunnen worden gebruikt wanneer u een Delta Sync-index hebt met een insluitmodel:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
| ANN (ook wel bekend als dichtstbijzijnde buren of overeenkomsten zoeken) | ✓ |
|
|
| ANN (ook wel bekend als dichtstbijzijnde buren of overeenkomsten zoeken) | ✓ | Gebruik query_vector deze zoekfunctie voor overeenkomsten. |
|
| Hybride | ✓ |
|
|
| Hybride | ✓ | ✓ | Gebruik query_text dit voor trefwoorden zoeken en gebruiken query_vector voor overeenkomsten zoeken. |
In de volgende tabel worden de verschillende scenario's en de argumenten beschreven die kunnen worden gebruikt wanneer u een Delta-synchronisatieindex hebt zonder een insluitmodel:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
ANN (ook wel bekend als bij benadering dichtstbijzijnde buren of overeenkomsten zoeken) |
✓ | Gebruikquery_vector deze zoekfunctie voor overeenkomsten. Zoeken naar overeenkomsten vereist een insluitvector als zoekdoel. Omdat een insluitmodel niet beschikbaar is in dit scenario om de insluitvector te berekenen, moet u dit opgeven. |
|
| Hybride | ✓ | ✓ | Voor een hybride zoekopdracht naar een specifieke tekenreeks met tekst en een vector, geeft u zowel als query_textquery_vector. |
Retouren
Een tabel met de meest overeenkomende records uit de index. Alle kolommen van de index worden opgenomen.
Voorbeelden
In de volgende secties ziet u voorbeelden van SQL-query's voor verschillende indexzoekopdrachten.
Hybride zoekquery's
In het volgende hybride zoekvoorbeeld worden de volgende zoektypen gecombineerd om de opgegeven termen in tekst of metagegevens van de vectorzoekindex te vinden:
- Vector similarity zoekopdracht: Om vergelijkbare semantische betekenis te vinden voor
Wi-Fi issues. - Trefwoorden zoeken: zoeken
Wi-Fi issues LMP-9R2op een trefwoordindex.
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 Gids voor probleemoplossing — LMP-9R2 | LMP-9R2 |
| 1332 | Bekende connectiviteitsproblemen voor LMP-9R2-apparaten | LMP-9R2 |
| 1271 | Handleiding voor het oplossen van problemen met algemene Wi-Fi | LMP-8R2 |
In het volgende hybride zoekvoorbeeld worden zowel query_text als query_vector voor de term opgegeven. Wi-Fi issues LMP-9R2 In dit voorbeeld wordt het zoeken op trefwoorden beter uitgevoerd op bedrijfseigen termen die uniek zijn voor een bedrijf (zoals 'LMP-9R2' in dit geval), terwijl vectorzoekopdrachten, die doorgaans worden getraind op openbare gegevenssets, termen als 'LMP-9R2' niet herkent.
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 Gids voor probleemoplossing — LMP-9R2 | LMP-9R2 |
| 1332 | Bekende connectiviteitsproblemen voor LMP-9R2-apparaten | LMP-9R2 |
| 1271 | Handleiding voor het oplossen van problemen met algemene Wi-Fi | LMP-8R2 |
Tekstquery's voor indexen met bronkolommen insluiten
Zoek naar een index van product-SKU's om vergelijkbare producten op naam te vinden. In het volgende voorbeeld wordt query_text gebruikt die alleen wordt ondersteund in Databricks Runtime 15.3 en hoger. Gebruik voor Databricks Runtime 15.2 en hieronder query in plaats van query_text.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
| Id | Productnaam |
|---|---|
| 10 | iPhone |
| 20 | iPhone SE |
In het volgende voorbeeld wordt gezocht naar meerdere termen tegelijk met behulp van een LATERAL-subquery.
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 | zoeken.product_naam |
|---|---|---|---|
| iphone | 1 | 10 | iPhone 10 |
| iphone | 1 | 20 | iPhone SE |
| pixel 8 | 2 | 30 | Pixel 8 |
| pixel 8 | 2 | 40 | Pixel 8a |
Tekstquery's voor indexen met bronkolommen insluiten
Doorzoek een index van afbeeldingen met vooraf berekende embeddingen om vergelijkbare afbeeldingen te vinden via embeddingen. In het volgende voorbeeld wordt query_vector gebruikt die alleen wordt ondersteund in Databricks Runtime 15.3 en hoger. Gebruik voor Databricks Runtime 15.2 en hieronder query in plaats van 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)
| identiteitskaart | afbeeldingnaam | beeldinbedding |
|---|---|---|
| 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] |
In het volgende voorbeeld wordt gezocht naar meerdere termen tegelijk met behulp van een LATERAL-subquery.
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
| query-embedding | search.id | zoeken.afbeeldingsnaam | zoek_beelddoembedden |
|---|---|---|---|
| [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] |
Beperkingen
De volgende beperkingen zijn van toepassing tijdens de preview:
- Het uitvoeren van
DIRECT_ACCESSquery's op indextypen wordt niet ondersteund. - Invoerparameters
filters_jsonofcolumnsworden niet ondersteund. - Vector Search met
num_resultsmeer dan 100 wordt niet ondersteund. -
vector_searchkan niet worden gebruikt met eindpunten voor modeldiensten die gebruik maken van ingerichte doorvoer van Foundation Model API's.