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, gunakan 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, gunakan 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 Select izin 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.
  • query_type(opsional): Jenis pencarian yang ingin Anda lakukan pada indeks pencarian vektor Anda. Default ke ANN jika tidak ditentukan secara eksplisit.
    • query_type Jika adalah ANN , maka atau query_textquery_vector harus ditentukan untuk melakukan perkiraan pencarian tetangga terdekat atau pencarian kesamaan.
    • query_type Jika adalah HYBRID, maka query_text harus ditentukan. Anda dapat menentukan dan query_textquery_vector untuk pencarian hibrid. Pencarian hibrid dalam instans ini berarti kombinasi pencarian kesamaan dan pencarian kata kunci di mana pencarian kata kunci menggunakan teks harfiah sebagai target.

Tabel berikut ini meringkas argumen mana yang dapat digunakan saat Anda memiliki indeks Sinkronisasi Delta dengan model penyematan:

query_type query_text query_vector Description
ANN (juga dikenal sebagai perkiraan pencarian tetangga atau kesamaan terdekat)
  • Untuk pencarian kesamaan untuk string teks atau vektor tertentu, Anda dapat menentukan query_text.
  • Penyematan dapat secara otomatis dihitung dari query_text, dan digunakan untuk pencarian kesamaan, jadi tidak perlu menentukan query_vector.
ANN (juga dikenal sebagai perkiraan pencarian tetangga atau kesamaan terdekat) Gunakan query_vector untuk pencarian kesamaan.
Hibrida
  • Gunakan query_text untuk pencarian kata kunci. Pencarian kata kunci menggunakan teks literal sebagai target, jadi query_text diperlukan.
  • Penyematan dapat secara otomatis dihitung dari query_text, dan digunakan untuk pencarian kesamaan, jadi tidak perlu menentukan query_vector.
Hibrida Gunakan query_text untuk pencarian kata kunci dan gunakan query_vector untuk pencarian kesamaan.

Tabel berikut ini menjelaskan berbagai skenario dan argumen yang dapat digunakan saat Anda memiliki indeks sinkronisasi Delta tanpa model penyematan:

query_type query_text query_vector Description
ANN (juga dikenal sebagai perkiraan pencarian tetangga atau kesamaan terdekat) Gunakanquery_vector untuk pencarian kesamaan. Pencarian kesamaan memerlukan vektor penyematan sebagai target pencarian. Karena model penyematan tidak tersedia dalam skenario ini untuk menghitung vektor penyematan, Anda harus menyediakannya.
Hibrida Untuk pencarian hibrid untuk string teks dan vektor tertentu, tentukan dan query_textquery_vector.

Mengembalikan

Tabel rekaman pencocokan teratas dari indeks. Semua kolom indeks disertakan.

Contoh

Bagian berikut menunjukkan contoh kueri SQL untuk pencarian indeks yang berbeda.

Kueri pencarian hibrid

Contoh pencarian hibrid berikut menggabungkan jenis pencarian berikut untuk menemukan istilah yang disediakan dalam teks atau metadata indeks pencarian vektor:

  • Pencarian kesamaan vektor: Untuk menemukan arti semantik serupa untuk Wi-Fi issues.
  • Pencarian kata kunci: Untuk menemukan Wi-Fi issues LMP-9R2 indeks kata kunci.
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 Panduan Pemecahan Masalah Wi-Fi — LMP-9R2 LMP-9R2
1332 Masalah Konektivitas yang Diketahui untuk Perangkat LMP-9R2 LMP-9R2
1271 Panduan Pemecahan Masalah Wi-Fi Umum LMP-8R2

Contoh pencarian hibrid berikut menentukan dan query_textquery_vector untuk istilah , Wi-Fi issues LMP-9R2. Dalam contoh ini, pencarian kata kunci berkinerja lebih baik pada istilah kepemilikan yang unik untuk perusahaan (seperti "LMP-9R2" dalam hal ini), sedangkan pencarian vektor, yang biasanya dilatih pada himpunan data publik, tidak mengenali istilah seperti "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 Panduan Pemecahan Masalah Wi-Fi — LMP-9R2 LMP-9R2
1332 Masalah Konektivitas yang Diketahui untuk Perangkat LMP-9R2 LMP-9R2
1271 Panduan Pemecahan Masalah Wi-Fi Umum LMP-8R2

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)
ID 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.