Genel bakış
Asistan, PDF'leri aranabilir bilgi kaynaklarına dönüştürür. all-MiniLM-L6-v2 ile yerel embedding, ChromaDB araması ve getirilen bağlam üzerinde DeepSeek yanıt üretimi FastAPI katmanında çalışır; MCP aynı yeteneklere araç erişimi sağlar. Servis durum ve son log uçlarıyla izlenebilir.
Problem ve hedef
Uzun belgelerde doğru bölümü bulmak ve yanıtın hangi sayfaya dayandığını izlemek zordur. Genel amaçlı bir LLM, kaynak bağlamı olmadan belgeden gelmeyen ayrıntılar üretebilir.
Benim katkım
- PDF çıkarma, parçalara ayırma, embedding ve ChromaDB indeksleme akışını geliştirdim.
- Retrieval sonuçlarını kaynak ve sayfa bilgisiyle yanıt üretimine bağladım.
- Arama ve soru-cevap işlevlerini FastAPI ile MCP araçlarında erişilebilir hale getirdim.
Çözüm
- Belge metni sayfa bağlamı korunarak parçalara ayrıldı ve embedding'lerle indekslendi.
- Soru, en ilgili parçaları getirmek için vektör aramaya dönüştürüldü.
- Getirilen bağlam LLM'e verilerek yanıt ve kaynak işaretleri üretildi; MCP yalnız araç erişim katmanı olarak tutuldu.
Mimari
Sistemin temel bileşenleri ve veri/karar akışı aşağıdaki gibi ayrılır.
Teknolojiler
Yerel embedding, vektör indeks ve benzerlik araması
Belge ve soru-cevap servisi
Getirilen PDF bağlamından yanıt üretimi
İstemciler için araç erişimi
Uygulama kararları
- Kaynak belgenin güncellenmesini model eğitimi yerine yeniden indeksleme sorunu olarak ele almak.
- Ağır retrieval ve üretim işlemlerini backend'de tutup MCP katmanını ince bırakmak.
- Yanıt yanında belge ve sayfa bilgisini görünür kılmak.
Sonuçlar ve değerlendirme
- PDF alımı, indeksleme, arama ve kaynaklı soru-cevap için uçtan uca akış oluşturuldu.
- Aynı yetenekler web/API ve MCP istemcileri tarafından kullanılabilir hale getirildi.
Zorluklar ve çözümler
- Bağlamı koruyan parçalama → sayfa bilgisini her parça ile birlikte taşımak.
- Katman sorumlulukları → retrieval/LLM işini backend'de, araç sözleşmesini MCP'de tutmak.
Öğrendiklerim
RAG kalitesinin yalnız model seçimine değil; belge çıkarma, parça sınırları, metadata ve kaynak sunumuna güçlü biçimde bağlı olduğunu gösterdi.