vector_search
-functie
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 where Mosaic AI Vector Search wordt ondersteund.
Syntaxis
In Databricks Runtime 15.3 en hoger kunt u query_text
of query_vector
gebruiken om op te geven waarnaar in de index moet worden gezocht.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
In Databricks Runtime 15.2 en hieronder kunt u query
gebruiken om op te geven waarnaar u in de index moet zoeken.
SELECT * FROM vector_search(
index, query, num_results
)
Argumenten
Alle argumenten moeten worden doorgegeven op naam, zoals vector_search(index => indexName, query_text => queryText)
.
-
index
: EenSTRING
constante, de volledig gekwalificeerde naam van een bestaande vectorzoekindex in dezelfde werkruimte voor aanroepen. De bepaler moet machtiging 'Select' hebben voor 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_text
om te zoeken naar een specifieke tekenreeks in de insluitbron column van uw Delta Sync Index. De query moet eenSTRING
expressie van de tekenreeks zijn om naar te zoeken in de index. - Gebruik voor Databricks Runtime 15.3 of hoger
query_vector
om te zoeken naar een specifieke vector in de insluitvector column 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
query
om 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.
Retouren
Een table van de best overeenkomende gegevens uit de index. Alle columns van de index zijn inbegrepen.
Voorbeelden
In de volgende secties ziet u voorbeelden van SQL-query's voor verschillende indexzoekopdrachten.
Tekstqueries voor indexen met inbeddingsbron columns
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 | 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 |
Tekstqueries voor indexen met embedbron columns
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 | image_name | 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 | search.image_name | 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_ACCESS
query's op indextypen wordt niet ondersteund. - Invoer parameters
filters_json
ofcolumns
worden niet ondersteund. - Vector Search met
num_results
meer dan 100 wordt niet ondersteund. - Gebruikers die geen leestoegang hebben tot de bron table kunnen
vector_search()
niet gebruiken. - Hybride trefwoord-overeenkomsten zoeken wordt niet ondersteund met behulp van
vector_search()
. -
vector_search
kan niet worden gebruikt met model voor eindpunten die eindpunten leveren met behulp van door Foundation Model ingerichte doorvoer.