Bagikan melalui


vector_search fungsi

Berlaku untuk:centang ditandai ya 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

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: Konstanta STRING , 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 ekspresi STRING 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 ekspresi ARRAY<FLOAT>, atau ARRAY<DOUBLE>, atau ARRAY<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.
  • 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 atau columns 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.