Tüm Ürünler
Search
Belge Merkezi

Tair (Redis® OSS-Compatible):Vektör

Son Güncelleme:Oct 03, 2026

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 data structure 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ı

  1. 13 Ekim 2022: TairVector, Redis 6.0 ile uyumlu Tair DRAM tabanlı örneklerde kullanıma sunuldu.

  2. 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_size ve attribute_data_size alanlarında döndürecek şekilde geliştirildi.

  3. 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. 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.

  5. 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. 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.

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

Not

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

TVS.CREATEINDEX

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key alog_param_value] ...

Dizin oluşturma ve sorgulama için kullanılan algoritmayı ve uzaklık fonksiyonunu belirterek bir vektör dizini oluşturur. Dizin yalnızca TVS.DELINDEX komutuyla silinebilir.

TVS.GETINDEX

TVS.GETINDEX index_name

Belirtilen bir vektör dizininin meta verilerini alır.

TVS.DELINDEX

TVS.DELINDEX index_name

Belirtilen bir vektör dizinini ve içerdiği tüm verileri siler.

TVS.SCANINDEX

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

Bir Tair örneğinde belirtilen kriterlerle eşleşen vektör dizinlerini artımlı olarak tarar.

Vektör veri işlemleri

TVS.HSET

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

Bir vektör dizinine veri kaydı ekler. Belirtilen anahtar ile mevcut bir kayıt varsa mevcut kayıt üzerine yazılır.

TVS.HGETALL

TVS.HGETALL index_name key

Bir vektör dizinindeki belirtilen anahtar için veri kaydının tüm niteliklerini ve değerlerini alır.

TVS.HMGET

TVS.HMGET index_name key attribute_key [attribute_key ...]

Bir vektör dizinindeki verilen anahtar için belirtilen nitelik anahtarlarının değerlerini döndürür.

TVS.DEL

TVS.DEL index_name key [key ...]

Belirtilen vektör dizininden belirtilen veri kaydını (anahtar) siler.

TVS.HDEL

TVS.HDEL index_name key attribute_key [attribute_key ...]

Bir vektör dizinindeki bir kayıttan (anahtar) bir veya daha fazla attribute_key ve bunların değerlerini siler.

TVS.SCAN

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

Belirli bir vektör dizini içinde belirtilen koşulları sağlayan veri kayıtlarını (anahtar ile tanımlanan) tarar.

TVS.HINCRBY

TVS.HINCRBY index_name key attribute_key num

Bir vektör dizinindeki belirtilen veri kaydının (anahtar) attribute_key tamsayı değerini num kadar artırır.

TVS.HINCRBYFLOAT

TVS.HINCRBYFLOAT index_name key attribute_key num

Belirtilen bir vektör dizinindeki verilen veri kaydının (anahtar) attribute_key değerini kayan noktalı sayı num kadar artırır.

TVS.HPEXPIREAT

TVS.HPEXPIREAT index_name key milliseconds-timestamp

Belirtilen bir vektör dizinindeki anahtar ile tanımlanan bir veri kaydı için milisaniye cinsinden mutlak sona erme zamanını ayarlar.

TVS.HPEXPIRE

TVS.HPEXPIRE index_name key milliseconds-timestamp

Bir vektör dizinindeki belirtilen anahtar için milisaniye cinsinden göreceli sona erme zamanını ayarlar.

TVS.HEXPIREAT

TVS.HEXPIREAT index_name key timestamp

Bir vektör dizinindeki belirtilen anahtar için saniye hassasiyetinde mutlak bir sona erme zamanı ayarlar.

TVS.HEXPIRE

TVS.HEXPIRE index_name key timestamp

Bir vektör dizinindeki belirtilen vektör (anahtar) için saniye cinsinden göreceli sona erme zamanını ayarlar.

TVS.HPTTL

TVS.HPTTL index_name key

Bir vektör dizinindeki belirtilen veri kaydı (anahtar) için milisaniye cinsinden TTL (yaşam süresi) değerini döndürür.

TVS.HTTL

TVS.HTTL index_name key

Belirtilen bir vektör dizinindeki belirtilen veri kaydı (anahtar) için saniye cinsinden TTL (yaşam süresi) değerini alır.

TVS.HPEXPIRETIME

TVS.HPEXPIRETIME index_name key

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.

TVS.HEXPIRETIME

TVS.HEXPIRETIME index_name key

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ı

TVS.KNNSEARCH

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

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.

TVS.KNNSEARCHFIELD

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

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.

TVS.GETDISTANCE

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

Bir vektör dizini içinde belirtilen anahtar listesinden bir sorgu vektörünün en yakın komşularını bulur.

TVS.MKNNSEARCH

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Belirtilen bir vektör dizininde birden çok vektör için toplu en yakın komşu araması gerçekleştirir.

TVS.MINDEXKNNSEARCH

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

Birden çok vektör dizini arasında belirtilen bir vektörün en yakın komşularını arar.

TVS.MINDEXKNNSEARCHFIELD

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

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.

TVS.MINDEXMKNNSEARCH

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Birden çok vektör dizininde birden çok vektörün en yakın komşularını arar.

Genel

DEL

DEL key [key ...]

Yerel Redis DEL komutunu kullanarak bir veya daha fazla TairVector dizinini siler.

Not

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

TVS.CREATEINDEX index_name dims algorithm distance_method [algo_param_key algo_param_value] ...

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 TVS.DELINDEX komutu kullanılarak silinebilir.

Parametreler

  • index_name: Vektör dizininin adı.

  • dims: Vektör boyutu. Dizine eklenen tüm vektörlerin aynı boyuta sahip olması gerekir. Değer [1, 32768] aralığında olmalıdır.

  • algorithm: Dizin oluşturma ve sorgulama için kullanılacak algoritma. Geçerli değerler:

    • FLAT: Ayrı bir dizin oluşturmadan kaba kuvvet araması kullanarak sorguları gerçekleştirir. Bu algoritma, 10.000'den az kayıt içeren küçük veri kümeleri için uygundur.

    • HNSW: Sorgular için HNSW graf tabanlı bir dizin oluşturur. Bu algoritma büyük veri kümeleri için uygundur.

  • distance_method: Vektörler arasındaki mesafeyi hesaplama yöntemi. Geçerli değerler:

    • L2: Kareli Öklid mesafesi.

    • IP: İç çarpım. Mesafe 1 - iç çarpım olarak hesaplanır.

    • COSINE: Kosinüs mesafesi. Mesafe 1 - kosinüs benzerliği olarak hesaplanır. Kosinüs mesafesi kullanıldığında giriş vektörleri birim vektörlere dönüştürülür (L2 normalizasyonu). Sonuç olarak döndürülen vektörler orijinal vektörlerle aynı olmayabilir.

    • JACCARD: Jaccard mesafesi. Mesafe 1 - Jaccard katsayısı olarak hesaplanır. data_type parametresinin BINARY olarak ayarlanmasını gerektirir.

  • algo_param_key ve algo_param_value:

    • data_type: Yoğun vektörün veri türü. Geçerli değerler:

      • FLOAT32 (varsayılan): 4 baytlık tek duyarlıklı kayan noktalı sayı.

      • FLOAT16: IEEE 754-2008 standardına uygun 2 baytlık yarı duyarlıklı kayan noktalı sayı. Bu veri türü vektörler için depolama kullanımını azaltabilir ancak hassasiyet kaybına neden olabilir. FLOAT16 için değer aralığı [-65519, 65519]'dir.

      • BINARY: Yalnızca 0 ve 1 içeren ikili vektör. Bu veri türü yalnızca Jaccard mesafe fonksiyonu ile kullanılabilir.

    • HNSW dizinlerine özgü parametreler:

      • ef_construct: HNSW algoritmasıyla dizin oluşturma sırasında kullanılan dinamik listenin boyutu. Varsayılan değer 100'dür ve geçerli aralık [1, 1000]'dir. Daha büyük bir değer genellikle sorgu doğruluğunu artırır ancak performansı düşürür.

      • M: Grafiğin her katmanındaki her düğüm için maksimum giden bağlantı sayısı. Varsayılan değer 16'dır ve geçerli aralık [1, 100]'dür. Daha büyük bir değer genellikle sorgu doğruluğunu artırır ancak performansı düşürür.

      • auto_gc: Otomatik dizin alanı geri kazanımını etkinleştirir veya devre dışı bırakır. Geçerli değerler false (varsayılan) ve true'dir. Bu özellik örnek alt sürümünün 6.2.8.2 veya üzeri olmasını gerektirir. HNSW dizinleri işaretli silme kullanır. Bu özelliği etkinleştirmek otomatik alan geri kazanımına olanak tanır; bu durum bellek kullanımını azaltır ancak en yakın komşu sorgu performansını etkileyebilir. Bellek açısından hassas senaryolar için bu özelliği etkinleştirmenizi öneririz.

    • Hibrit dizinlere özgü parametreler:

      • Belirli bir etiket alanında ters dizin oluşturmak için alan adını ve veri türünü belirtmeniz gerekir.

        field_name üzerinde ters dizin oluşturmak için inverted_index_<field_name> int|long|float|double|string sözdizimini kullanın. Desteklenen veri türleri int, long, float, double ve string'dir. field_name ve veri türü anahtar kelimeleri küçük harfle yazılmalıdır.

        Örneğin, String türünde productname adlı bir alanda ters dizin oluşturmak için inverted_index_productname string kullanın.

      • lexical_algorithm: Tam metin arama algoritması.

        • bm25: Tam metin arama için uygun olan BM25 (Okapi BM25) algoritması.

          • Sonraki adımda TVS.HSET kullanarak veri yazarken attribute_key değerini TEXT (büyük harf olmalıdır) olarak ayarlayın. Böylece ilgili attribute_value üzerinde otomatik olarak tam metin dizini oluşturulur.

          • Orijinal metni siz sağlarsınız ve Tair dizini oluşturur.

        • vector: Seyrek vektörler için uygun olan vektör algoritması.

          Orijinal metni (embedding) kodlayıp seyrek vektörü sağlamanız gerekir. Veri formatı "[[,],[,],...]" şeklindedir; burada index bir uint32_t, value ise terimin ağırlığını veya sıklığını temsil eden bir Float değeridir.

      • lexical_algorithm değerini bm25 olarak ayarlarsanız aşağıdaki parametreleri de yapılandırabilirsiniz.

        • analyzer: Analiz aracı. Şu anda jieba (varsayılan) ve ik_smart desteklenmektedir.

        • k1: BM25 algoritmasında terim sıklığı doygunluğunu kontrol eder. Değer 0'dan büyük olmalıdır. Varsayılan değer 1,2'dir.

        • b: BM25 algoritmasında belge uzunluğunun etkisini kontrol eder. Değer [0, 1] aralığında olmalıdır. Varsayılan değer 0,75'tir.

      • lexical_algorithm değerini vector olarak ayarlarsanız aşağıdaki parametreleri de yapılandırabilirsiniz.

        • lexical_use_hnsw: Seyrek vektörler için HNSW dizininin kullanılıp kullanılmayacağını belirtir. Geçerli değerler: 1 (HNSW dizini kullan) ve 0 (varsayılan, ters dizin kullan).

        • lexical_hnsw_m: lexical_use_hnsw değeri 1 olarak ayarlandığında bu parametre, yukarıda HNSW dizinlerine özgü parametreler bölümünde açıklanan HNSW dizini için M değerini belirtir.

        • lexical_hnsw_ef_construct: lexical_use_hnsw değeri 1 olarak ayarlandığında bu parametre, yukarıda HNSW dizinlerine özgü parametreler bölümünde açıklanan HNSW dizini için ef_construct değerini belirtir.

      • hybrid_ratio: Bir sorguda vektör araması için varsayılan ağırlık. Değer [0, 1] aralığında bir float olmalıdır. Varsayılan değer 0,5'tir. Tam metin araması için ağırlık 1 - hybrid_ratio olarak hesaplanır.

Dönüş değeri

  • Başarılı olursa OK döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Örnek komutlar:

# Create a vector index with a vector dimension of 2, the HNSW algorithm, the Jaccard distance function, and the BINARY data type.
TVS.CREATEINDEX index_name0 2 HNSW JACCARD data_type BINARY

# Create a vector index with a vector dimension of 2, the HNSW algorithm, the L2 distance function, and the FLOAT32 data type.
TVS.CREATEINDEX index_name1 2 HNSW L2 

# Create a vector index with a vector dimension of 2, the FLAT algorithm, the IP distance function, and the FLOAT32 data type.
TVS.CREATEINDEX index_name2 2 FLAT IP 

# Create a vector index with a vector dimension of 2, the FLAT algorithm, the Jaccard distance function, and the BINARY data type.
TVS.CREATEINDEX index_name3 2 FLAT JACCARD data_type BINARY

# Create a hybrid index combining HNSW vector search with bm25 full-text search.
TVS.CREATEINDEX index_name4 2 HNSW IP lexical_algorithm bm25 inverted_index_productname string

# Create a sparse vector index with a vector dimension of 2, the IP distance function, and an HNSW index.
TVS.CREATEINDEX index_name5 2 HNSW IP lexical_algorithm vector lexical_use_hnsw 1 lexical_hnsw_m 8 lexical_hnsw_ef_construct 100

Örnek çıktı:

OK

TVS.GETINDEX

Öğe

Açıklama

Sözdizimi

TVS.GETINDEX index_name

Zaman karmaşıklığı

O(1)

Komut açıklaması

Belirtilen vektör dizininin meta verilerini alır.

Parametre

  • index_name: Vektör dizininin adı.

Çıktı

  • Komut başarılı olursa vektör dizininin meta verilerini döndürür.

  • Belirtilen vektör dizini mevcut değilse (empty array) döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Önce aşağıdaki komutları çalıştırın:

TVS.CREATEINDEX my_index 2 HNSW L2 auto_gc true lexical_algorithm bm25
TVS.HSET my_index key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index key2 VECTOR [5,6] creation_time 1750

HNSW dizini için örnek komut:

TVS.GETINDEX my_index

Örnek çıktı:

 1) "lexical_term_count"   // The number of terms in the full-text index.
 2) "0"
 3) "lexical_record_count" // The number of documents in the full-text index.
 4) "0"
 5) "lexical_algorithm"    // The full-text indexing algorithm.
 6) "bm25"
 7) "auto_gc"              // Specifies if automatic memory space reclamation is enabled for the HNSW index.
 8) "1"
 9) "dimension"            // The vector dimension.
10) "2"
11) "attribute_data_size"  // The memory usage of attribute data, in bytes.
12) "3720"
13) "distance_method"      // The distance method.
14) "L2"
15) "data_type"            // The vector data type.
16) "FLOAT32"
17) "algorithm"            // The indexing algorithm.
18) "HNSW"
19) "index_data_size"      // The memory usage of vector data, in bytes.
20) "105128040"
21) "M"                    // The maximum number of outgoing neighbors for each node in the graph index structure. This parameter is returned only for HNSW indexes.
22) "16"
23) "data_count"           // The number of user records.
24) "3"
25) "current_record_count" // The total number of vectors.
26) "3"
27) "ef_construct"         // The size of the dynamic array used during index construction. This parameter is returned only for HNSW indexes.
28) "100"
29) "inverted_index_productname" // Information about the inverted index, including the field name, data type, and count.
30) "field: productname, type: string, size: 1"
31) "delete_record_count"  // The number of vectors to be deleted.
32) "0"

TVS.DELINDEX

Öğe

Açıklama

Sözdizimi

TVS.DELINDEX index_name

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

  • index_name: Vektör dizininin adı.

Dönüş değeri

  • Vektör dizini başarıyla silinirse 1 döndürür.

  • Belirtilen dizin mevcut değilse 0 döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Komut:

TVS.DELINDEX index_name0

Çıktı:

(integer) 1

TVS.SCANINDEX

Öğe

Açıklama

Sözdizimi

TVS.SCANINDEX cursor [MATCH pattern] [COUNT count]

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

  • cursor: Tarama imleci. İlk tarama için 0 kullanın. Sonraki taramalar için önceki çağrıda döndürülen imleci kullanın.

  • pattern: Vektör dizinlerini ada göre filtrelemek için kullanılan glob tarzı bir desen.

  • count: Her yinelemede taranması önerilen öğe sayısı için bir ipucu. Varsayılan değer 10'dur ve döndürülen gerçek öğe sayısı değişebilir.

Çıktı

  • İki öğe içeren bir dizi döndürür:

    • Sonraki yineleme için imleç. "0" değeri taramanın tamamlandığı anlamına gelir.

    • Geçerli taramada bulunan vektör dizini adlarının (index_name) dizisi.

  • Komut başarısız olursa bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.SCANINDEX 0

Örnek çıktı:

1) "0"
2) 1) "index_name1"
   2) "index_name0"
   3) "index_name2"
   4) "index_name3"

Desen içeren örnek komut:

TVS.SCANINDEX 0 MATCH **name[0|1]

Örnek çıktı:

1) "0"
2) 1) "index_name1"
   2) "index_name0"

TVS.HSET

Öğe

Açıklama

Sözdizimi

TVS.HSET index_name key attribute_key attribute_value [attribute_key attribute_value] ...

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtarı. Kaydı silmek için TVS.DEL komutunu kullanabilirsiniz.

  • attribute_key ve attribute_value: Bir veya daha fazla anahtar-değer çifti olarak belirtilen kaydın nitelikleri.

    • Vektör verisi eklemek için attribute_key değerini VECTOR anahtar kelimesine (büyük harf olmalıdır) ayarlayın. İlgili attribute_value, vektör dizininin boyutu (dims) ile eşleşen bir vektör veri dizesi olmalıdır. Örnek: VECTOR [1,2]. Her anahtarın yalnızca bir VECTOR niteliği olabilir. Aynı anahtar için bu niteliği tekrar ayarlarsanız mevcut verilerin üzerine yazılır.

    • Metin verisi eklemek için dizini oluştururken hibrit dizin parametrelerini yapılandırmış olmanız gerekir. attribute_key değerini TEXT anahtar kelimesine (büyük harf olmalıdır) ayarlayın. İlgili attribute_value, "TairVector is a proprietary vector database service developed by Tair" gibi bir metin verisi veya "[[2,0.221],[42,09688],...]" gibi bir embedding olabilir.

    • Ek olarak create_time 1663637425 (oluşturma zamanı) veya location Hangzhou (konum) gibi diğer özel nitelikleri veya meta verileri de ekleyebilirsiniz.

Dönüş değeri

  • Başarılı olduğunda komut veri kaydına eklenen yeni nitelik sayısını döndürür. Yalnızca mevcut nitelikler güncellendiyse 0 döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HSET my_index key5 VECTOR [7,8] TEXT "TairVector is a proprietary vector database service developed by Tair" create_time 1800

Örnek çıktı:

(integer) 3

TVS.HGETALL

Öğe

Açıklama

Sözdizimi

TVS.HGETALL index_name key

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtarı.

Dönüş değeri

  • Başarılı olduğunda belirtilen anahtar için sırayla nitelikleri ve karşılık gelen değerlerini içeren bir dizi döndürür.

  • Belirtilen vektör dizini veya anahtar mevcut değilse (empty array) döndürülür.

  • Aksi takdirde bir hata mesajı döndürülür.

Örnek

Komut örneği:

TVS.HGETALL index_name0 key0

Dönüş örneği:

1) "VECTOR"
2) "[1,2]"
3) "location"
4) "Hangzhou"
5) "create_time"
6) "1663637425"

TVS.HMGET

Öğe

Açıklama

Sözdizimi

TVS.HMGET index_name key attribute_key [attribute_key ...]

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

  • index_name: Vektör dizininin adı.

  • key: Kaydın birincil anahtarı.

  • attribute_key: Alınacak nitelik anahtarı veya anahtarları. Vektörü almak için VECTOR anahtar kelimesini (büyük harf olmalıdır) belirtin. Tam metin dizininden ham metin verilerini almak için TEXT anahtar kelimesini (büyük harf olmalıdır) belirtin.

Dönüşler

  • Başarılı olduğunda istenen sırayla belirtilen attribute_key değerleri için bir değer dizisi döndürür. Bir nitelik anahtarı mevcut değilse komut bunun yerine nil döndürür.

  • Aksi takdirde komut bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HMGET index_name0 key0 create_time location VECTOR TEXT

Örnek çıktı:

1) "1800"
2) "[7,8]"
3) "TairVector is a proprietary vector database service developed by Tair"

TVS.DEL

Öğe

Açıklama

Sözdizimi

TVS.DEL index_name key [key ...]

Zaman karmaşıklığı

O(1)

Komut açıklaması

Belirtilen vektör dizininden belirtilen veri kaydını (anahtar) siler.

Parametre

  • index_name: Vektör dizininin adı.

  • key: Bir veri kaydının birincil anahtarı.

Dönüş değeri

  • Başarılı: Belirtilen veri kaydını (anahtar) siler ve anahtar için silme sayısını döndürür.

  • Vektör dizini mevcut değilse 0 döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.DEL index_name0 keyV

Örnek çıktı:

 (integer) 1

TVS.HDEL

Öğe

Açıklama

Sözdizimi

TVS.HDEL index_name key attribute_key [attribute_key ...]

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

  • index_name: Vektör dizininin adı.

  • key: Kaydın birincil anahtarı.

  • attribute_key: İşlem için kullanılacak nitelik anahtarı. Birden çok anahtar belirtebilirsiniz. Vektör verilerini silmek için VECTOR anahtar sözcüğünü büyük harfle girin. Tam dizin verilerini silmek için TEXT anahtar sözcüğünü büyük harfle girin.

Dönüş değeri

  • Silinen attribute_key sayısını döndürür.

  • Vektör dizini yoksa 0 döndürür.

  • Diğer durumlarda bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HDEL index_name0 keyc VECTOR

Örnek çıktı:

 (integer) 1

TVS.SCAN

Kategori

Açıklama

Sözdizimi

TVS.SCAN index_name cursor [MATCH pattern] [COUNT count] [FILTER filter_string] [VECTOR vector] [MAX_DIST max_distance]

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

  • index_name: Vektör dizininin adı.

  • cursor: Tarama için kullanılan imleç. İlk tarama için 0 kullanın. Sonraki taramalar için önceki çağrıdan döndürülen imleci kullanın.

  • pattern: Anahtarları eşleştirmek için glob tarzı bir desen.

  • count: Her yinelemede taranması önerilen öğe sayısı. Varsayılan değer 10'dur. Döndürülen gerçek öğe sayısı tam olarak garanti edilmez.

  • filter_string: Filtreleme koşulları.

    • +, -, *, /, <, >, !=, (), && ve || gibi işleçleri destekler. > ve < işleçleri dize karşılaştırmalarını desteklemez. Filtrenize bir dize sabit değeri eklemek için tırnak işaretlerini ters eğik çizgi (\) ile kaçış karakteri olarak kullanın. Örneğin: create_time > 1663637425 && location == \"Hangzhou\".

    • İşleçleri işlenenlerinden boşluklarla ayırın. Örneğin: "creation_time > 1735".

    • Doğrudan boolean karşılaştırmaları (örneğin flag == true) desteklenmez. Bunun yerine değeri bir dize olarak karşılaştırın: flag == \"true\".

  • vector: Sorgu vektörü. Bu parametre max_distance parametresiyle birlikte kullanılmalıdır.

  • max_distance: Maksimum mesafe eşiği. Bu parametre vector parametresiyle birlikte kullanılmalıdır. Her ikisi de belirtildiğinde komut yalnızca sorgu vector değerine olan mesafesi max_distance değerinden küçük olan sonuçları döndürür.

Dönüş değeri

  • Başarılı olduğunda komut iki öğeden oluşan bir dizi döndürür:

    • İlk öğe, sonraki yineleme için kullanılan imleçtir. 0 değeri taramanın tamamlandığını gösterir.

    • İkinci öğe, geçerli yinelemede bulunan veri kayıtlarının key adlarından oluşan bir dizidir.

  • Başarısız olduğunda komut bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.SCAN index_name0 0

Örnek dönüş değeri:

1) "0"
2) 1) "key0"
   2) "keyV"

TVS.HINCRBY

Kategori

Açıklama

Sözdizimi

TVS.HINCRBY index_name key attribute_key num

Zaman karmaşıklığı

O(1)

Komut açıklaması

Bir vektör dizinindeki belirtilen veri kaydının (key) attribute_key tamsayı değerini num kadar artırır.

attribute_key yoksa komut artırmayı gerçekleştirmeden önce bu anahtarı 0 olarak ayarlar. attribute_key değeri bir tamsayı değilse komut bir hata döndürür.

Parametreler

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtar tanımlayıcısı.

  • attribute_key: Artırılacak nitelik anahtarı.

  • num: Eklenecek tamsayı değeri.

Dönüş değeri

  • Tamsayı yanıtı: attribute_key öğesinin yeni değeri.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HINCRBY index_name0 key0 tv01 20

Örnek çıktı:

(integer) 20

TVS.HINCRBYFLOAT

Kategori

Açıklama

Sözdizimi

TVS.HINCRBYFLOAT index_name key attribute_key num

Zaman karmaşıklığı

O(1)

Komut açıklaması

Belirtilen bir vektör dizinindeki bir veri kaydının (key) attribute_key değerini kayan noktalı sayı num kadar artırır.

Belirtilen attribute_key yoksa başlangıç değeri num olacak şekilde oluşturulur.

Parametreler

  • index_name: Vektör dizininin adı.

  • key: Kaydın birincil anahtar tanımlayıcısı.

  • attribute_key: Artırılacak nitelik anahtarı.

  • num: Artırım miktarı olarak kullanılacak kayan noktalı değer.

Dönüş değeri

  • Başarılı olduğunda nitelik anahtarının güncellenmiş değerini döndürür.

  • Başarısız olduğunda bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HINCRBYFLOAT index_name0 key0 tv02 9.34

Örnek çıktı:

"9.34"

TVS.HPEXPIREAT

Kategori

Açıklama

Sözdizimi

TVS.HPEXPIREAT index_name key milliseconds-timestamp

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtarı.

  • milliseconds-timestamp: Milisaniye cinsinden belirtilen UNIX zaman damgası. Zaman damgası geçmişte ise key hemen sona erer.

Dönüş değeri

  • Mevcut bir key için zaman aşımı ayarlanırsa 1 döndürür.

  • key yoksa 0 döndürür.

  • Aksi takdirde bir özel durum döndürür.

Örnek

Örnek komut:

TVS.HPEXPIREAT index_name0 key1 16914619090000

Örnek çıktı:

(integer) 1

TVS.HPEXPIRE

Öğe

Açıklama

Sözdizimi

TVS.HPEXPIRE index_name key milliseconds-timestamp

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

  • index_name: Vektör dizininin adı.

  • key: Vektörün birincil anahtar tanımlayıcısı.

  • milliseconds-timestamp: Göreceli sona erme süresi (milisaniye cinsinden).

Dönüş değeri

  • Sona erme süresi ayarlandıysa 1 döndürür.

  • Anahtar yoksa 0 döndürür.

  • Diğer durumlarda bir hata döndürür.

Örnek

Örnek komut:

TVS.HPEXPIRE index_name0 key1 1000

Örnek çıktı:

(integer) 1

TVS.HEXPIREAT

Kategori

Açıklama

Sözdizimi

TVS.HEXPIREAT index_name key timestamp

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

  • index_name: Vektör dizininin adı.

  • key: Kaydın birincil anahtarı.

  • timestamp: Saniye cinsinden UNIX zaman damgası. Zaman damgası geçmişte ise key hemen sona erer.

Dönüş değeri

  • key için zaman aşımı ayarlanırsa 1 döndürür.

  • key yoksa 0 döndürür.

  • Aksi takdirde bir hata mesajı döndürür.

Örnek

Komut örneği:

TVS.HEXPIREAT index_name0 key2 1691466981

Dönüş örneği:

(integer) 1

TVS.HEXPIRE

Kategori

Açıklama

Sözdizimi

TVS.HEXPIRE index_name key timestamp

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

  • index_name: Vektör dizininin adı.

  • key: Vektörün birincil anahtar tanımlayıcısı.

  • timestamp: Göreceli sona erme süresi (saniye cinsinden).

Çıktı

  • Mevcut bir key için zaman aşımı başarıyla ayarlanırsa: 1.

  • key yoksa: 0.

  • Aksi takdirde bir hata mesajı döndürülür.

Örnek

Örnek komut:

TVS.HEXPIRE index_name0 key2 100

Örnek çıktı:

(integer) 1

TVS.HPTTL

Kategori

Açıklama

Sözdizimi

TVS.HPTTL index_name key

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtarı.

Dönüş değeri

  • key mevcutsa ve bir sona erme süresi ayarlanmışsa milisaniye cinsinden TTL değerini döndürür.

  • key mevcutsa ancak sona erme süresi ayarlanmamışsa -1 döndürür.

  • key veya index_name yoksa -2 döndürür.

  • Bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HPTTL index_name0 key2

Örnek çıktı:

(integer) 65417

TVS.HTTL

Kategori

Açıklama

Sözdizimi

TVS.HTTL index_name key

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtarı.

Dönüş değeri

  • key mevcutsa ve bir sona erme süresi varsa kalan TTL değerini saniye cinsinden döndürür.

  • key mevcutsa ancak sona erme süresi yoksa -1 döndürür.

  • key veya index_name yoksa -2 döndürür.

  • Diğer hatalar için bir özel durum mesajı döndürür.

Örnek

Komut örneği:

TVS.HTTL index_name0 key2

Dönüş örneği:

(integer) 58

TVS.HPEXPIRETIME

Kategori

Açıklama

Sözdizimi

TVS.HPEXPIRETIME index_name key

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtar tanımlayıcısı.

Dönüş değeri

  • key mevcutsa ve bir sona erme süresi ayarlanmışsa mutlak sona erme zamanını milisaniye cinsinden Unix zaman damgası olarak döndürür.

  • key mevcutsa ancak sona erme süresi ayarlanmamışsa -1 döndürür.

  • key veya index_name yoksa -2 döndürür.

  • Aksi takdirde ilgili bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HPEXPIRETIME index_name0 key2

Örnek çıktı:

(integer) 1691473985764

TVS.HEXPIRETIME

Öğe

Açıklama

Sözdizimi

TVS.HEXPIRETIME index_name key

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

  • index_name: Vektör dizininin adı.

  • key: Veri kaydının birincil anahtar tanımlayıcısı.

Çıktı

  • key mevcut ve bir sona erme süresi ayarlanmışsa, değer saniye cinsinden mutlak sona erme süresidir (Unix zaman damgası).

  • key mevcuttur ancak sona erme süresi yoktur: -1.

  • key veya index_name mevcut değilse, komut -2 değerini döndürür.

  • Diğer durumlarda, komut bir hata mesajı döndürür.

Örnek

Örnek komut:

TVS.HEXPIRETIME index_name0 key2

Örnek çıktı:

(integer) 1691473985

TVS.KNNSEARCH

Öğe

Açıklama

Sözdizimi

TVS.KNNSEARCH index_name topN vector [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: O(log(N))

  • FLAT algoritması: O(N)

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

  • index_name: Vektör dizininin adı.

  • topN: Döndürülecek sonuç sayısı. Değer [1, 10000] aralığında olmalıdır.

  • vector: En yakın komşu sorgusu gerçekleştirmek için kullanılan vektör değeri. Hibrit bir dizinde yalnızca tam metin araması yapmak istiyorsanız, bu alana "" iletebilirsiniz.

  • filter_string: Filtre koşulu.

    • +-*/<>!=()&&|| gibi operatörleri destekler. Daha büyük veya daha küçük karşılaştırmaları için dize karşılaştırmaları desteklenmez. Filtrenize bir dize değişmezi eklemek için tırnak işaretlerini kaçış karakteri (\) ile kullanmanız gerekir. Örneğin: "create_time > 1663637425 && location == \"Hangzhou\"".

    • Operatörler, işlenenlerinden boşluklarla ayrılmalıdır. Örneğin: "creation_time > 1735".

    • flag == true gibi doğrudan boolean karşılaştırmaları desteklenmez. Bunun yerine, değeri bir dize olarak karşılaştırın: flag == \"true\".

  • param_key ve param_value: Anahtar-değer çiftleri olarak belirtilen sorgu için çalışma zamanı parametreleri. Aşağıdaki parametreler desteklenir:

    • ef_search: Arama için dinamik listenin boyutu. Varsayılan değer 100'dür ve geçerli aralık [1, 1000]'dir. Daha büyük bir değer genellikle arama doğruluğunu artırır ancak performans yükünü de yükseltir. Bu parametre yalnızca HNSW algoritmasına özeldir.

      Seyrek vektörler için HNSW dizini kullanan hibrit bir dizin için, seyrek vektör dizininin ef_search parametresini belirtmek üzere sparse_ef_search kullanın.

    • MAX_DIST: Maksimum mesafe sınırı. Bir float değeri olmalıdır. Sorgu vektörüne olan mesafesi bu değerden büyük olan anahtarları filtreler.

    • TEXT: Metin veya vektör olabilen hibrit arama için sorgu metni. Bu parametre belirtilmezse veya "" olarak ayarlanırsa, tam metin araması gerçekleştirilmez ve yalnızca vektör araması yapılır.

    • hybrid_ratio: Bu sorguda vektör arama sonuçları için ağırlık. Değer [0, 1] aralığında bir float olmalıdır. Varsayılan, dizin oluşturma sırasında ayarlanan hybrid_ratio değeridir. Tam metin araması için ağırlık 1-hybrid_ratio olarak hesaplanır.

    • Varsayılan olarak sistem, skaler filtreleme uygulanmadan önce k-en yakın komşu (KNN) vektör araması gerçekleştiren bir PostFilter stratejisi kullanır.

      • vector_filter_count: Vektör arama sonuçlarından filtrelenecek maksimum aday sayısı. Varsayılan: 10.000.

        PostFilter stratejisinde, topN sonuç bulunamadan bu sayıda adayı aşacak şekilde filtreleme yapılırsa arama durdurulur.

      • fulltext_filter_count: Tam metin arama sonuçlarından filtrelenecek maksimum aday sayısı. Varsayılan: 10.000.

        PostFilter stratejisinde, topN sonuç bulunamadan bu sayıda adayı aşacak şekilde filtreleme yapılırsa arama durdurulur.

      • KNN vektör aramasından önce ters dizine dayalı skaler filtreleme gerçekleştiren bir PreFilter stratejisi kullanmak için sorgunuza search_policy scalar parametresini ekleyin.

        Ön filtreleme aşamasında ters dizinden alınacak maksimum kayıt sayısını belirten ivf_filter_count parametresini de sağlayabilirsiniz. Varsayılan 10.000'dir. PreFilter stratejisinde, skaler filtreyle eşleşen kayıt sayısı bu değeri aşarsa sistem PostFilter stratejisine geri döner.

      Not

      Çoğu durumda, bu varsayılan parametreler yüksek doğruluğu korurken düşük gecikme süresi sağlar. Bunları belirli istekler için ayarlayabilirsiniz ancak daha yüksek değerlerin sorgu gecikme süresini artırabileceğini unutmayın.

Dönüş değeri

  • Başarılı bir çalıştırma, en yakın komşuların key değerlerini ve hedef vektöre olan mesafelerini, mesafeye göre en yakından en uzağa doğru sıralanmış şekilde döndürür.

  • Belirtilen vektör dizini mevcut değilse, komut bir (empty array) döndürür.

  • Diğer durumlarda, bir hata mesajı döndürür.

Örnekler

Aşağıdaki komutları önceden çalıştırın:

TVS.CREATEINDEX my_index_k 2 HNSW L2 inverted_index_productname string
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730 productname "Aliyun"
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740 productname "other"
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750 productname "Aliyun"

Örnek 1:

TVS.KNNSEARCH my_index_k 2 [3,3.1] "creation_time > 1735"

Yanıt 1:

1) "key1"
2) "0.81000018119812012"
3) "key2"
4) "12.410000801086426"

Örnek 2:

TVS.KNNSEARCH my_index_k 2 [3,3.1]  "creation_time > 1735 && productname ==  \"Aliyun\"" search_policy scala ivf_filter_count 15000

Yanıt 2:

1) "key2"
2) "12.410000801086426"

TVS.KNNSEARCHFIELD

Öğe

Açıklama

Sözdizimi

TVS.KNNSEARCHFIELD index_name topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: O(log(N))

  • FLAT algoritması: O(N)

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

  • index_name: Vektör dizininin adı.

  • topN: Döndürülecek sonuç sayısı. Değer [1, 10000] aralığında olmalıdır.

  • vector: En yakın komşu araması için sorgu vektörü. Hibrit bir dizinde yalnızca tam metin araması yapmak için bu parametre olarak boş bir dize ("") iletebilirsiniz.

  • field_count: Döndürülecek etiket niteliği sayısı. Tüm etiket niteliklerini döndürmek için field_count değerini 0 olarak ayarlayın.

  • field_name: Döndürülecek etiket niteliklerinin adları. Ad sayısı field_count değeriyle eşleşmelidir.

  • filter_string: Filtre koşulu. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

  • param_key ve param_value: Sorgu için çalışma zamanı parametreleri. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

Dönüş değeri

  • Başarı durumunda, bu komut her en yakın komşu için key, sorgu vektörüne olan mesafe ve etiket niteliği anahtar-değer çiftlerini döndürür. Sonuçlar mesafeye göre artan düzende sıralanır.

  • Belirtilen vektör dizini mevcut değilse, (empty array) döndürür.

  • Aksi takdirde, bir hata mesajı döndürür.

Örnek

Önce aşağıdaki komutları çalıştırın:

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

Örnek komut:

TVS.KNNSEARCHFIELD my_index_k 2 [3,3.1] 0 "creation_time > 1735"

Örnek çıktı:

1) 1) "key1"
   2) "0.81000018119812012"
   3) "VECTOR"
   4) "[3,4]"
   5) "creation_time"
   6) "1740"
2) 1) "key2"
   2) "12.410000801086426"
   3) "VECTOR"
   4) "[5,6]"
   5) "creation_time"
   6) "1750"

TVS.GETDISTANCE

Öğe

Açıklama

Sözdizimi

TVS.GETDISTANCE index_name vector key_count key [key, ...] [TOPN topN] [FILTER filter_string] [MAX_DIST max_distance]

Zaman karmaşıklığı

  • HNSW algoritması: O(log N)

  • FLAT algoritması: O(N)

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

  • index_name: Vektör dizininin adı.

  • vector: Sorgu vektörü.

  • key_count: Aday anahtar sayısı.

  • key: Aday anahtarların adları. Anahtar sayısı key_count değeriyle eşleşmelidir.

  • TOPN: Döndürülecek maksimum sonuç sayısı. Varsayılan değer key_count'tir. Değer [1, key_count] aralığında olmalıdır.

  • FILTER: Filtre koşulu.

    • +-*/<>!=()&&|| gibi operatörleri destekler. Dizeler için daha büyük ve daha küçük karşılaştırmaları desteklenmez. Bir dize değişmezi eklemek için tırnak işaretlerini ters eğik çizgi (\) ile kaçırmalısınız. Örneğin: create_time > 1663637425 && location == \"Hangzhou\".

    • Operatörler, işlenenlerinden boşluklarla ayrılmalıdır. Örneğin: "creation_time > 1735".

    • flag == true gibi doğrudan boolean karşılaştırmaları desteklenmez. Bunun yerine, değeri bir dize olarak karşılaştırın: flag == \"true\".

  • MAX_DIST: Sorgu vektörüne olan mesafesi bu değeri aşan anahtarları filtreler.

Çıktı

  • Eşleşen anahtarları ve mesafelerini döndürür. Varsayılan olarak, sonuçlar sağlanan anahtarlarla aynı sırada döndürülür. TOPN belirtilirse, komut en yakın topN anahtarı ve mesafelerini en yakından en uzağa doğru sıralanmış şekilde döndürür.

  • Vektör dizini mevcut değilse bir (empty array) döndürür.

  • Diğer tüm hatalar için bir hata mesajı döndürülür.

Örnek

Önce aşağıdaki komutları çalıştırın:

TVS.CREATEINDEX my_index_k 2 HNSW L2
TVS.HSET my_index_k key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_k key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_k key2 VECTOR [5,6] creation_time 1750

Örnek komut:

TVS.GETDISTANCE my_index_k [1,1] 2 key1 key2

Örnek çıktı:

1) "key1"
2) "13"
3) "key2"
4) "41"

TVS.MKNNSEARCH

Öğe

Açıklama

Sözdizimi

TVS.MKNNSEARCH index_name topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: vector_count * O(log(N))

  • FLAT algoritması: vector_count * O(N)

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

  • index_name: Vektör dizininin adı.

  • topN: Her sorgu vektörü için döndürülecek sonuç sayısı. Değer [1, 10000] aralığında olmalıdır.

  • vector_count : Sorgu vektörlerinin sayısı.

  • vector: En yakın komşu araması için bir veya daha fazla vektör. Hibrit bir dizinde yalnızca tam metin araması yapmak için bu parametre olarak "" iletin.

  • filter_string: Filtre koşulu. Daha fazla bilgi için TVS.KNNSEARCH bölümündeki açıklamaya bakın.

  • param_key ve param_value: Sorgu için çalışma zamanı parametreleri. Daha fazla bilgi için TVS.KNNSEARCH bölümündeki açıklamaya bakın.

Dönüş değeri

  • Başarı durumunda, komut her sorgu vektörü için bir tane olmak üzere birden çok sonuç dizisi döndürür. Her dizi, en yakından en uzağa doğru sıralanmış en yakın komşuların keys değerlerini ve mesafelerini içerir.

  • Vektör dizini mevcut değilse, komut bir (empty array) döndürür.

  • Aksi takdirde, komut bir hata mesajı döndürür.

Örnek

Aşağıdaki komutları önceden çalıştırın:

TVS.CREATEINDEX my_index_m 2 HNSW L2
TVS.HSET my_index_m key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_m key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_m key2 VECTOR [5,6] creation_time 1750

Örnek komut:

TVS.MKNNSEARCH my_index_m 2 2 [3,4] [5,6] "creation_time > 1735"

Örnek çıktı:

1) 1) "key1"
   2) "0"
   3) "key2"
   4) "8"
2) 1) "key2"
   2) "0"
   3) "key1"
   4) "8"

TVS.MINDEXKNNSEARCH

Öğe

Açıklama

Sözdizimi

TVS.MINDEXKNNSEARCH index_count index_name [index_name ...] topN vector [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: index_count * O(log(N))

  • FLAT algoritması: index_count * O(N)

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

  • index_count: Vektör dizini sayısı.

  • index_name: Vektör dizinlerinin adları.

  • topN: 1 ile 10.000 arasında döndürülecek en yakın komşu sayısı. Komut, belirtilen her dizinden en iyi topN sonuçları alır, bunları birleştirir ve birleşik kümeden genel olarak en yakın topN komşuyu döndürür.

  • vector: En yakın komşu sorgusu için sorgu vektörü.

  • filter_string: Filtre koşulları. Daha fazla bilgi için TVS.KNNSEARCH bölümündeki açıklamaya bakın.

  • param_key ve param_value: Sorgu için çalışma zamanı parametreleri. Daha fazla bilgi için TVS.KNNSEARCH bölümündeki açıklamaya bakın.

Çıktı

  • En yakın komşu key değerlerini ve sorgu vektörüne olan mesafelerini içeren bir dizi döndürür; sonuçlar en yakından en uzağa doğru sıralanır.

  • Belirtilen bir vektör dizini mevcut değilse, bir (empty array) döndürür.

  • Aksi takdirde, bir hata mesajı döndürür.

Örnek

Önce bu komutları çalıştırın:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Örnek komut:

TVS.MINDEXKNNSEARCH 2 my_index_mk my_index_mx 2 [0,0]

Örnek çıktı:

1) "key0"
2) "5"
3) "key7"
4) "25"

TVS.MINDEXKNNSEARCHFIELD

Kategori

Açıklama

Sözdizimi

TVS.MINDEXKNNSEARCHFIELD index_count index_name [index_name ...] topN vector field_count field_name [field_name ...] [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: index_count * O(log(N))

  • FLAT algoritması: index_count * O(N)

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

  • index_count: Vektör dizini sayısı.

  • index_name: Vektör dizinlerinin adları.

  • topN: 1 ile 10.000 arasında döndürülecek en yakın komşu sayısı. Komut, her vektör dizininde topN en yakın komşuyu sorgular, bu sonuçları birleştirir ve ardından en kısa mesafelere sahip genel topN sonuçları döndürür.

  • vector: En yakın komşu sorgusu için giriş vektörü.

  • field_count: Döndürülecek etiket sayısı. Tüm etiketleri döndürmek için field_count değerini 0 olarak ayarlayın.

  • field_name: Döndürülecek etiketlerin adları. Sağlanan ad sayısı field_count değeriyle eşleşmelidir.

  • filter_string: Filtre koşulları. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

  • param_key ve param_value: Sorgu için çalışma zamanı parametreleri. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

Çıktı

  • Başarı durumunda, komut en yakın komşuların keys değerlerini, sorgu vektörüne olan mesafelerini ve karşılık gelen etiket anahtar-değer çiftlerini döndürür. Sonuçlar mesafeye göre artan düzende sıralanır.

  • Belirtilen bir vektör dizini mevcut değilse, komut bir (empty array) döndürür.

  • Aksi takdirde, komut bir hata mesajı döndürür.

Örnek

Önce aşağıdaki komutları yürütün:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Örnek komut:

TVS.MINDEXKNNSEARCHFIELD 2 my_index_mk my_index_mx 2 [0,0] 0

Örnek çıktı:

1) 1) "key0"
   2) "5"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[1,2]"
   6) "creation_time"
   7) "1730"
2) 1) "key1"
   2) "25"
   3) "my_index_mk"
   4) "VECTOR"
   5) "[3,4]"
   6) "creation_time"
   7) "1740"

TVS.MINDEXMKNNSEARCH

Öğe

Açıklama

Sözdizimi

TVS.MINDEXMKNNSEARCH index_count index_name [index_name ...] topN vector_count vector [vector ...] [filter_string] [param_key param_value]

Zaman karmaşıklığı

  • HNSW algoritması: index_count vector_count O(log(N))

  • FLAT algoritması: index_count vector_count O(N)

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

  • index_count: Vektör dizini sayısı.

  • index_name: Bir vektör dizininin adı.

  • topN: Her bir sorgu vektörü için döndürülecek en yakın komşu sayısı. Değer [1, 10000] aralığında olmalıdır. Varsayılan olarak komut, her vektör dizininden topN sonucu alır, bunları birleştirir ve en kısa mesafelere sahip genel topN sonuçlarını döndürür.

  • vector_count: Sorgu vektörlerinin sayısı.

  • vector: En yakın komşu araması için bir sorgu vektörü.

  • filter_string: Filtre koşulları. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

  • param_key ve param_value: Sorguya ilişkin işlemsel parametreler. Daha fazla bilgi için bkz. TVS.KNNSEARCH.

Dönüş değeri

  • Başarılı olduğunda, sorgu vektörleriyle aynı sıraya sahip sonuç dizilerinden oluşan bir dizi döndürür. Her sonuç dizisi, her bir en yakın komşu için anahtar ve mesafe bilgilerini içerir; bu bilgiler mesafeye göre en yakından en uzağa doğru sıralanır.

  • Belirtilen bir vektör dizini mevcut değilse (empty array) döndürür.

  • Diğer durumlarda bir hata mesajı döndürür.

Örnek

Önce aşağıdaki komutları çalıştırın:

TVS.CREATEINDEX my_index_mk 2 HNSW L2
TVS.HSET my_index_mk key0 VECTOR [1,2] creation_time 1730
TVS.HSET my_index_mk key1 VECTOR [3,4] creation_time 1740
TVS.HSET my_index_mk key2 VECTOR [5,6] creation_time 1750
TVS.CREATEINDEX my_index_mx 2 HNSW L2
TVS.HSET my_index_mx key5 VECTOR [8,7] creation_time 1730
TVS.HSET my_index_mx key6 VECTOR [6,5] creation_time 1740
TVS.HSET my_index_mx key7 VECTOR [4,3] creation_time 1750

Örnek komut:

TVS.MINDEXMKNNSEARCH 2 my_index_mk my_index_mx 2 2 [0,0] [3,3]

Örnek çıktı:

1) 1) "key0"
   2) "5"
   3) "key7"
   4) "25"
2) 1) "key1"
   2) "1"
   3) "key7"
   4) "1"