Dela via


Funktionen vector_search

Gäller för:markerad ja Databricks SQL

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Med vector_search() funktionen kan du köra frågor mot ett Mosaic AI Vector Search-index med hjälp av SQL.

Krav

Syntax

I Databricks Runtime 15.3 och senare kan du använda query_text eller query_vector för att ange vad du ska söka efter i indexet.

SELECT * FROM vector_search(
  index,
  { query_text | query_vector },
  [ num_results ]
)

I Databricks Runtime 15.2 och nedan kan du använda query för att ange vad du ska söka efter i indexet.

SELECT * FROM vector_search(
  index, query, num_results
)

Argument

Alla argument måste skickas med namn, till exempel vector_search(index => indexName, query_text => queryText).

  • index: En STRING konstant, det fullständigt kvalificerade namnet på ett befintligt vektorsökningsindex på samma arbetsyta för anrop. Definieraren måste ha behörigheten "Välj" för indexet.
  • Använd något av följande för att ange det uttryck som ska sökas efter i indexet:
    • För Databricks Runtime 15.3 eller senare använder du query_text för att söka efter en viss textsträng i kolumnen för inbäddningskällan i Delta Sync Index. Frågan måste vara ett STRING uttryck för strängen som du vill söka efter i indexet.
    • För Databricks Runtime 15.3 eller senare använder du query_vector för att söka efter en specifik vektor i kolumnen inbäddningsvektor i deltasynkroniseringsindexet. Det här argumentet krävs för att söka i ett Delta Sync-index med hjälp av självhanterade vektorer. Frågan måste vara ett ARRAY<FLOAT>-, ARRAY<DOUBLE>- eller ARRAY<DECIMAL(_, _)>-uttryck för den inbäddningsvektor som ska sökas efter i indexet.
    • För Databricks Runtime 15.2 eller lägre använder du query för att ange strängen som du vill söka efter i ditt index.
  • num_results (valfritt): En heltalskonstant, det maximala antalet poster som ska returneras. Standardvärdet är 10.

Returer

En tabell med de främsta matchande posterna från indexet. Alla kolumner i indexet ingår.

Exempel

I följande avsnitt visas exempel på SQL-frågor för olika indexsökningar.

Textfrågor om index med inbäddning av källkolumner

Sök över ett index över produkt-SKU:er för att hitta liknande produkter efter namn. I följande exempel används query_text som endast stöds i Databricks Runtime 15.3 och senare. För Databricks Runtime 15.2 och nedan använder du query i stället för query_text.


SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
ID Produktnamn
10 iPhone
20 iPhone SE

I följande exempel söker du efter flera termer samtidigt med hjälp av en LATERAL-underfråga.


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 Bildpunkt 8
pixel 8 2 40 Pixel 8a

Textfrågor om index med inbäddning av källkolumner

Sök över ett index med bilder med förberäknade inbäddningar för att hitta liknande bilder genom att bädda in. I följande exempel används query_vector som endast stöds i Databricks Runtime 15.3 och senare. För Databricks Runtime 15.2 och nedan använder du query i stället för 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 bildnamn bildinbäddning
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]

I följande exempel söker du efter flera termer samtidigt med hjälp av en LATERAL-underfråga.


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
frågeinbäddning search.id sök.bildnamn sök_bildinbäddning
[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]

Begränsningar

Följande begränsningar gäller under förhandsversionen:

  • Det går inte att köra frågor mot DIRECT_ACCESS indextyper.
  • Indataparametrar filters_json eller columns stöds inte.
  • Vektorsökning med num_results fler än 100 stöds inte.
  • Användare som inte har LÄS-åtkomst till källtabellen kan inte använda vector_search().
  • Hybridsök med nyckelordslikhet stöds inte med hjälp av vector_search().
  • vector_search kan inte användas med modell som betjänar slutpunkter med hjälp av Foundation Model-API:er som har etablerat dataflöde.