Instructions to use BirizY/embeddingdeneme with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use BirizY/embeddingdeneme with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("BirizY/embeddingdeneme") sentences = [ "The weather is lovely today.", "It's so sunny outside!", "He drove to the stadium." ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] - Notebooks
- Google Colab
- Kaggle
Türkçe SQL Tahmin Sistemi
Türkçe doğal dil sorularından tablo, kolon ve filtre bilgisi üreten hibrit bir sorgu tahmin sistemidir. Sentence embedding, alan bilgisine dayalı kurallar ve büyük dil modeli (LLM) birlikte kullanılır.
Sistem doğrudan SQL sorgusu çalıştırmaz. Çıktısı, uygulama tarafından doğrulanıp SQL’e dönüştürülebilecek yapılandırılmış JSON’dur.
Sistem Bilgileri
| Alan | Açıklama |
|---|---|
| Dil | Türkçe |
| Görev | Doğal dilden yapılandırılmış sorgu tahmini |
| Mimari | Embedding + kural katmanı + LLM |
| Kapsam | Projede tanımlanmış tablo ve kolon şeması |
| Embedding modeli | Model adı ve sürümü belirtilmemiştir |
| Filtre üretim modeli | Model adı ve sürümü belirtilmemiştir |
| Geliştirici | Yayın öncesinde eklenmelidir |
| Lisans | Yayın öncesinde belirlenmelidir |
Bu depo, tek bir modelden ziyade birden fazla bileşenden oluşan bir sorgu üretim hattını açıklamaktadır.
Amaç ve Kullanım Alanları
Sistem, kullanıcının sorusundan şu bilgileri çıkarmayı hedefler:
- Sorgulanacak tablo.
- Seçilecek kolon veya kolonlar.
- Uygulanacak filtrelerin kolon, operatör ve değer bilgileri.
Hedeflenen kullanım alanları; Türkçe veri sorgulama arayüzleri, raporlama asistanları ve tanımlı bir veritabanı şeması üzerinde çalışan doğal dil tabanlı uygulamalardır.
Mevcut alan sözlüğü; bakım, ruhsat, imar, tapu, mülkiyet, yapı ve sigorta gibi konuları kapsar. Yeni alanlara uyarlama için şema, anahtar kelime listeleri ve kurallar güncellenmelidir.
Girdi ve Çıktı Örneği
Örnek kullanıcı sorusu:
2024 yılında biten sigortaların bitiş tarihlerini getir.
Hedeflenen çıktı:
{
"table": "Sigortalar",
"columns": ["BitisTarihi"],
"filters": [
{
"column": "BitisTarihi",
"operator": ">=",
"value": "2024-01-01T00:00:00Z"
},
{
"column": "BitisTarihi",
"operator": "<=",
"value": "2024-12-31T23:59:59Z"
}
]
}
Bu çıktı, beklenen formatı gösteren bir örnektir; ölçülmüş bir test sonucu değildir. Tarih sınırları ve saat dilimi, uygulamanın veri saklama kurallarıyla uyumlu olmalıdır.
Çalışma Yöntemi
1. Embedding hazırlığı
Tablo konularını ve kolon anlamlarını temsil eden anahtar kelimeler vektörlere dönüştürülür. Tablo ve kolon embeddingleri ayrı dosyalarda saklanır.
2. Tablo seçimi
Kullanıcı sorusunun embeddingi ile tablo/domain embeddingleri arasında kosinüs benzerliği hesaplanır. Ardından alan kuralları adayların skorlarını düzenler.
Örneğin:
| İfade | Desteklenen tablo |
|---|---|
| hisse, pay | Mulkiyetler |
| oda, salon, kat, m² | Yapilar |
| TAKS, KAKS, çekme mesafesi | Imarlar |
| poliçe, kasko | Sigortalar |
3. Kolon seçimi
Seçilen tablonun kolonları benzerlik skorlarıyla değerlendirilir. Para birimi ve zaman yönü gibi ipuçları kolon seçimini destekler.
Örneğin “dolar” ifadesi TutarUSD kolonunu; “gelecek” ifadesi ilgili sonraki tarih veya bitiş tarihi kolonlarını destekleyebilir.
4. Filtre üretimi
schema.json üzerinden kolonun metin, sayısal veya tarih türünde olduğu belirlenir. LLM’e bu bilgiyle birlikte JSON üretimini sınırlandıran bir prompt verilir.
Çıktıdan ilk dengeli JSON bloğu alınır. Ayrıştırma başarısız olduğunda boş filtre listesine dönülür. Bu davranış, filtre üretiminin başarılı olduğu anlamına gelmez.
5. Değerlendirme
Test soruları üzerinde tablo ve kolon tahminleri değerlendirilir. En yüksek iki aday arasındaki skor farkı, kararsız tahminlerin incelenmesinde kullanılır.
Temel Dosyalar
| Dosya | İşlev |
|---|---|
table_embedding.ipynb |
Tablo/domain embeddinglerinin hazırlanması |
colums_embedding.ipynb |
Kolon embeddinglerinin hazırlanması |
schema.ipynb |
Tablo, kolon ve veri tipi şemasının hazırlanması |
main.ipynb |
Uçtan uca tahmin ve filtre üretimi |
yedek.ipynb |
Alternatif veya önceki akış |
schema.json |
Tablo ve kolon veri tipleri |
domain_keyword_embeddings.json/.npy |
Tablo/domain vektörleri |
column_embeddings.json/.npy |
Kolon vektörleri |
embedding/table.py |
Tablo tahmini ve hata analizi |
embedding/column.py |
Kural destekli tablo ve kolon tahmini |
embedding/test.py |
İlk iki adayın skor farkı analizi |
embedding/threshold.py |
JSON üzerinden kural uygulama |
test_questions2.json |
Değerlendirme soruları |
Kullanılan Teknolojiler
- Sentence Transformers: Soru ve anahtar kelimelerin embeddinglerini üretir.
- scikit-learn: Kosinüs benzerliği hesaplar.
- RapidFuzz: Benzer yazımları ve yazım hatalarını eşleştirmeyi destekler.
- Transformers ve PyTorch: LLM tabanlı filtre üretiminde kullanılır.
- FAISS CPU: Projede bulunur; ana akıştaki kullanımı sınırlıdır.
Eğitim ve Veri Bilgisi
Mevcut proje açıklaması, anahtar kelime embeddinglerinin hazırlanmasını ve önceden eğitilmiş modellerin kullanımını göstermektedir. Projeye özel fine-tuning yapıldığına ilişkin bilgi verilmemiştir.
Alan anahtar kelimeleri, kolon ifadeleri ve test soruları projeye özgüdür. Veri kaynağı, örnek sayısı, oluşturma yöntemi ve eğitim/test ayrımı henüz belgelenmemiştir.
Performans ve Değerlendirme
Projede toplu test ve hata analizi dosyaları bulunmaktadır. Ancak bu kartın hazırlanmasında doğrulanmış sayısal sonuçlar paylaşılmamıştır.
| Ölçüt | Durum |
|---|---|
| Tablo Top-1 doğruluğu | Sayısal sonuç belirtilmemiştir |
| Kolon tahmin başarımı | Sayısal sonuç belirtilmemiştir |
| Filtre doğruluğu | Sayısal sonuç belirtilmemiştir |
| JSON ayrıştırma başarısı | Sayısal sonuç belirtilmemiştir |
| Uçtan uca sorgu doğruluğu | Sayısal sonuç belirtilmemiştir |
Performans sonuçları; test kümesi boyutu, model sürümleri ve kullanılan kural sürümüyle birlikte raporlanmalıdır. Benzerlik skorları olasılık veya doğruluk yüzdesi olarak yorumlanmamalıdır.
Sınırlamalar
- Tanımlanmamış tablo ve kolonlara genelleme kapasitesi değerlendirilmemiştir.
- Kural sayısı arttıkça bakım yükü ve kural çakışmaları artabilir.
- Notebook ve script sürümleri farklı sonuçlar üretebilir.
- Yazım hataları, belirsiz ifadeler ve birden fazla tablo gerektiren sorular hatalı tahminlere yol açabilir.
- Geçerli JSON üretilmesi, sorgunun anlam bakımından doğru olduğunu garanti etmez.
- Boş filtreyle devam edilmesi, kullanıcının istediğinden daha geniş bir sonuç kümesi oluşturabilir.
- Hibrit yaklaşımın diğer yöntemlerden üstünlüğü, karşılaştırmalı sonuçlarla henüz gösterilmemiştir.
Güvenli Kullanım
Üretilen çıktı çalıştırılmadan önce tablo ve kolon adları şemayla, operatörler izin verilen listeyle ve değerler veri tipleriyle doğrulanmalıdır.
SQL dönüşümünde parametreli sorgular kullanılmalı; erişim yetkileri ve veri kapsamı uygulama tarafından uygulanmalıdır. Filtre üretimi başarısız olduğunda kullanıcıya açıklama yapılması veya sorgunun incelemeye alınması önerilir.
Harici bir LLM servisi kullanılması durumunda kullanıcı soruları ve şema bilgilerinin aktarımı, kurumun veri gizliliği kurallarına göre değerlendirilmelidir.
Tekrarlanabilirlik
Aynı sonuçları yeniden üretebilmek için embedding ve LLM kimlikleri, model revizyonları, bağımlılık sürümleri, üretim parametreleri, şema, kurallar ve embedding dosyaları birlikte sürümlenmelidir.