Tablestore SDK for Python kullanarak bir arama dizininden vektör benzerliğine dayalı en yakın komşu verilerini döndürün.
Önkoşullar
Tablestore SDK for Python yükleyin ve bir istemci başlatın.
Vektör arama özelliği için SDK sürüm 5.4.4 veya üzeri gerekir. En son SDK sürümünü kullanmanızı öneririz.
Veri tablosu için Vector alanı içeren bir arama dizini oluşturulmuş olmalıdır.
Açıklama
Vektör araması, bir sorgu vektörü ile Vector alanındaki vektörler arasında yaklaşık en yakın komşu (ANN) hesaplaması yapar, sonuçları arama dizini için yapılandırılan uzaklık metriğini kullanarak puanlar ve en yakın komşu verilerini döndürür. Alan boyutu, sorgu vektörü boyutuna eşit olmalıdır.
KnnVectorQuery(
field_name,
top_k=None,
float32_query_vector=None,
filter=None,
weight=None,
min_score=None,
num_candidates=None,
)
Aşağıdaki örnek, belirtilen dört boyutlu bir vektöre en yakın üç satırı sorgular ve bunları vektör puanına göre azalan sırada döndürür.
query = KnnVectorQuery(
"embedding",
top_k=3,
float32_query_vector=[1.0, 0.0, 0.0, 0.0],
)
response = client.search(
"example_table",
"example_index",
SearchQuery(
query,
sort=Sort([ScoreSort()]),
limit=3,
get_total_count=False,
),
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
for hit in response.search_hits:
print(hit.score, hit.row)
Vektör araması için get_total_count değerini True olarak ayarlamayın. Vektör alanlarının sayısı ve boyutları ile top_k üzerinde sınırlamalar bulunur. Daha fazla bilgi için bkz. Arama dizini sınırlamaları.
Parametreler
Arama isteği
search yöntemi aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sorgu yapılandırması
search_query, SearchQuery türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vektör sorgu koşulu
search_query.query, KnnVectorQuery türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dönüş sütunları
columns_to_get, ColumnsToGet türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
Yanıt
search yöntemi SearchResponse döndürür. Aşağıdaki tabloda temel alanlar açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tuple uyumlu yanıt
Tablestore SDK for Python 5.2.0 sürümünden itibaren arama API'leri tuple yerine yanıt nesneleri döndürür. 5.1.0 ve önceki sürümler doğrudan tuple döndürür. 5.2.1 ve sonraki sürümlerde, önceki sürümlerle uyumlu bir tuple elde etmek için SearchResponse.v1_response() çağırabilirsiniz. Yeni kodlarda, yanıt alanları genişletildiğinde paket açma hatalarından kaçınmak için SearchResponse özniteliklerine doğrudan erişin.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()
Örnekler
Vektör dışı bir koşula ve puana göre filtreleme
Aşağıdaki örnek, category değeri book- ile başlayan ve vektör puanı 0.1 değerinden büyük olan en yakın komşu satırları döndürür. Her dizin bölümündeki 10 adaydan en iyi üç satır seçilir.
query = KnnVectorQuery(
"embedding",
top_k=3,
float32_query_vector=[1.0, 0.0, 0.0, 0.0],
filter=PrefixQuery("category", "book-"),
min_score=0.1,
num_candidates=10,
)
response = client.search(
"example_table",
"example_index",
SearchQuery(query, limit=3, get_total_count=False),
)
for hit in response.search_hits:
print(hit.score, hit.row)