data-infra
Sözlük ↗Metadata Filtreleme (Metadata Filtering)
Metadata filtreleme, her bir vektöre bir tarih, kategori, kullanıcı kimliği, durum bayrağı, fiyat gibi yapılandırılmış öznitelikler (metadata) eklemek ve ardından bir benzerlik aramasını, benzerlik sıralamasının kendisinin yanı sıra yalnızca metadata'sı belirtilen filtre koşullarıyla eşleşen vektörleri dikkate alacak şekilde sınırlamak pratiğidir. Salt vektör benzerlik aramasının tek başına ele alamadığı bir sorgu desenini yanıtlar: "bu soruya en benzer pasajları bul, ama yalnızca 2025'ten sonra yayınlanmış ve `product: enterprise` etiketli dokümanlardan." AI/SaaS kurucuları için neden önemli: neredeyse her gerçek dünya RAG veya semantik arama özelliği buna ihtiyaç duyar. Bir destek masası AI'sı, yerini almış eski bir makaleyi göstermemelidir; çok kiracılı bir uygulama, ne kadar anlamsal olarak benzer olursa olsun başka bir müşterinin verisini asla döndürmemelidir; bir pazar yeri aramasının "bunun gibi ürünleri bul" ile "yalnızca stokta ve 50 doların altında olanları göster"i birleştirmesi gerekir. Vektör benzerliği tek başına bu iş mantığı kısıtlamalarının hiçbirinden habersizdir - yalnızca anlamı bilir, erişim kontrolünü, güncelliği veya envanter durumunu bilmez - bu yüzden metadata filtreleme, semantik aramayı her production uygulamanın gerçekten sahip olduğu gerçek, yapılandırılmış kısıtlamalara yeniden bağlayan mekanizmadır. Nasıl çalışır: ekleme/upsert zamanında, her vektör bir metadata nesnesiyle birlikte depolanır (genellikle JSON: `{"category": "billing", "published": true, "date": "2026-03-14", "tenant_id": "t_88"}`). Sorgu zamanında, uygulama hem sorgu vektörünü hem de bir filtre ifadesini iletir (sözdizimi vektör veritabanına göre değişir - Pinecone, `{"tenant_id": {"$eq": "t_88"}, "date": {"$gte": "2026-01-01"}}` gibi Mongo tarzı bir operatör sözdizimi kullanır; düz Postgres olan pgvector, `ORDER BY embedding <=> $1`'in yanı sıra sıradan SQL `WHERE` cümleleri kullanır). Bazı vektör veritabanları filtreyi ANN aramasından önce uygular (ön filtreleme - filtre çok seçiciyse ve indeksin dar bir alt küme içinde yeterli eşleşme bulmak için daha zor arama yapması gerekiyorsa daha yavaş olabilir); bazıları ise sonra uygular (son filtreleme - çok fazla üst eşleşme filtrelenirse `top_k`'dan daha az sonuç döndürebilir) - bu ödünleşim uygulamaya özeldir ve hassasiyet önemli olduğunda belirli bir veritabanının belgelerinde kontrol edilmeye değerdir. Somut örnek: bir iş ilanı panosu SaaS'ının AI destekli aday araması, özgeçmişleri embed eder ve işe alım uzmanlarının doğal dilde arama yapmasına izin verir ("Kubernetes deneyimi olan kıdemli backend mühendisi"), ama bir işe alım uzmanı yalnızca aranabilir olmayı kabul etmiş ve kendi işe alım bölgesinde bulunan adayları görebilmelidir. Sorgu, vektör benzerliğini bir filtreyle birleştirir: `{"opted_in": true, "region": {"$in": ["EU", "UK"]}, "years_experience": {"$gte": 5}}` - döndürülen anlamsal olarak en iyi eşleşmelerin, işe alım uzmanının yasal ve sözleşmesel olarak görmesine izin verilen tek eşleşmeler olmasını da sağlar.
İlgili terimler