Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database a Microsoft Fabricben
Ez a cikk az SQL Database Engine-ben található vektorokkal és beágyazásokkal kapcsolatos gyakori kérdéseket tartalmazza.
Megjegyzés:
A vektorfunkciók az Always-up-to-date szabályzattal konfigurált felügyelt Azure SQL-példányban érhetők el.
Hogyan tudom naprakészen tartani az embeddingeket?
Frissítse a beágyazásokat minden alkalommal, amikor a mögöttes adatok megváltoznak. Ez különösen fontos olyan helyzetekben, ahol az adatok dinamikusak, például a felhasználó által létrehozott tartalom vagy a gyakran frissített adatbázisok esetében. Ha többet szeretne megtudni a beágyazások naprakészen tartására szolgáló stratégiákról, tekintse meg az Adatbázis és az AI: megoldásokat a beágyazások frissítésének megőrzésére.
Milyen a vektorkeresés erőforrásigénye a tárolás és feldolgozás tekintetében?
A vektorkeresés többletterhelése elsősorban a vektor adattípusának és az indexeléshez és kereséshez szükséges számítási erőforrások tárolását foglalja magában. A vektor adattípus a tárolás szempontjából hatékony, de a pontos terhelés a tárolt vektorok méretétől - a méretek számától - függően változhat.
A megfelelő vektorméret kiválasztásával kapcsolatos további információkért tekintse át a beágyazási modelleket és dimenziókat: optimalizálja a teljesítmény-erőforrás kihasználtság arányát.
Az SQL Server-adatoldalak legfeljebb 8060 bájtot tartalmazhatnak, így a vektor mérete befolyásolja, hogy hány vektor tárolható egyetlen lapon. Ha például egy vektor 1024 dimenzióval rendelkezik, és minden dimenzió egyetlen pontosságú lebegőpontos (4 bájt), a vektor teljes mérete 4104 bájt (4096 bájt hasznos adat + 8 bájt fejléc). Ez az egyetlen oldalon elférő vektorok számát egyre korlátozza.
Milyen beágyazási modellt érdemes használni, és mikor?
Számos beágyazási modell érhető el, és az, hogy melyiket használja, az adott használati esettől és a feldolgozandó adatok típusától függ. Egyes modellek több nyelvet is támogatnak, míg mások a multimodális adatokat (szöveget, képeket stb.) támogatják. Némelyik csak online érhető el, mások helyileg futtathatók.
A modell mellett vegye figyelembe a modell méretét és az általa előállított méretek számát. A nagyobb modellek jobb pontosságot biztosíthatnak, de több számítási erőforrást és tárhelyet igényelnek, de sok esetben a nagyobb dimenzió nem igazán változtatja meg a minőséget a gyakori használati esetekben.
A megfelelő beágyazási modell kiválasztásáról további információt a modellek és dimenziók beágyazása: a teljesítmény-erőforrás kihasználtság arányának optimalizálása című témakörben talál.
Hogyan döntsük el, hogy mikor használjuk az egypontos (4 bájtos) és a félpontos (2 bájtos) lebegőpontos értékeket a vektorokhoz?
Az adatbázisokba ágyazott vektorok tárolásakor az egyszeres pontosságú (float32) és a félpontos (float16) lebegőpontos úszók közötti választás gyakran a tárolási hatékonyság numerikus megbízhatósággal való kiegyensúlyozása érdekében történik.
Szerencsére a beágyazások általában nem érzékenyek a kis pontosságú változásokra.
A beágyazások olyan sűrű vektorábrázolások, amelyeket olyan feladatokban használnak, mint a szemantikai keresés, a javaslati rendszerek és a természetes nyelvi feldolgozás. Ezek a vektorok gyakran a neurális hálózatok kimenetei, amelyek eredendően tolerálják a kis numerikus variációkat. Ennek eredményeképpen a pontosság float32float16 csökkentése általában minimális hatással van a hasonlóság-összehasonlítások vagy az alsóbb rétegbeli feladatok minőségére – különösen a következtetés során.
A használat float16 jelentősen csökkentheti a tárterület- és memóriahasználatot, ami különösen hasznos nagy méretű adathalmazok beágyazásakor.
Mi a helyzet a ritka vektorokkal?
Az SQL Database Engine vektoradattípusa jelenleg sűrű vektorokhoz lett kialakítva, amelyek lebegőpontos számok tömbjei, ahol a legtöbb elem nem nulla. A ritkább vektorok, amelyek jelentős számú nulla elemet tartalmaznak, natív módon nem támogatottak.
Milyen teljesítménymutatók használhatók az SQL-vektorok kereséséhez?
A teljesítmény az adott használati esettől, az adathalmaz méretétől és a lekérdezések összetettségétől függően széles körben változhat. Az SQL Server vektorkeresési képességei azonban úgy vannak kialakítva, hogy hatékonyak és méretezhetőek legyenek, és az indexelési technikákat kihasználva optimalizálják a keresési teljesítményt.
Mi a teendő, ha több oszlopom van, amelyet beágyazások létrehozásához szeretnék használni?
Ha több oszlopot szeretne használni a beágyazások létrehozásához, két fő lehetőség közül választhat:
- Hozzon létre egy beágyazást minden oszlophoz, vagy
- Egyesítse több oszlop értékeit egyetlen sztringbe, majd hozzon létre egyetlen beágyazást az összefűzött sztringhez.
A két lehetőségről és a kapcsolódó adatbázis-kialakítási szempontokról további információt a Beágyazások hatékony és elegáns modellezése című témakörben talál.
Mi a helyzet az újrarangsorolás?
Az újbóli rangsorolás a keresési eredmények relevanciájának javítására szolgáló technika, amely a kezdeti eredményeket további feltételek vagy modellek alapján értékeli újra. Az SQL Database Engine-ben a vektoros keresés és a teljes szöveges (BM25 rangsorolást biztosító) keresés, illetve további SQL-lekérdezések vagy gépi tanulási modellek kombinálásával pontosíthatja az eredményeket adott üzleti logika vagy felhasználói beállítások alapján.
További információkért tekintse át a keresési képességek növelését a hibrid kereséssel és az RRF újrarangolásával.
Mikor érdemes az AI Search (most AI Foundry) vagy az SQL használatát választani vektorkeresési forgatókönyvekhez?
Az AI Search (ma AI Foundry) egy speciális szolgáltatás, amely speciális keresési forgatókönyvekhez készült, beleértve a vektorkeresést, a természetes nyelvi feldolgozást és az AI-alapú elemzéseket. Átfogó funkciókkal rendelkezik az intelligens keresési alkalmazások létrehozásához, például a különböző AI-modellek beépített támogatásához, fejlett rangsorolási algoritmusokhoz és más AI-szolgáltatásokkal való integrációhoz.
Az SQL Database Engine lehetővé teszi bármilyen adat tárolását és bármilyen lekérdezés futtatását: strukturált és strukturálatlan, valamint vektorkeresést végezhet az adatokon. Ez egy jó választás olyan forgatókönyvekhez, ahol az összes adatot együtt kell keresnie, és nem szeretne külön szolgáltatást használni a kereséshez, amely bonyolítaná az architektúrát. Az SQL Database Engine kritikus vállalati biztonsági funkciókat kínál az adatok folyamatos védelme érdekében, például sorszintű biztonság (RLS), dinamikus adatmaszkolás (DDM), Always Encrypted, nem módosítható főkönyvtáblák és transzparens adattitkosítás (TDE).
Íme egy példa egyetlen lekérdezésre, amely futtatható az Azure SQL-ben vagy az SQL Serveren, amely egyszerre egyesíti a vektoros, térinformatikai, strukturálatlan és strukturálatlan adatokat. A mintalekérdezés lekéri az 50 legrelevánsabb éttermet az étterem leírása, az étterem helye és a felhasználó preferenciái alapján, vektoros kereséssel a hely leírására és térinformatikai keresésére, szűrés csillagszámok, vélemények száma, kategória stb. alapján:
DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);
SELECT TOP (50) b.id AS business_id,
b.name AS business_name,
r.id AS review_id,
r.stars,
r.review,
VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
@p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
INNER JOIN dbo.reviews_embeddings AS re
ON r.id = re.review_id
INNER JOIN dbo.business AS b
ON r.business_id = b.id
WHERE b.city = 'Redmond'
AND @p.STDistance(b.geo_location) < 5000 -- 5 km
AND r.stars >= 4
AND b.reviews >= 30
AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;
Az előző mintában a Pontos legközelebbi szomszéd (ENN) keresés a beágyazások szemantikai távolsága alapján a legrelevánsabb értékelések megkeresésére szolgál, valamint a térinformatikai távolság és más üzleti attribútumok alapján történő szűrésre is. Ez a lekérdezés bemutatja, hogy a vektoros keresés és a hagyományos SQL-képességek kombinálásával gazdag és hatékony keresési élményt hozhat létre.
Ha közelítő szomszéd (ANN) keresést szeretne használni, létrehozhat egy vektorindexet a reviews_embeddings táblában, és a VECTOR_SEARCH függvény használatával végezheti el a keresést.
Hol találhatok egy saját tempójú labort, ahol többet tudhatok meg a beágyazásokról és a vektorkeresésről?
Tekintse át az öngyors Azure SQL Cryptozoology AI-beágyazási tesztkörnyezetet .