Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen
Gäller för:
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
- Den här funktionen är inte tillgänglig på klassiska SQL-lager.
- Mer information finns på prissidan för Databricks SQL.
- Den här funktionen är tillgänglig i regioner där Mosaic AI Vector Search stöds.
Syntax
I Databricks Runtime 15.3 och senare använder query_text eller query_vector anger du 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 använder du 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: EnSTRINGkonstant, det fullständigt kvalificerade namnet på ett befintligt vektorsökningsindex på samma arbetsyta för anrop. Definieraren måste haSelectbehörighet 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_textfö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 ettSTRINGuttryck för strängen som du vill söka efter i indexet. - För Databricks Runtime 15.3 eller senare använder du
query_vectorfö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 ettARRAY<FLOAT>-,ARRAY<DOUBLE>- ellerARRAY<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
queryför att ange strängen som du vill söka efter i ditt index.
- För Databricks Runtime 15.3 eller senare använder du
-
num_results(valfritt): En heltalskonstant, det maximala antalet poster som ska returneras. Standardvärdet är 10. -
query_type(valfritt): Den typ av sökning som du vill utföra i vektorsökningsindexet. Standardvärdet ärANNom det inte uttryckligen anges.-
query_typeOm ärANNmåste antingenquery_textellerquery_vectoranges för att utföra en ungefärlig sökning efter närmaste granne eller likhetssökning. -
query_typeOm ärHYBRIDmåste duquery_textange . Du kan ange bådequery_textochquery_vectorför en hybridsökning. Hybridsökning i den här instansen innebär en kombination av likhetssökning och nyckelordssökning där en nyckelordssökning använder literaltexten som mål.
-
I följande tabell sammanfattas vilka argument som kan användas när du har ett Delta Sync-index med en inbäddningsmodell:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
| ANN (kallas även ungefärlig närmsta granne eller likhetssökning) | ✓ |
|
|
| ANN (kallas även ungefärlig närmsta granne eller likhetssökning) | ✓ | Använd query_vector för en likhetssökning. |
|
| Hybrid | ✓ |
|
|
| Hybrid | ✓ | ✓ | Använd query_text för nyckelordssökning och användning query_vector för likhetssökning. |
I följande tabell beskrivs de olika scenarierna och argumenten som kan användas när du har ett Delta-synkroniseringsindex utan en inbäddningsmodell:
query_type |
query_text |
query_vector |
Description |
|---|---|---|---|
ANN (kallas även ungefärlig närmsta granne eller likhetssökning) |
✓ | Användquery_vector för en likhetssökning. Likhetssökning kräver en inbäddningsvektor som sökmål. Eftersom en inbäddningsmodell inte är tillgänglig i det här scenariot för att beräkna inbäddningsvektorn måste du ange den. |
|
| Hybrid | ✓ | ✓ | För en hybridsökning efter en specifik textsträng och en vektor anger du både query_text och query_vector. |
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.
Hybridsökningsfrågor
I följande hybridsökningsexempel kombineras följande söktyper för att hitta de angivna termerna i text eller metadata för vektorsökningsindexet:
- Vektorlikhetssökning: För att hitta liknande semantisk betydelse för
Wi-Fi issues. - Nyckelordssökning: Hitta
Wi-Fi issues LMP-9R2på ett nyckelordsindex.
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 felsökningsguide – LMP-9R2 | LMP-9R2 |
| 1332 | Kända anslutningsproblem för LMP-9R2-enheter | LMP-9R2 |
| 1271 | Allmän felsökningsguide för Wi-Fi | LMP-8R2 |
Följande hybridsökningsexempel anger både query_text och query_vector för termen , Wi-Fi issues LMP-9R2. I det här exemplet fungerar nyckelordssökning bättre på egna termer som är unika för ett företag (t.ex. "LMP-9R2" i det här fallet), medan vektorsökning, som vanligtvis tränas på offentliga datamängder, inte känner igen termer som "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 felsökningsguide – LMP-9R2 | LMP-9R2 |
| 1332 | Kända anslutningsproblem för LMP-9R2-enheter | LMP-9R2 |
| 1271 | Allmän felsökningsguide för Wi-Fi | LMP-8R2 |
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-nummer | 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 |
förfrågnings-ID | search.id | sök.produkt_namn |
|---|---|---|---|
| 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-nummer | 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_ACCESSindextyper. - Indataparametrar
filters_jsonellercolumnsstöds inte. - Vektorsökning med
num_resultsfler än 100 stöds inte. -
vector_searchkan inte användas med modell som betjänar slutpunkter med hjälp av Foundation Model-API:er som har etablerat dataflöde.