vector_search işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL

Önemli

Bu özellik Genel Önizlemededir.

işlevi, vector_search() SQL kullanarak Mozaik AI Vektör Arama dizinini sorgulamanıza olanak tanır.

Gereksinimler

  • Bu işlev klasik SQL ambarlarında kullanılamaz.
  • Daha fazla bilgi için bkz . Databricks SQL fiyatlandırma sayfası.
  • Bu işlev, Mozaik AI Vektör Arama'nin desteklendiği bölgelerde kullanılabilir.

Söz dizimi

Databricks Runtime 15.3 ve üzerinde dizinde ne aranacağını belirtmek için veya query_text kullanınquery_vector.

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

Databricks Runtime 15.2 ve altında, dizinde nelerin aranacağını belirtmek için kullanın query .

SELECT * FROM vector_search(
  index, query, num_results
)

Bağımsız değişkenler

Tüm bağımsız değişkenler gibi vector_search(index => indexName, query_text => queryText)ada göre geçirilmelidir.

  • index: Çağırmalar STRING için aynı çalışma alanında var olan bir vektör arama dizininin tam adı olan sabit. Tanımlayıcının dizin üzerinde izni olmalıdır Select .
  • Dizinde aranacak ifadeyi belirtmek için aşağıdakilerden birini kullanın:
    • Databricks Runtime 15.3 veya üzeri için, query_textekleme kaynak sütununda belirli bir metin dizesini aramak için kullanın. Sorgu, dizinde aranacak dizenin bir STRING ifadesi olmalıdır.
    • Databricks Runtime 15.3 veya üzeri için, Delta Sync Index'inizin gömme vektör sütununda belirli bir vektör aramak için query_vector kullanın. Bu bağımsız değişken, kendi kendine yönetilen vektörleri kullanarak Delta Eşitleme Dizininde arama yapmak için gereklidir. Sorgu, dizinde aranacak ekleme vektörünün ARRAY<FLOAT>, ARRAY<DOUBLE>veya ARRAY<DECIMAL(_, _)> ifadesi olmalıdır.
    • Databricks Runtime 15.2 veya altında, dizininizde aranacak dizeyi belirtmek için query kullanın.
  • num_results (isteğe bağlı): Tamsayı sabiti, döndürülecek maksimum kayıt sayısı. Varsayılan değer 10'dır.
  • query_type(isteğe bağlı): Vektör arama dizininizde gerçekleştirmek istediğiniz arama türü. ANN Açıkça belirtilmemişse varsayılan değeridir.
    • query_type ise ANN , query_text yaklaşık en yakın komşu araması veya benzerlik araması yapmak için veya query_vector belirtilmelidir.
    • query_type ise HYBRIDbelirtilmelidirquery_text. Karma arama için hem query_text hem de query_vector belirtebilirsiniz. Bu örnekte karma arama, bir anahtar sözcük aramasının hedef olarak değişmez metni kullandığı benzerlik araması ve anahtar sözcük aramasının birleşimi anlamına gelir.

Aşağıdaki tabloda, ekleme modeline sahip bir Delta Sync dizininiz olduğunda hangi bağımsız değişkenlerin kullanılabileceğini özetlemektedir:

query_type query_text query_vector Description
ANN (yaklaşık en yakın komşu veya benzerlik araması olarak da bilinir)
  • Benzerlik araması için belirli bir metin dizesi veya vektör araması için belirtebilirsiniz query_text.
  • Ekleme, uygulamasından query_textotomatik olarak hesaplanabilir ve benzerlik araması için kullanılabilir, bu nedenle belirtilmesi query_vectorgerekmez.
ANN (yaklaşık en yakın komşu veya benzerlik araması olarak da bilinir) Benzerlik araması için kullanın query_vector .
Hibrit
  • Anahtar sözcük araması için kullanın query_text . Anahtar sözcük araması hedef olarak değişmez metni kullanır, bu nedenle query_text gereklidir.
  • Ekleme, uygulamasından query_textotomatik olarak hesaplanabilir ve benzerlik araması için kullanılabilir, bu nedenle belirtilmesi query_vectorgerekmez.
Hibrit Anahtar sözcük araması için kullanın query_text ve benzerlik araması için kullanın query_vector .

Aşağıdaki tabloda, ekleme modeli olmayan bir Delta eşitleme dizininiz olduğunda kullanılabilecek farklı senaryolar ve bağımsız değişkenler açıklanmaktadır:

query_type query_text query_vector Description
ANN (yaklaşık en yakın komşu veya benzerlik araması olarak da bilinir) Benzerlik araması için kullanınquery_vector . Benzerlik araması, arama hedefi olarak bir ekleme vektöru gerektirir. Ekleme vektörlerini hesaplamak için bu senaryoda bir ekleme modeli kullanılamadığından, bunu sağlamanız gerekir.
Hibrit Belirli bir metin dizesi ve vektör için karma arama için hem hem de query_textquery_vectorbelirtin.

Döndürülenler

Dizinden en çok eşleşen kayıtların tablosu. Dizindeki tüm sütunlar dahildir.

Örnekler

Aşağıdaki bölümlerde farklı dizin aramaları için örnek SQL sorguları gösterilmektedir.

Karma arama sorguları

Aşağıdaki karma arama örneği, vektör arama dizininin metin veya meta verilerinde sağlanan terimleri bulmak için aşağıdaki arama türlerini birleştirir:

  • Vektör benzerliği araması: için benzer anlamsal anlamlar bulmak için Wi-Fi issues.
  • Anahtar sözcük araması: Anahtar sözcük dizininde bulmak Wi-Fi issues LMP-9R2 için.
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 Sorun Giderme Kılavuzu — LMP-9R2 LMP-9R2
1332 LMP-9R2 Cihazları için Bilinen Bağlantı Sorunları LMP-9R2
1271 Genel Wi-Fi Sorun Giderme Kılavuzu LMP-8R2

Aşağıdaki karma arama örneği, terimi query_textiçin hem query_vector hem de Wi-Fi issues LMP-9R2 belirtir. Bu örnekte anahtar sözcük araması, bir şirkete özgü özel terimlerde (bu örnekte "LMP-9R2" gibi) daha iyi performans gösterirken, genel veri kümelerinde genellikle eğitilen vektör araması "LMP-9R2" gibi terimleri tanımaz.


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 Sorun Giderme Kılavuzu — LMP-9R2 LMP-9R2
1332 LMP-9R2 Cihazları için Bilinen Bağlantı Sorunları LMP-9R2
1271 Genel Wi-Fi Sorun Giderme Kılavuzu LMP-8R2

Kaynak sütunları ekleme ile dizinlerde metin sorguları

Benzer ürünleri ada göre bulmak için ürün SKU'larının dizinini arayın. Aşağıdaki örnek, yalnızca Databricks Runtime 15.3 ve sonraki sürümleri için desteklenen query_text kullanır. Databricks Runtime 15.2 ve altı için queryyerine query_text kullanın.


SELECT * FROM VECTOR_SEARCH(index => "main.db.my_index", query_text => "iphone", num_results => 2)
Kimlik Ürün adı
10 iPhone
20 iPhone SE

Aşağıdaki örnek, LATERAL alt sorgusu kullanarak aynı anda birden çok terim arar.


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 sorgu_kimliği 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

Kaynak sütunları ekleme ile dizinlerde metin sorguları

Önceden hesaplanmış gömüler içeren bir görüntü dizininde arama yaparak, gömüleri kullanarak benzer görüntüleri bulun. Aşağıdaki örnek, yalnızca Databricks Runtime 15.3 ve sonraki sürümleri için desteklenen query_vector kullanır. Databricks Runtime 15.2 ve altı için queryyerine query_vector kullanın.


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)
Kimlik görsel_adı görüntü yerleştirme
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]

Aşağıdaki örnek, LATERAL alt sorgusu kullanarak aynı anda birden çok terim arar.


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 arama.görüntü_adı arama_görüntü_gömme
[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]

Sınırlamalar

Önizleme sırasında aşağıdaki sınırlamalar geçerlidir:

  • Dizin türlerini sorgulama DIRECT_ACCESS desteklenmez.
  • filters_json veya columns giriş parametreleri desteklenmez.
  • 100'den büyük vektör araması num_results desteklenmez.
  • vector_searchTemel Model API'leri tarafından sağlanan aktarım hızı kullanılarak uç noktalara hizmet veren modellerle kullanılamaz.