Hibrit Arama için Üst Veri Filtreleme
Kesin ve bağlama uygun getirme elde etmek için vektör benzerliğini yapılandırılmış filtrelerle (tarih, yazar, etiket) birleştirin.
Hibrit Arama için Üst Veri Filtreleme, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.
Neden Filtreleme?
Saf vektör araması, yanlış kiracıya, yanlış dile veya yanlış belgeye ait olsalar bile en benzer K parçayı döndürür.
Üst veri filtreleri, aramayı ilgili alt kümelerle sınırlandırarak size kesinlik AND duyarlılık sağlar.
Üst Verileri Depolama
Veri alımı sırasında her parçaya bir üst veri sözlüğü ekleyin:
metadata = {
'tenant_id': 'acme',
'language': 'en',
'source': 'help-docs',
'updated_at': '2024-08-12',
'tags': ['shipping', 'returns']
}
for k, v in metadata.items():
print(f"{k}: {v}")
Filtering in Pinecone
results = index.query(
vector=query_vec,
top_k=5,
filter={
'tenant_id': 'acme',
'language': 'en'
}
)Aralık Filtreleri
Çoğu vektör veritabanı aralık filtrelerini de destekler:
filter = {
'updated_at': {'$gte': '2024-01-01'},
'score': {'$gt': 0.5}
}
print(filter)
In and Not-In
filter = {
'tags': {'$in': ['shipping', 'returns']},
'archived': {'$ne': True}
}
print(filter)
Qdrant'ta Filtreleme
Qdrant zengin bir filtreleme diline sahiptir:
from qdrant_client.models import Filter, FieldCondition, MatchValue
filter = Filter(must=[
FieldCondition(key='tenant_id', match=MatchValue(value='acme')),
FieldCondition(key='language', match=MatchValue(value='en'))
])
results = client.search(
collection_name='docs',
query_vector=query_vec,
query_filter=filter,
limit=5
)Ön Filtreleme ve Sonradan Filtreleme
İki strateji vardır:
- Ön filtreleme — filtreyi THEN aramayı uygulayın (doğrudur, dizinlenmiş üst veriler olmadan yavaş olabilir)
- Sonradan filtreleme — arayın, ardından eşleşmeyenleri çıkarın (hızlıdır ancak hiç sonuç döndürmeyebilir)
Üretim sistemleri, uygun üst veri dizinleriyle ön filtreleme yapar.
Melez Vektör + Anahtar Sözcük
Anlamsal aramayı klasik BM25 anahtar sözcük aramasıyla birleştirin. İkisini de çalıştırın ve puanları birleştirin (karşılıklı sıra birleştirme standarttır):
def rrf(vec_results, bm25_results, k=60):
scores = defaultdict(float)
for rank, doc in enumerate(vec_results):
scores[doc.id] += 1 / (k + rank)
for rank, doc in enumerate(bm25_results):
scores[doc.id] += 1 / (k + rank)
return sorted(scores.items(), key=lambda x: -x[1])Çok Kiracılılık
SaaS'te EVERY sorgu tenant_id ile filtrelenmelidir. Unutulmasını önlemek için bunu getirme sarmalayıcınıza sabit olarak yazın:
def search(query, tenant_id, top_k=5):
return index.query(
vector=embed(query),
top_k=top_k,
filter={'tenant_id': tenant_id}
)Üst Verilerle Erişim Denetimi
Kullanıcı ve rol izinlerini üst verilerde depolayın:
metadata = {
'visibility': 'public', # or 'internal', 'restricted'
'department': 'engineering',
'allowed_roles': ['engineer', 'manager']
}
# At query time:
filter = {'allowed_roles': {'$contains': current_user_role}}Güncellik Artışı
Daha yeni belgeleri tercih etmek için daha fazla aday getirin, ardından güncelliğe göre puanlarını yeniden hesaplayın:
candidates = index.query(vector=query_vec, top_k=50)
scored = [
(c.score * recency_factor(c.metadata['updated_at']), c)
for c in candidates
]
scored.sort(reverse=True)
final = scored[:5]Üst Veri Kardinalitesine Dikkat Edin
Yüksek kardinaliteli üst veriler (milyonlarca benzersiz değer) dizinleri büyütür. Mümkün olduğunda önceden toplulaştırın — örneğin zaman filtrelemesi için tam zaman damgası yerine yıl-ay depolayın.
Her Zaman Etkin Filtre
Her çok kiracılı aracı ALWAYS hangi filtreyi içermelidir?
Özet
Üst veri filtreleri aramanızı sınırlandırır. En iyi sonuçlar için bunları melez aramayla (vektör + BM25) birleştirin. Çok kiracılılık ve erişim denetimi buna dayanır.
Sıkça Sorulan Sorular
“Hibrit Arama için Üst Veri Filtreleme” dersi ücretsiz mi?
Evet — “Hibrit Arama için Üst Veri Filtreleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Hibrit Arama için Üst Veri Filtreleme” dersinde ne öğreneceğim?
Kesin ve bağlama uygun getirme elde etmek için vektör benzerliğini yapılandırılmış filtrelerle (tarih, yazar, etiket) birleştirin. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Hibrit Arama için Üst Veri Filtreleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Pinecone, Weaviate, Qdrant: Karşılaştırma
- Hibrit Arama için Üst Veri Filtreleme
- Vektörleri Güncelleme ve Silme
- Uzaklık Ölçütlerini Seçme (kosinüs, L2, nokta)