TairVector, yüksek performanslı ve gerçek zamanlı vektör depolama ile sorgulama işlemleri için Tair tarafından sunulan genişletilmiş bir veri yapısıdır.
TairVector
TairVector çok katmanlı bir hash veri yapısı kullanır.
TairVector iki dizinleme algoritması sunar: Hiyerarşik Gezilebilir Küçük Dünya (HNSW) ve düz arama:
HNSW: Vektör araması için graf tabanlı dizinler oluşturur ve eşzamansız alan geri kazanımını destekler. Bu yaklaşım, gerçek zamanlı güncellemelerle performansı dengelerken yüksek sorgu doğruluğu sağlar.
Düz arama: %100 sorgu doğruluğu ve hızlı veri ekleme sunarak küçük veri kümeleri için idealdir.
TairVector ayrıca Öklid uzaklığı, iç çarpım, kosinüs uzaklığı ve Jaccard uzaklığı gibi birden fazla uzaklık ölçütünü destekler. Geleneksel vektör arama hizmetleriyle karşılaştırıldığında TairVector aşağıdaki avantajları sunar:
Tüm verileri bellekte saklar ve daha düşük okuma/yazma gecikme süresi elde etmek için gerçek zamanlı dizin güncellemelerini destekler.
Bellek kullanımını azaltmak için optimize edilmiş bir bellek içi veri yapısı kullanır.
Karmaşık bileşen bağımlılıkları olmadan basit ve verimli bir mimariyle hazır bir cloud hizmeti olarak sunulur.
Vektör aramasını tam metin aramasıyla birleştiren hibrit aramayı destekler.
Etiket nitelikleri gibi skaler değerler üzerinde ters dizin oluşturmayı destekler. Bu sayede k-en yakın komşu (KNN) araması önce skalerlere göre filtreleme yapar, ardından filtrelenmiş sonuçlar üzerinde vektör araması gerçekleştirir.
Sürüm notları
13 Ekim 2022: TairVector, Redis 6.0 ile uyumlu Tair DRAM tabanlı örneklerde kullanıma sunuldu.
22 Kasım 2022 (Sürüm 6.2.2.0): Jaccard uzaklık ölçütü desteği eklendi. TVS.GETINDEX komutu, her bir dizin için bellek kullanım istatistiklerini
index_data_sizeveattribute_data_sizealanlarında döndürecek şekilde geliştirildi.26 Aralık 2022 (Sürüm 6.2.3.0): Kümelerde proxy modu desteği, FLOAT16 vektör veri türü ve TVS.MINDEXKNNSEARCH ile TVS.MINDEXMKNNSEARCH komutları eklendi.
4 Temmuz 2023 (Sürüm 6.2.8.2): Kosinüs uzaklık ölçütü desteği ve HNSW dizinleri için otomatik çöp toplama özelliği eklendi.
3 Ağustos 2023 (Sürüm 23.8.0.0): TVS.HEXPIREAT ve TVS.HPEXPIREAT gibi komutlarla anahtar düzeyinde yaşam süresi (TTL) ayarlama ve TVS.GETDISTANCE komutuyla belirtilen anahtar listeleri üzerinde vektör en yakın komşu araması yapma desteği eklendi. Bu sürüm ayrıca TVS.CREATEINDEX ve TVS.KNNSEARCH gibi komutların güncellenmesiyle tam metin aramasını da tanıtarak hibrit aramayı mümkün kılmıştır.
6 Haziran 2024 (Sürüm 24.5.1.0): En yakın komşu aramaları sırasında etiket niteliği bilgilerini döndürmek üzere TVS.KNNSEARCHFIELD ve TVS.MINDEXKNNSEARCHFIELD komutları eklendi.
22 Temmuz 2024 (Sürüm 24.7.0.0): Seyrek vektörler için HNSW dizinleri etkinleştirildi.
En iyi uygulamalar
Ön koşullar
Örnek, Redis 6.0 veya üzeri sürümle uyumlu bir DRAM tabanlı örnek olmalıdır.
Redis 5.0 çalıştıran bir DRAM tabanlı örnek Redis 6.0'a yükseltilemez. Redis 6.0 kullanmak için yeni bir DRAM tabanlı örnek oluşturmanız gerekir.
Notlar
Bu işlemler bir Tair örneğindeki TairVector verilerine uygulanır.
TairVector, index_name ve Key gibi alanlarda Redis diyez (#) özelliğini desteklemez.
TairVector MOVE gibi komutları desteklemez.
Yüksek veri kalıcılığı gereksinimleri için yarı eşzamanlı çoğaltma modunu etkinleştirin.
Komut referansı
Tablo 1. TairVector komutları
|
Tür |
Komut |
Sözdizimi |
Açıklama |
|
Dizin işlemleri |
|
Dizin oluşturma ve sorgulama için kullanılan algoritmayı ve uzaklık fonksiyonunu belirterek bir vektör dizini oluşturur. Dizin yalnızca |
|
|
|
Belirtilen bir vektör dizininin meta verilerini alır. |
||
|
|
Belirtilen bir vektör dizinini ve içerdiği tüm verileri siler. |
||
|
|
Bir Tair örneğinde belirtilen kriterlerle eşleşen vektör dizinlerini artımlı olarak tarar. |
||
|
Vektör veri işlemleri |
|
Bir vektör dizinine veri kaydı ekler. Belirtilen anahtar ile mevcut bir kayıt varsa mevcut kayıt üzerine yazılır. |
|
|
|
Bir vektör dizinindeki belirtilen anahtar için veri kaydının tüm niteliklerini ve değerlerini alır. |
||
|
|
Bir vektör dizinindeki verilen anahtar için belirtilen nitelik anahtarlarının değerlerini döndürür. |
||
|
|
Belirtilen vektör dizininden belirtilen veri kaydını (anahtar) siler. |
||
|
|
Bir vektör dizinindeki bir kayıttan (anahtar) bir veya daha fazla attribute_key ve bunların değerlerini siler. |
||
|
|
Belirli bir vektör dizini içinde belirtilen koşulları sağlayan veri kayıtlarını (anahtar ile tanımlanan) tarar. |
||
|
|
Bir vektör dizinindeki belirtilen veri kaydının (anahtar) |
||
|
|
Belirtilen bir vektör dizinindeki verilen veri kaydının (anahtar) |
||
|
|
Belirtilen bir vektör dizinindeki anahtar ile tanımlanan bir veri kaydı için milisaniye cinsinden mutlak sona erme zamanını ayarlar. |
||
|
|
Bir vektör dizinindeki belirtilen anahtar için milisaniye cinsinden göreceli sona erme zamanını ayarlar. |
||
|
|
Bir vektör dizinindeki belirtilen anahtar için saniye hassasiyetinde mutlak bir sona erme zamanı ayarlar. |
||
|
|
Bir vektör dizinindeki belirtilen vektör (anahtar) için saniye cinsinden göreceli sona erme zamanını ayarlar. |
||
|
|
Bir vektör dizinindeki belirtilen veri kaydı (anahtar) için milisaniye cinsinden TTL (yaşam süresi) değerini döndürür. |
||
|
|
Belirtilen bir vektör dizinindeki belirtilen veri kaydı (anahtar) için saniye cinsinden TTL (yaşam süresi) değerini alır. |
||
|
|
Bir vektör dizinindeki belirtilen veri kaydının (anahtar) mutlak sona erme zamanını milisaniye cinsinden Unix zaman damgası olarak döndürür. |
||
|
|
Bir vektör dizinindeki belirtilen veri kaydının (anahtar) mutlak sona erme zamanını saniye cinsinden Unix zaman damgası olarak döndürür. |
||
|
Vektör en yakın komşu sorguları |
|
Bir vektör dizinindeki belirtilen bir vektör için en yakın komşu sorgusu gerçekleştirir ve en fazla topN sonuç döndürür. |
|
|
|
Bir vektör dizininde belirtilen bir vektörün en yakın komşularını arar. Arama mantığı TVS.KNNSEARCH ile aynıdır ancak bu komut etiket niteliklerini de döndürür. |
||
|
|
Bir vektör dizini içinde belirtilen anahtar listesinden bir sorgu vektörünün en yakın komşularını bulur. |
||
|
|
Belirtilen bir vektör dizininde birden çok vektör için toplu en yakın komşu araması gerçekleştirir. |
||
|
|
Birden çok vektör dizini arasında belirtilen bir vektörün en yakın komşularını arar. |
||
|
|
Birden çok vektör dizini arasında belirtilen bir vektör için en yakın komşu sorgusu gerçekleştirir ve isteğe bağlı olarak etiketleri döndürür. |
||
|
|
Birden çok vektör dizininde birden çok vektörün en yakın komşularını arar. |
||
|
Genel |
|
Yerel Redis DEL komutunu kullanarak bir veya daha fazla TairVector dizinini siler. |
Aşağıdaki liste bu konudaki komut sözdizimi kurallarını açıklar:
BÜYÜK HARF anahtar sözcük: Komut anahtar sözcüğünü belirtir.İtalik metin: Değişkenleri belirtir.
[seçenekler]: İçine alındığı parametrelerin isteğe bağlı olduğunu belirtir. Parantez içine alınmamış parametreler belirtilmelidir.A|B: Dikey çizgilerle (|) ayrılan parametrelerin birbirini dışladığını belirtir. Parametrelerden yalnızca biri belirtilebilir....: Bu sembolün önündeki parametrenin tekrar tekrar belirtilebileceğini gösterir.
TVS.CREATEINDEX
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Dizin oluşturma ve sorgulama için kullanılan algoritmayı ile uzaklık fonksiyonunu belirterek bir vektör dizini oluşturur. Dizin yalnızca |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komutlar:
Örnek çıktı:
|
TVS.GETINDEX
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Belirtilen vektör dizininin meta verilerini alır. |
|
Parametre |
|
|
Çıktı |
|
|
Örnek |
Önce aşağıdaki komutları çalıştırın:
HNSW dizini için örnek komut:
Örnek çıktı:
|
TVS.DELINDEX
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(N); burada N, vektör dizinindeki anahtar sayısıdır. |
|
Açıklama |
Belirtilen vektör dizinini ve içerdiği tüm verileri siler. |
|
Parametre |
|
|
Dönüş değeri |
|
|
Örnek |
Komut:
Çıktı:
|
TVS.SCANINDEX
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(N); burada N, Tair örneğindeki vektör dizini sayısıdır. |
|
Komut açıklaması |
Bir Tair örneğinde belirtilen ölçütlerle eşleşen vektör dizinlerini artımlı olarak tarar. |
|
Seçenekler |
|
|
Çıktı |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
Desen içeren örnek komut:
Örnek çıktı:
|
TVS.HSET
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
Vektör verisi oluşturulmuyor veya güncellenmiyorsa zaman karmaşıklığı O(1)'dir; aksi takdirde O(log(N)) olur; burada N, vektör dizinindeki anahtar sayısıdır. |
|
Komut açıklaması |
Bir vektör dizinine veri kaydı ekler. Belirtilen anahtar ile bir veri kaydı zaten varsa mevcut kayıt üzerine yazılır. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HGETALL
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizininde belirtilen anahtar için veri kaydının tüm niteliklerini ve değerlerini alır. |
|
Parametre |
|
|
Dönüş değeri |
|
|
Örnek |
Komut örneği:
Dönüş örneği:
|
TVS.HMGET
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizininde verilen bir anahtar için belirtilen nitelik anahtarlarının değerlerini döndürür. |
|
Parametreler |
|
|
Dönüşler |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.DEL
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Belirtilen vektör dizininden belirtilen veri kaydını (anahtar) siler. |
|
Parametre |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HDEL
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki bir kayıtta (key) bulunan bir veya daha fazla attribute_key öğesini ve bunların değerlerini siler. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.SCAN
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(N); burada N, vektör dizinindeki anahtar sayısıdır. |
|
Komut açıklaması |
Belirtilen bir vektör dizini içindeki belirli koşulları karşılayan veri kayıtlarını (key ile tanımlanır) tarar. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek dönüş değeri:
|
TVS.HINCRBY
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen veri kaydının (key)
|
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HINCRBYFLOAT
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Belirtilen bir vektör dizinindeki bir veri kaydının (key) Belirtilen |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HPEXPIREAT
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Belirtilen bir vektör dizinindeki bir veri kaydının (key ile tanımlanır) mutlak sona erme süresini milisaniye cinsinden ayarlar. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HPEXPIRE
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen key için göreceli sona erme süresini milisaniye cinsinden ayarlar. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HEXPIREAT
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen key için saniye hassasiyetinde mutlak bir sona erme süresi ayarlar. |
|
Seçenekler |
|
|
Dönüş değeri |
|
|
Örnek |
Komut örneği:
Dönüş örneği:
|
TVS.HEXPIRE
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen vektör (key) için göreceli sona erme süresini saniye cinsinden ayarlar. |
|
Parametreler |
|
|
Çıktı |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HPTTL
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen bir veri kaydı (key) için milisaniye cinsinden TTL (Time To Live) değerini döndürür. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HTTL
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Belirtilen bir vektör dizinindeki bir veri kaydı (key) için saniye cinsinden TTL değerini alır. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Komut örneği:
Dönüş örneği:
|
TVS.HPEXPIRETIME
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen bir veri kaydının (key) mutlak sona erme zamanını milisaniye cinsinden Unix zaman damgası olarak döndürür. |
|
Parametre |
|
|
Dönüş değeri |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.HEXPIRETIME
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
O(1) |
|
Komut açıklaması |
Bir vektör dizinindeki belirtilen veri kaydının (key) mutlak sona erme süresini saniye cinsinden Unix zaman damgası olarak döndürür. |
|
Parametreler |
|
|
Çıktı |
|
|
Örnek |
Örnek komut:
Örnek çıktı:
|
TVS.KNNSEARCH
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Bir vektör dizininde belirtilen bir vektör için en yakın komşu sorgusu gerçekleştirir ve en fazla topN sonuç döndürür. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnekler |
Aşağıdaki komutları önceden çalıştırın:
Örnek 1:
Yanıt 1:
Örnek 2:
Yanıt 2:
|
TVS.KNNSEARCHFIELD
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Bir vektör dizininde belirtilen bir vektörün en yakın komşularını arar. Arama mantığı TVS.KNNSEARCH ile aynıdır ancak bu komut etiket niteliklerini de döndürür. |
|
Parametre |
|
|
Dönüş değeri |
|
|
Örnek |
Önce aşağıdaki komutları çalıştırın:
Örnek komut:
Örnek çıktı:
|
TVS.GETDISTANCE
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Bir vektör dizini içindeki belirtilen bir anahtar listesinden bir sorgu vektörünün en yakın komşularını bulur. |
|
Parametre |
|
|
Çıktı |
|
|
Örnek |
Önce aşağıdaki komutları çalıştırın:
Örnek komut:
Örnek çıktı:
|
TVS.MKNNSEARCH
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Belirtilen bir vektör dizininde birden çok vektör için toplu en yakın komşu araması gerçekleştirir. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Aşağıdaki komutları önceden çalıştırın:
Örnek komut:
Örnek çıktı:
|
TVS.MINDEXKNNSEARCH
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Birden çok vektör dizini arasında belirtilen bir vektörün en yakın komşularını arar. |
|
Parametre |
|
|
Çıktı |
|
|
Örnek |
Önce bu komutları çalıştırın:
Örnek komut:
Örnek çıktı:
|
TVS.MINDEXKNNSEARCHFIELD
|
Kategori |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtarların sayısını ifade eder. |
|
Komut açıklaması |
Birden çok vektör dizini arasında belirtilen bir vektör için en yakın komşu sorgusu gerçekleştirir ve isteğe bağlı olarak etiketleri döndürür. |
|
Parametreler |
|
|
Çıktı |
|
|
Örnek |
Önce aşağıdaki komutları yürütün:
Örnek komut:
Örnek çıktı:
|
TVS.MINDEXMKNNSEARCH
|
Öğe |
Açıklama |
|
Sözdizimi |
|
|
Zaman karmaşıklığı |
N, vektör dizinindeki anahtar sayısını temsil eder. |
|
Komut açıklaması |
Birden çok vektör için en yakın komşuları bulmak amacıyla birden fazla vektör dizininde arama yapar. |
|
Parametreler |
|
|
Dönüş değeri |
|
|
Örnek |
Önce aşağıdaki komutları çalıştırın:
Örnek komut:
Örnek çıktı:
|