Tüm Ürünler
Search
Belge Merkezi

AnalyticDB:Vector search

Son Güncelleme:Oct 05, 2026

AnalyticDB for MySQL, standart SQL kullanarak yapılandırılmamış veriler üzerinde vektör aramasını destekler. Özellik vektörlerini yapılandırılmış sütunlarla birlikte saklayın, yaklaşık en yakın komşu (ANN) dizini oluşturun ve L2_DISTANCE ile benzerlik sorguları çalıştırın; ayrı bir vektör veritabanına gerek yoktur.

Ön koşullar

Kümeniz 3.1.4.0 veya sonraki bir çekirdek sürümünü çalıştırmalıdır.

  • Vektör dizini özelliği, 3.1.5.16, 3.1.6.8, 3.1.8.6 veya daha yeni bir çekirdek sürümünü çalıştıran kümelerde daha kararlıdır.

  • Kümeniz listelenen kararlı sürümlerden birini çalıştırmıyorsa, vektör dizini özelliğini kullanmadan önce CSTORE_PROJECT_PUSH_DOWN ve CSTORE_PPD_TOP_N_ENABLE parametrelerini false olarak ayarlayın.

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • V3.1.4.0 veya sonraki bir sürümü çalıştıran bir AnalyticDB for MySQL kümesi

  • (Önerilir) Optimal vektör arama performansı için 3.1.5.16, 3.1.6.8, 3.1.8.6 veya daha yeni bir alt sürüm

Kümeniz önerilen alt sürümlerden birinde değilse, vektör aramasını kullanmadan önce CSTORE_PROJECT_PUSH_DOWN ve CSTORE_PPD_TOP_N_ENABLE parametrelerini false olarak ayarlayın. Alt sürümünüzü kontrol etmek için bkz. AnalyticDB for MySQL kümesinin sürümü nasıl sorgulanır? Alt sürümü yükseltmek için teknik destekle iletişime geçin.

Nasıl çalışır

image.png

Yapılandırılmamış verilerinizden özellikleri çıkarmak ve bunları sabit uzunluklu float dizileri (özellik vektörleri) olarak kodlamak için bir yapay zeka modeli kullanın. Bu vektörleri, yapılandırılmış sütunlarınızla birlikte AnalyticDB for MySQL içinde saklayın.

Sorgu sırasında, bir sorgu vektörünü L2_DISTANCE işlevine iletin. Veritabanı, sorgu vektörü ile depolanan her vektör arasındaki karesel Öklid mesafesini hesaplar ve ardından en yakın eşleşmeleri döndürür. Daha küçük bir mesafe, daha yüksek benzerlik anlamına gelir.

Tam iş akışı şu şekildedir:

  1. Bir veya daha fazla vektör sütunu içeren bir tablo oluşturun (ARRAY<FLOAT>, ARRAY<BYTE> veya ARRAY<SMALLINT>).

  2. Her vektör sütununa bir ANN dizini ekleyin—tablo oluşturma sırasında veya ALTER TABLE ile.

  3. Vektör değerleri dahil olmak üzere satırları ekleyin.

  4. L2_DISTANCE ve ORDER BY … LIMIT (k-en yakın komşu) ile sorgulama yapın veya WHERE içinde bir mesafe eşiği ekleyin (yarıçap en yakın komşu).

Temel kavramlar

Terim Tanım
Özellik vektörü Bir varlığı vektör uzayında temsil eden sabit uzunluklu sayısal dizi. İki vektör arasındaki mesafe, benzerliklerini ölçer. Örneğin, 512 boyutlu bir float dizisi bir insan yüzünü temsil edebilir.
Vektör dizini (ANN INDEX) Vektör sütunlarında yaklaşık en yakın komşu aramasını hızlandıran özel bir dizin.
k-en yakın komşu (KNN) Vektörleri bir sorgu vektörüne en yakın olan k satırı döndürür. ORDER BY l2_distance(...) LIMIT k kullanın.
Yarıçap en yakın komşu (RNN) Vektörleri belirtilen bir mesafe içinde kalan tüm satırları döndürür. WHERE l2_distance(...) < threshold kullanın.
L2_DISTANCE Karesel Öklid mesafesi için SQL işlevi: (x₁−y₁)² + (x₂−y₂)² + … + (xₙ−yₙ)². Daha düşük bir değer, vektörlerin daha benzer olduğu anlamına gelir.

Vektör dizini içeren bir tablo oluşturun

Vektör sütunlarını ARRAY<FLOAT>, ARRAY<BYTE> veya ARRAY<SMALLINT> olarak tanımlayın ve aynı CREATE TABLE ifadesinde ANN INDEX bildirimlerini ekleyin.

Sözdizimi:

ANN INDEX [index_name] (column_name) [algorithm=HNSW_PQ] [distancemeasure=SquaredL2]
Parametre Açıklama
index_name Dizin adı. Bkz. Adlandırma sınırları.
column_name Vektör sütununun adı. Desteklenen veri türleri: ARRAY<FLOAT>, ARRAY<BYTE>, ARRAY<SMALLINT>. Bkz. Adlandırma sınırları.
algorithm HNSW_PQ (ürün kuantizasyonlu hiyerarşik gezilebilir küçük dünya) olarak ayarlayın. Bu, desteklenen tek algoritmadır.
distancemeasure SquaredL2 (karesel Öklid mesafesi) olarak ayarlayın. Bu, desteklenen tek mesafe metriğidir. Formül: (x₁−y₁)² + (x₂−y₂)² + … + (xₙ−yₙ)².

Örnek:

Aşağıdaki ifade, iki dizinli vektör sütunu içeren vector adlı bir tablo oluşturur: float_feature (ARRAY<FLOAT>, 4 boyutlu) ve short_feature (ARRAY<SMALLINT>, 4 boyutlu).

CREATE TABLE vector (
  xid bigint not null,
  cid bigint not null,
  uid varchar not null,
  vid varchar not null,
  wid varchar not null,
  float_feature array < float >(4),
  short_feature array < smallint >(4),
  ANN INDEX idx_short_feature(short_feature),
  ANN INDEX idx_float_feature(float_feature),
  PRIMARY KEY (xid, cid, vid)
) DISTRIBUTED BY HASH(xid);

Mevcut bir tabloya vektör dizini ekleyin

Mevcut bir tabloda bir sütuna ANN dizini eklemek için ALTER TABLE kullanın.

Sözdizimi:

ALTER TABLE table_name ADD ANN INDEX [index_name] (column_name) [algorithm=HNSW_PQ] [distancemeasure=SquaredL2]

Örnek:

Aşağıdaki tablo verildiğinde (ANN dizinleri olmadan oluşturulmuştur):

CREATE TABLE vector (
  xid BIGINT not null,
  cid BIGINT not null,
  uid VARCHAR not null,
  vid VARCHAR not null,
  wid VARCHAR not null,
  float_feature array < FLOAT >(4),
  short_feature array < SMALLINT >(4),
  PRIMARY KEY (xid, cid, vid)
) DISTRIBUTED BY HASH(xid);

Her iki vektör sütununa da dizin ekleyin:

ALTER TABLE vector ADD ANN INDEX idx_float_feature(float_feature);
ALTER TABLE vector ADD ANN INDEX idx_short_feature(short_feature);
ALTER TABLE table_name ADD ANN INDEX [index_name] (column_name) [algorithm=HNSW_PQ ] [distancemeasure=SquaredL2]
ALTER TABLE table_name ADD ANN INDEX [index_name] (column_name) [algorithm=HNSW_PQ ] [distancemeasure=SquaredL2|CosineSimilarity]

Vektör verilerini sorgulayın

Aşağıdaki tüm örnekler, satırları bir sorgu vektörüne benzerliğe göre sıralamak için L2_DISTANCE kullanır.

Örnek verileri ekleyin:

INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (1,2,'A','B','C','[1,1,1,1]','[1.2,1.5,2,3.0]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (2,1,'e','v','f','[2,2,2,2]','[1.5,1.15,2.2,2.7]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (0,6,'d','f','g','[3,3,3,3]','[0.2,1.6,5,3.7]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (5,4,'j','b','h','[4,4,4,4]','[1.0,4.15,6,2.9]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (8,5,'Sj','Hb','Dh','[5,5,5,5]','[1.3,4.5,6.9,5.2]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (5,4,'x','g','h','[3,4,4,4]','[1.0,4.15,6,2.9]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (5,4,'j','r','k','[6,6,4,4]','[1.0,4.15,6,2.9]');
INSERT into vector (xid,cid,uid,vid,wid,short_feature,float_feature) VALUES (5,4,'s','i','q','[2,2,4,4]','[1.0,4.15,6,2.9]');

KNN: en yakın k komşuyu döndürün

[1,1,1,1] değerine en yakın olan short_feature içindeki ilk 3 satırı döndürün:

SELECT xid, l2_distance(short_feature, '[1,1,1,1]') as dis FROM vector ORDER BY 2 LIMIT 3;

Sonuç:

+-------+--------------+
| xid   |   dis        |
+-------+--------------+
| 1     |   0.0        |
+-------+--------------+
| 2     |   4.0        |
+-------+--------------+
| 0     |   16.0       |
+-------+--------------+

Yapılandırılmış filtre ile KNN

xid = 5 ve cid = 4 olduğu durumdaki en yakın 4 satırı döndürün:

SELECT uid, l2_distance(short_feature, '[1,1,1,1]') as dis FROM vector WHERE xid = 5 AND cid = 4 ORDER BY 2 LIMIT 4;

Sonuç:

+-------+--------------+
| uid   |   dis        |
+-------+--------------+
| s     |   20.0       |
+-------+--------------+
| x     |   31.0       |
+-------+--------------+
| j     |   36.0       |
+-------+--------------+
| j     |   68.0       |
+-------+--------------+

RNN: Mesafe eşiğine göre filtreleme

Mesafenin 50,0'dan küçük ve xid = 5 olduğu durumdaki en fazla 3 satırı döndürün:

SELECT uid, l2_distance(short_feature, '[1,1,1,1]') as dis FROM vector WHERE l2_distance(short_feature, '[1,1,1,1]') < 50.0 AND xid = 5 ORDER BY 2 LIMIT 3;

Sonuç:

+-------+---------------+
| uid   |   dis         |
+-------+---------------+
| s     |   20.0        |
+-------+---------------+
| x     |   31.0        |
+-------+---------------+
| j     |   36.0        |
+-------+---------------+

Kullanım durumları

  • Görsel tabanlı arama — Ürün veya sahne görsellerini vektörler olarak kodlayın ve görsel olarak benzer sonuçları bulun.

  • Yüz tanıma — Yüz gömme verilerini saklayın ve sorgu yüzlerini bir veritabanıyla eşleştirin.

  • Ses izi eşleştirme — Kimlik doğrulama veya tanımlama için konuşmacı ses gömme verilerini karşılaştırın.

  • Metin araması — Cümleleri bir dil modeliyle kodlayın ve anlamsal olarak benzer pasajları alın.

Performans

AnalyticDB for MySQL, milisaniye düzeyinde vektör araması sunmak için büyük ölçekli paralel işleme (MPP) mimarisini kullanır. 512 boyutlu yüz vektörleri kullanılarak yapılan kıyaslama sonuçları:

Senaryo Veri hacmi QPS Yanıt süresi Geri çağırma
Yüksek geri çağırma, orta yük 10 milyar giriş 100 50 ms %99
Yüksek aktarım hızı 200 milyon giriş 1.000 1 sn %99

Veritabanı, yüksek eşzamanlı gerçek zamanlı yazma işlemlerini destekler. Veriler, eklendikten hemen sonra sorgulanabilir durumdadır.