Szeretnéd, ha a vállalati adataidról egyszerűen, csevegés formájában kapnál pontos információkat? Ebben az útmutatóban bemutatjuk, hogyan építhető fel egy adatbázis-elemző algoritmus a Bag of Words motor segítségével. Percek alatt összekötheted a legmodernebb nyelvi modelleket a saját SQL adatbázisoddal.
A probléma: miért nehéz a szöveges lekérdezés?
A szöveg alapú utasítások SQL kóddá alakítása (Text-to-SQL) régóta nagy kihívás a fejlesztőknek. A hagyományos nyelvi modellek gyakran hibáznak a táblák neveivel vagy a szintaxissal. Sokszor „hallucinálnak” olyan oszlopokat, amelyek nem is léteznek.
A Bag of Words (BoW) egy új megközelítést alkalmaz. Ez egy úgynevezett szemantikai réteg, amely fordítóként áll a felhasználó és az adatbázis között. Nem a modell találgatja ki az SQL parancsot, hanem a rendszer generálja azt pontos definíciók alapján. Ez garantálja a helyes működést és a biztonságot.
1. lépés: Telepítés és környezet
A kezdéshez szükség lesz Python környezetre. A BoW csomag telepítése rendkívül egyszerű, egyetlen parccsal megoldható. Nyisd meg a terminált, és futtasd az alábbi kódot:
pip install bag-of-words
Ez a parancs letölti a szükséges könyvtárakat a gépedre. A telepítés után készen állsz a konfigurációra.
2. lépés: Az adatforrás csatlakoztatása
A példában egy klasszikus gyakorló adatbázist, a Northwind.db-t használjuk. Ez tartalmazza egy fiktív kereskedelmi cég rendeléseit és termékeit. Először létre kell hoznunk a kapcsolatot az adatbázis-elemző algoritmus számára.
Íme a Python kód a kapcsolat felépítéséhez:
from bag_of_words import Bags
# Csatlakozás az SQLite adatbázishoz
bags = Bags(
database_uri="sqlite:///Northwind.db"
)
A rendszer ekkor feltérképezi az adatbázis szerkezetét. Azonnal látja a táblákat és a köztük lévő kapcsolatokat.
3. lépés: Üzleti fogalmak definiálása
Ez a legfontosabb lépés. A nyelvi modellnek tudnia kell, mit értünk pontosan egyes kifejezések alatt. Például a „bevétel” fogalmát matematikailag is rögzítenünk kell.
A BoW rendszerében így adhatunk meg egy új fogalmat (metrikát):
# A "Revenue" (Bevétel) definiálása
bags.define_concept(
name="Revenue",
sql="Quantity * UnitPrice",
description="A termékek eladásából származó bevétel."
)
Ezzel megtanítottuk a rendszert, hogy ha bevételről kérdezzük, akkor a mennyiséget szorozza meg az egységárral. A definíciók egyszeri megadása után a rendszer mindig pontosan fog számolni.
4. lépés: A nyelvi modell integrálása
Most következik az „agy” csatlakoztatása. A példában az OpenAI GPT-4o modelljét használjuk, de a rendszer más szolgáltatókkal is kompatibilis. Szükséged lesz egy érvényes API kulcsra.
from bag_of_words.models import Gpt4o
# A nyelvi modell beállítása
model = Gpt4o(api_key="AZ_TE_API_KULCSOD")
A rendszer most már rendelkezik az adatokkal, a fogalmakkal és a nyelvi értelmezés képességével is.
5. lépés: Kérdezés természetes nyelven
Minden készen áll a használatra. Mostantól egyszerű magyar vagy angol mondatokkal kérdezheted le az adatbázist. Nincs szükség bonyolult SQL parancsok írására.
Próbáljuk ki egy konkrét kérdéssel: „Melyik volt az 5 legnagyobb bevételt termelő termék 1980-ban?”
results = bags.ask(
question="What are the top 5 products by revenue in 1980?",
model=model
)
print(results)
A kód lefuttatása után a rendszer automatikusan generálja a lekérdezést, végrehajtja azt, és visszaadja az eredményt.
Az eredménytábla így néz ki:
| Terméknév (ProductName) | Bevétel (Revenue) |
| Côte de Blaye | 49198.0 |
| Thüringer Rostbratwurst | 29534.0 |
| Raclette Courdavault | 25826.0 |
| Camembert Pierrot | 24360.0 |
| Tarte au sucre | 19606.0 |
Látható, hogy a rendszer pontosan értelmezte a „top 5” és a „bevétel” fogalmát is.
Miért biztonságosabb ez a módszer?
A BoW technológia legnagyobb előnye a biztonság. A nyelvi modell soha nem kap közvetlen hozzáférést az adatokhoz. Csak a sémát és a definíciókat látja.
A folyamat a következőképpen zajlik:
- A modell megérti a kérdést.
- Lefordítja azt a BoW belső nyelvére.
- A BoW motor generálja a biztonságos SQL kódot.
- Az adatbázis válaszol.
Ez kizárja az SQL-injekciós támadások lehetőségét. Emellett a modell nem tud véletlenül adatokat törölni vagy módosítani.
Rugalmasság és pontosság
A BIRD benchmark teszteken ez a megoldás érte el a legmagasabb pontosságot (64.19%). Ez jóval meghaladja a hagyományos módszerek teljesítményét. A rendszer bármilyen SQL alapú adatbázissal (PostgreSQL, Snowflake, BigQuery) működik.
A saját adatbázis-elemző algoritmus beüzemelése tehát nem igényel heteket. A fenti lépések követésével bárki létrehozhat egy megbízható, beszélgetős adatelemző rendszert.



