Texniki Dərinlik

Təbii Dildən Doğrulanmış SQL-ə: Semantik Qatın Rolu

BI Copilot-ların uğuru LLM markasından deyil, semantik qatın yetkinliyindən gəlir. Təbii dildə sorğu yaradan memarlıq necə qurulur?

BIART Ekibi3 dəq oxu1 baxış
Semantic layer ve BI Copilot mimarisi görseli

2024-2025 dövründə bazara çıxan BI Copilot-ların böyüyü hissəsi eyni divara çırpıldı: "ötən ayın ən gəlirli 5 filialı" kimi sual LLM tərəfindən sintaktik olaraq doğru, lakin semantik olaraq səhv SQL-ə çevrilir. "Filial gəlirliliyi" qurumun tərifi ilə deyil, LLM-in yozumu ilə tərcümə olunur. Cavab fərqli LLM markası deyil — aralıqdakı semantik qatdır.

Semantik qat nədir?

Semantik qat cədvəl və sütunların xam strukturu ilə iş tərəfinin istifadə etdiyi dil arasında tərcüməçi qatdır. Üç əsas blok:

  • EntityMap: hansı cədvəl hansı iş varlığını təmsil edir (məsələn dbo.customers → "Müştəri").
  • MetricDefinition: bir KPI-nın necə hesablandığını tək düstura sabitləyir (məsələn "Filial gəlirliliyi = SUM(profit_amount) WHERE branch_id = X").
  • BusinessTerm: korporativ lüğət ("PEP", "AML həddi", "VIP seqment").

Yanına ColumnPolicy (görünən/maskalanan sütunlar) və sertifikatlı few-shot nümunələri əlavə olunur.

NL → SQL axını

Semantik qat üzərinə qurulan BI Copilot-un axını:

  1. Intent: istifadəçi nə soruşur — veri sorğusu, KPI izahı, glossary?
  2. Retrieve: vektor axtarışı ilə əlaqəli EntityMap, MetricDefinition və əvvəlki nümunələr çəkilir.
  3. Plan: LLM QuerySpec JSON yaradır — cədvəl, sütunlar, filtrlər, qruplaşma, sıralama. SQL deyil!
  4. Validate: QuerySpec semantik qat və kataloga qarşı yoxlanılır — icazə verilən sütun, doğru join, PII nəzarəti.
  5. Synthesize: QuerySpec parametrik salt-oxunan SQL-ə çevrilir.
  6. Execute: ayrı read-only DB hesabı ilə sandbox-da işləyir.
  7. Mask: ColumnPolicy ilə rolə uyğun maskalama.
  8. Narrate: izah verən LLM, nəticəni təbii dildə xülasələyir; rəqəm, valyuta və cəm yoxlaması.

Birbaşa SQL niyə uğursuz olur?

LLM SQL-i sintaks olaraq asanlıqla yaradır, lakin hansı cədvəlin "filial"ı saxladığını, "gəlirliliyin" necə hesablandığını, hansı sütunun PII olduğunu bilmir. Birbaşa SQL üç xəta sinfi yaradır:

  • Səhv JOIN: oxşar adlı iki cədvəl, səhv FK.
  • Səhv metrik: "gəlirlilik" üçün profit_amount yerinə net_amount.
  • PII sızıntısı: müştəri ID-si nəticədə görünür.

QuerySpec aralıq qatı bu xətalara qarşı struktur qapı qoyur.

Sertifikatlı few-shot

Few-shot nümunələr semantik qatın canlı yaddaşıdır. Bank üçün yaxşı başlanğıc dataset:

  • "Ötən ayın ən gəlirli 5 filialı" → QuerySpec → SQL.
  • "Fərdi kredit təsdiq nisbəti son həftə" → QuerySpec → SQL.
  • "PEP seqment portfel həcmi YTD" → QuerySpec → SQL.

Dil əsaslı (TR / EN / AZ / RU) ayrı saxlanılır; LLM ilgili dilə uyğun few-shot ilə qidalanır.

Bankçılıq domain pack

"VIP müştərilər hansı filiallarda sıxdır?" kimi soruların doğru cavablanması üçün quruma xas termin dəsti lazımdır. Domain pack: BusinessTerm lüğəti, MetricDefinition dəsti, sertifikatlı few-shot. Banking-tr və banking-en pack-ləri ortaq bazadan başlayır; hər bank öz terminologiyası ilə zənginləşdirir.

Əməliyyat nəzarəti

NL → SQL boru xətti üç kontrol nöqtəsi tələb edir:

  • Suggestion inbox: LLM yeni QuerySpec təklif edirsə admin təsdiqi.
  • PromptAuditLog: bütün mərhələlər audit qeydinə; KVKK 90 gün və ya RegulatedFinance 7 il.
  • Confidence threshold: aşağı etibarlı sorğular avtomatik insan analitikinə yönləndirilir.

Yekun

BI Copilot yaxşı LLM ilə deyil, yaxşı semantik qat ilə işləyir. İnvestisiyanın 70%-i cədvəl və metrik təriflərinə, 20%-i few-shot-a, 10%-i model seçiminə xərclənməlidir.

Paylaş