2026-02-18Sandro Volpicella

Bedrock Knowledgebase ve S3 Vectors ile Benzer Yazıları Oluşturma

AWSBedrockS3Generative AIVector DatabaseMachine Learning
B

Okuyucularınızın ilgisini çekecek benzer içerikleri bulmak zor olabilir. AWS Fundamentals Blog'unda 100'den fazla yazı var, ancak okuyucuların ne aradıklarını bilmeleri gerekiyor. Bu sorunu çözmenin yaygın bir yolu, mevcut yazı ile ilgili diğer yazıları göstermektir. Bugün tam olarak bunu, AWS Bedrock Knowledgebase ve S3 Vectors kullanarak nasıl yapacağımızı inceleyeceğiz.

Mimari: Bedrock ve S3 Vectors

Genel mimari sadece iki servisten oluşur:

  • Bedrock: Knowledge Base (Bilgi Tabanı) oluşturmak için.
  • S3: Depolama ve Vektörler için.

Bedrock ile Knowledge Base Oluşturma

Bedrock, AWS üzerinde yapay zeka ürünleri geliştirmek için kullanılan ana servistir. Temel modellere ve geliştirici araçlarına erişim sağlar. Başlangıçta karmaşık gelebilir ancak "Generative AI uygulamaları oluşturmanın ve ölçeklendirmenin en kolay yolu" olarak tanımlanır.

Depolama ve Vektörler için S3

Klasik S3 depolamanın yanı sıra, vektör indeksimizi yeni duyurulan S3 Vectors servisinde saklıyoruz. Bu, AWS'in son zamanlardaki en heyecan verici "AI" lansmanlarından biridir.

Adım 1 - İçeriği Hazırlama ve S3'e Yükleme

İlk ihtiyacımız olan şey içeriktir. Örnek olarak 100+ blog yazısını kullanıyoruz. Tüm yazılar Markdown formatındadır ve her birinin başında metadata içeren bir "frontmatter" bulunur (başlık, tarih, SEO açıklaması, slug, etiketler vb.).

Bu içerikleri normal bir S3 bucket'ına yüklüyoruz. Her S3 objesinin metadata'sına (Cover, Date Published, Service, Tags, Title gibi) bu bilgileri ekliyoruz. Bu metadata, daha sonra sonuçları filtrelemek için çok kullanışlı olacaktır.

Adım 2 - Bedrock'ta Knowledge Base Oluşturma

Şimdi Bedrock'ta bir Knowledge Base oluşturacağız. S3'ü vektör deposu olarak kullanmak istediğimizden, bunu konsoldan manuel olarak yapıyoruz (Terraform ve Pulumi henüz tam desteklemiyor olabilir).

  1. Bedrock konsolunda Knowledge Bases bölümüne gidin.
  2. "Create" ve ardından "Knowledge Base with vector store" seçeneğini tıklayın.
  3. Knowledge Base'e bir isim verin (örneğin kb-blog-posts).
  4. Veri kaynağı olarak S3'ü seçin.

Önemli: CloudWatch loglarını ("Log delivery") etkinleştirmeyi unutmayın. Aksi takdirde, senkronizasyon hataları hakkında bilgi alamazsınız.

Adım 3 - Veri Kaynağı ve Parçalama (Chunking)

Vektör depolarında, içeriğin sayısal bir temsili (vektör) saklanır. Bir yazı tek bir sayıya sığmayacak kadar büyük olduğu için, yazıyı parçalara (chunks) ayırmamız gerekir.

Örneğin, tüm yazıyı almak yerine 2000 karakterlik parçalar alır, bunları bir AI modeli ile "embed" eder ve vektör deposuna koyarız.

Bedrock ayarlarında:

  • Chunking Strategy: Basitlik için "Fixed-size chunking" (Sabit boyutlu parçalama) seçiyoruz.
  • Max Tokens: 2000
  • Overlap Percentage: %10

Adım 4 - Model ve Vektör Deposu Seçimi

Bir model seçmemiz gerekiyor. Biz Titan Text Embeddings V2 modelini kullanıyoruz.

Vektör deposu olarak S3'ü seçiyoruz.

Not: S3 Vectors servisi henüz ön izleme (preview) aşamasında olabilir. Prodüksiyon yükleri için dikkatli olunmalıdır.

Adım 5 - İçeriği Senkronize Etme

Knowledge Base oluşturulduktan sonra, veri kaynağına gidip Sync (Senkronize Et) işlemini başlatın. CloudWatch üzerinden ilerlemeyi takip edebilirsiniz.

Adım 6 - Knowledge Base'i Test Etme

Bedrock konsolunda "Test Knowledge Base" özelliğini kullanarak sisteminizi deneyebilirsiniz. "Retrieval only" seçeneğini seçerek, sadece veri kaynağınızdan gelen parçaları görebilirsiniz.

Örneğin, "CloudFront ne kadar pahalı?" diye sorduğunuzda, ilgili fiyatlandırma makalesinden parçalar dönmelidir.

Adım 7 - Benzer Yazıları Oluşturma ve JSON Olarak Kaydetme

Son adım, benzer yazıları gerçekten oluşturmaktır. Bizim yaklaşımımız, build zamanında çalışan bir script ile tüm yazılar için benzer içerikleri bulup bir JSON dosyasında (generated-posts.json) saklamaktır.

Bu yaklaşım maliyet açısından etkilidir çünkü sadece dosyalar değiştiğinde Bedrock API'sini çağırırız ve ödeme yaparız. Ayrıca, sayfa yükleme hızını artırır çünkü veriler önceden hazırlanmıştır.

Örnek JSON çıktısı:

{
    "aws-lambda-guide": [
        {
            "slug": "serverless-architecture",
            "title": "Serverless Mimarisine Giriş",
            "similarity": 0.58,
            "service": "lambda"
        },
        {
            "slug": "aws-cost-optimization",
            "title": "AWS Maliyet Optimizasyonu",
            "similarity": 0.55,
            "service": "cost"
        }
    ]
}

İyileştirme Fırsatları

Bu sistem geliştirilebilir:

  • Daha iyi chunking: Hiyerarşik parçalama kullanmak.
  • Daha iyi veri hazırlığı: Her yazı için iyi bir özet çıkarmak.
  • Daha iyi sorgular: Sorguyu geliştirmek.
  • Metadata filtreleme: Önce servisi bulup, sonra o servise ait parçalarda arama yapmak.

Sıkça Sorulan Sorular (SSS)

1. Bedrock Knowledge Base kullanmanın maliyeti nedir?

Maliyet, seçilen modele, depolanan veri miktarına ve yapılan API çağrılarına göre değişir. S3 Vectors kullanımı depolama maliyetlerini optimize edebilir.

2. S3 Vectors prodüksiyon için hazır mı?

Makalenin yazıldığı tarihte S3 Vectors henüz ön izleme (preview) aşamasındadır, bu nedenle kritik iş yükleri için dikkatli olunmalıdır.

3. Hangi embedding modellerini kullanabilirim?

Bedrock, Titan Text Embeddings gibi çeşitli modeller sunar. İhtiyacınıza ve bütçenize en uygun modeli seçebilirsiniz.

Daha fazla bilgi için AWS Danışmanlığı ve Kubernetes Danışmanlığı hizmetlerimize göz atabilirsiniz.

Kaynak / Source: https://awsfundamentals.com/blog/building-related-posts-with-bedrock-knowledgebase-and-s3-vectors