Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Databricks SQL
Penting
Fitur ini ada di Pratinjau Publik.
Fungsi ini vector_search()
memungkinkan Anda untuk mengkueri indeks Pencarian Vektor Mosaik AI menggunakan SQL.
Persyaratan
- Fungsi ini tidak tersedia di gudang SQL klasik.
- Untuk informasi selengkapnya, lihat halaman harga Databricks SQL.
- Fungsi ini tersedia di wilayah yang mendukung AI Mosaik Pencarian Vektor.
Sintaks
Di Databricks Runtime 15.3 ke atas, Anda dapat menggunakan query_text
atau query_vector
untuk menentukan apa yang harus dicari dalam indeks.
SELECT * FROM vector_search(
index,
{ query_text | query_vector },
[ num_results ]
)
Di Databricks Runtime 15.2 ke bawah, Anda dapat menggunakan query
untuk menentukan apa yang harus dicari dalam indeks.
SELECT * FROM vector_search(
index, query, num_results
)
Argumen
Semua argumen harus diteruskan berdasarkan nama, seperti vector_search(index => indexName, query_text => queryText)
.
-
index
: KonstantaSTRING
, nama yang sepenuhnya memenuhi syarat dari indeks pencarian vektor yang ada di ruang kerja yang sama untuk pemanggilan. Pendefinisi harus memiliki izin "Pilih" pada indeks. - Gunakan salah satu hal berikut ini untuk menentukan ekspresi yang akan dicari dalam indeks:
- Untuk Databricks Runtime 15.3 atau lebih tinggi, gunakan
query_text
untuk mencari teks tertentu di kolom sumber penyematan teks pada Indeks Sinkronisasi Delta Anda . Kueri harus berupa ekspresiSTRING
string untuk dicari dalam indeks. - Untuk Databricks Runtime 15.3 atau lebih tinggi, gunakan
query_vector
untuk mencari vektor tertentu di kolom vektor tertanam pada Indeks Sinkronisasi Delta Anda. Argumen ini diperlukan untuk mencari Indeks Sinkronisasi Delta menggunakan vektor yang dikelola sendiri. Kueri harus berupa ekspresiARRAY<FLOAT>
, atauARRAY<DOUBLE>
, atauARRAY<DECIMAL(_, _)>
dari vektor penyematan untuk dicari dalam indeks. - Untuk Databricks Runtime 15.2 atau di bawahnya, gunakan
query
untuk menentukan string yang akan dicari dalam indeks Anda.
- Untuk Databricks Runtime 15.3 atau lebih tinggi, gunakan
-
num_results
(opsional): Konstanta bilangan bulat, jumlah maksimum rekaman yang akan dikembalikan. Default ke 10.
Mengembalikan
Tabel rekaman pencocokan teratas dari indeks. Semua kolom indeks disertakan.
Contoh
Bagian berikut menunjukkan contoh kueri SQL untuk pencarian indeks yang berbeda.
Kueri teks pada indeks dengan kolom sumber penyematan
Cari di atas indeks SKU produk untuk menemukan produk serupa berdasarkan nama. Contoh berikut menggunakan query_text
yang hanya didukung dalam Databricks Runtime 15.3 ke atas. Untuk Databricks Runtime 15.2 ke bawah, gunakan query
alih-alih query_text
.
SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
Nomor Identitas | Nama produk |
---|---|
10 | iPhone |
20 | iPhone SE |
Contoh berikut mencari beberapa istilah secara bersamaan dengan menggunakan subkueri LATERAL.
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 |
piksel 8 | 2 | 30 | Piksel 8 |
piksel 8 | 2 | 40 | Piksel 8a |
Kueri teks pada indeks dengan kolom sumber penyematan
Cari pada indeks gambar dengan penyematan yang telah dihitung sebelumnya untuk menemukan gambar serupa melalui penyematan. Contoh berikut menggunakan query_vector
yang hanya didukung dalam Databricks Runtime 15.3 ke atas. Untuk Databricks Runtime 15.2 ke bawah, gunakan query
alih-alih 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 | nama_gambar | penyematan gambar |
---|---|---|
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] |
Contoh berikut mencari beberapa istilah secara bersamaan dengan menggunakan subkueri LATERAL.
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 | cari.nama_gambar | pencarian_penyematan_gambar |
---|---|---|---|
[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] |
Batasan
Batasan berikut berlaku selama pratinjau:
- Jenis indeks kueri
DIRECT_ACCESS
tidak didukung. - Parameter input
filters_json
ataucolumns
tidak didukung. - Pencarian Vektor dengan
num_results
lebih dari 100 tidak didukung. -
vector_search
tidak dapat digunakan dengan model yang melayani titik akhir menggunakan throughput yang disediakan API Model Foundation.