Delen via


vector_search-functie

Van toepassing op:vinkje als ja aan 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

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: Een STRING 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 een STRING 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 een ARRAY<FLOAT>of ARRAY<DOUBLE>of ARRAY<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.
  • 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 parametersfilters_json of columns 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.