Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 18 LTS ve üzeri
Note
Databricks Runtime 18, Databricks Runtime 18.0, 18.1 ve 18.2'den daha yenidir. Daha önce daha sonra numaralandırılmış sürüm olarak gönderilecek özellikler artık databricks Runtime 18'e tarihli güncelleştirmeler olarak gönderilir. Ayrıntılar için bkz. Birleşik sürüm notları hakkında.
JOIN Özel bir uzaklık veya benzerlik ifadesinde üst k derecelendirmesi ile genişletir. Sorgudaki (sol) table_reference her satır için, temelinde hedef (sağ) tablodan num_resultsen çok eşleşen ranking_expression satırları bulur ve bunları birleştirilmiş satırlar olarak döndürür.
ranking_expressionvector_cosine_similarity, vector_l2_distance, vector_inner_product veya çeşitli işlevleri birleştiren bileşik ifade gibi iki tablodan bir çift satır puanlayan herhangi bir sıralanabilir skaler ifade olabilir.
Syntax
{ INNER | LEFT [ OUTER ] } JOIN target_table_reference
{ APPROX | EXACT } NEAREST [ num_results ]
BY { DISTANCE | SIMILARITY } ranking_expression
Parameters
-
Aranacak hedef tablo. Tablo, alt sorgu veya CTE olabilir.
{ INNER | LEFT [ OUTER ] }Optional. Birleştirme türü. Varsayılan değer:
INNER.-
INNEReşleşen adayları olmayan sorgu satırlarını bırakır. -
LEFT OUTERher sorgu satırını döndürür. Hedef tarafındaki sütunlarNULL, hiçbir aday olmadığında, örneğin hedef tablo boş olduğunda veya her aday olduğunda olurNULL. Sorgu satırı için daha aznum_resultsaday varsa, yalnızca kullanılabilir adaylar döndürülür.
Diğer birleştirme türleri (
RIGHT,FULL,SEMI,ANTI,CROSS,NATURAL) yükseltirNEAREST_BY_JOIN.UNSUPPORTED_JOIN_TYPE.-
{ APPROX | EXACT }Sonuç kümesi sözleşmesini denetler.
-
EXACTaltındaranking_expressiontam olarak ilk k satırları döndürür. -
APPROX, tam derecelendirmeye yakın bir üst k kümesi döndürür. İyileştirici, her adayı değerlendirmek yerine daha hızlı, yaklaşık arama stratejileri kullanabilir.
-
EN YAKIN [ num_results ]
İsteğe bağlı pozitif tamsayı değişmez değeri. Varsayılan değer
1’dır. aralığında[1, 100000]olmalıdır. Hedef tabloda değerindennum_resultsdaha az eşleşen satır varsa yalnızca kullanılabilir satırlar döndürülür.Aralığın dışındaki değerler değerini yükseltir
NEAREST_BY_JOIN.NUM_RESULTS_OUT_OF_RANGE.UZAKTAN | BENZERLİK
öğesinin sıralamasını
ranking_expressionayarlar.-
DISTANCEsatırları önce en küçük değere (en yakın = en düşük uzaklık) göre sıralar. -
SIMILARITYsatırları önce en büyük değere (en yakın = en yüksek benzerlik) göre sıralar.
-
ranking_expression
Her iki tablodaki sütunlara da başvurabilen skaler ifade.
Yaygın seçenekler şunlardır:
- vector_cosine_similarity ve vector_inner_product gibi benzerlik işlevleri,
- vector_l2_distance gibi uzaklık işlevleri,
- Manhattan uzaklığı gibi sayısal mesafeler:
vector_norm(zip_with(a.col, b.col, (x, y) -> x - y), 1.0f).
Bu ifade,
MAPgibi sıralamayı desteklemeyen bir veri türü döndürürse, Azure Databricks DATATYPE_MISMATCH oluşturur. INVALID_ORDERING_TYPE.
Notlar
Asimetri
NEAREST BY commutative değil. Sorgu tarafı sonucu sabitler. Her sorgu satırı en fazla num_results çıktı satırı oluşturur:
- Tablodaki 100 satır ile tablodan
usersproducts1.000 satır birleştirildiğindeNEAREST 5birleştirme en fazla 500 satır döndürür. - Birleştirmenin iki tarafını ile
productsbirleştirecekusersşekilde değiştirirseniz, en fazla 5.000 satır döndürür.
İki tarafı değiştirmek farklı bir soru sorar, dolayısıyla sonuç için INNER JOINbile farklılık gösterir.
Yayın Akışı
NEAREST BY Veri Çerçeveleri veya Veri Kümeleri akışında desteklenmez. Akış kaynaklarına yönelik sorgular oluşturur NEAREST_BY_JOIN.STREAMING_NOT_SUPPORTED.
Girişleri ekleme
Vektör puanlama işlevleri kullanılırken, her iki vektör bağımsız değişkeni de aynı boyutsallığa sahip olmalıdır ARRAY<FLOAT> . Bkzvector_cosine_similarity. tür ve NULL işleme kuralları için işlev.
Dizi değerlerinden gömmeleri hesaplamak için, örneğin bir model system.ai.gte-large-enservisi olan ai_querysystem.ai kullanın.
Yaygın hata koşulları
- DATATYPE_MISMATCH. INVALID_ORDERING_TYPE
NEAREST_BY_JOIN.NUM_RESULTS_OUT_OF_RANGENEAREST_BY_JOIN.STREAMING_NOT_SUPPORTEDNEAREST_BY_JOIN.UNSUPPORTED_JOIN_TYPE
Examples
Aşağıdaki örneklerde bu tablolar kullanılır. Eklemeler kısalık için 3 boyutlu vektörler olarak gösterilir; pratikte bunlar daha yüksek boyutludur ve ekleme modeli tarafından hesaplanır.
> CREATE TEMP VIEW users(user_id, name, embedding) AS
VALUES
(1, 'Alice', ARRAY(1.0f, 0.0f, 0.0f)),
(2, 'Bob', ARRAY(0.0f, 1.0f, 0.0f)),
(3, 'Carol', ARRAY(0.0f, 0.0f, 0.0f));
> CREATE TEMP VIEW products(product_id, name, price, country, embedding) AS
VALUES
('P1', 'Trail running shoes', 120, 'EU', ARRAY(0.9f, 0.1f, 0.1f)),
('P2', 'Hiking boots', 180, 'EU', ARRAY(0.8f, 0.2f, 0.0f)),
('P3', 'Office shoes', 95, 'US', ARRAY(0.1f, 0.9f, 0.1f)),
('P4', 'Sandals', 45, 'US', ARRAY(0.0f, 0.8f, 0.2f)),
('P5', 'Running shoes', 110, 'EU', ARRAY(0.5f, 0.5f, 0.0f));
-- Ad-hoc vector search with an explicit query vector.
> SELECT t.product_id, t.name
FROM (SELECT ARRAY(1.0f, 0.0f, 0.0f) AS embedding) q
INNER JOIN products t
APPROX NEAREST 3 BY SIMILARITY vector_cosine_similarity(q.embedding, t.embedding);
product_id name
---------- -------------------
P1 Trail running shoes
P2 Hiking boots
P5 Running shoes
-- Batch recommendations: for every user, return the 2 nearest products.
> SELECT q.user_id, q.name, t.product_id, t.name AS product
FROM users q
INNER JOIN products t
APPROX NEAREST 2 BY SIMILARITY vector_cosine_similarity(q.embedding, t.embedding);
user_id name product_id product
------- ----- ---------- -------------------
1 Alice P1 Trail running shoes
1 Alice P2 Hiking boots
2 Bob P3 Office shoes
2 Bob P4 Sandals
-- Pre-filter the target table via a subquery (EU products only).
> SELECT q.user_id, q.name, t.product_id, t.name AS product, t.price
FROM users q
INNER JOIN (SELECT * FROM products WHERE country = 'EU') AS t
APPROX NEAREST 2 BY SIMILARITY vector_cosine_similarity(q.embedding, t.embedding);
user_id name product_id product price
------- ----- ---------- ------------------- -----
1 Alice P1 Trail running shoes 120
1 Alice P2 Hiking boots 180
2 Bob P5 Running shoes 110
2 Bob P2 Hiking boots 180
-- LEFT OUTER returns every query row. Carol's embedding has zero magnitude,
-- so vector_cosine_similarity returns NULL for all comparisons and her row
-- is preserved with NULL target columns.
> SELECT q.user_id, q.name, t.product_id, t.name AS product
FROM users q
LEFT OUTER JOIN products t
APPROX NEAREST 2 BY SIMILARITY vector_cosine_similarity(q.embedding, t.embedding);
user_id name product_id product
------- ----- ---------- -------------------
1 Alice P1 Trail running shoes
1 Alice P2 Hiking boots
2 Bob P3 Office shoes
2 Bob P4 Sandals
3 Carol NULL NULL
-- EXACT returns the exact top-k under the ranking expression.
> SELECT t.product_id, t.name
FROM (SELECT ARRAY(1.0f, 0.0f, 0.0f) AS embedding) q
INNER JOIN products t
EXACT NEAREST 3 BY DISTANCE vector_l2_distance(q.embedding, t.embedding);
product_id name
---------- -------------------
P1 Trail running shoes
P2 Hiking boots
P5 Running shoes