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 a gyakorlat különösen fontos olyan helyzetekben, ahol az adatok dinamikusak, például felhasználó által létrehozott tartalom vagy gyakran frissített adatbázisok. A beágyazások naprakészen tartására szolgáló stratégiákról további információt az Adatbázis és az AI: megoldások a beágyazások naprakészen tartásához című témakörben talál.
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 a méret az egy 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. A választás az adott használati esettől és a feldolgozni kívánt 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. Egyes modellek csak online érhetők el, míg 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. Sok esetben a több dimenzió nem változtatja meg jelentősen a gyakori használati esetek minőségét.
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önthetem el, hogy mikor használok egypontos (4 bájtos) és félpontos (2 bájtos) lebegőpontos értékeket a vektorokhoz?
Amikor beágyazási vektorokat tárol egy adatbázisban, gyakran ki kell egyensúlyoznia a tárolási hatékonyságot a numerikus hűséggel az egyszeres pontosságú (float32) és a félpontos (float16) lebegőpontos számok közötti választáskor.
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 neurális hálózatokból származnak, amelyek eredendően tolerálják a kis numerikus változatokat. 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 tervezve. Ezek a vektorok lebegőpontos számok tömbjei, ahol az elemek többsége 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 hatékonyak és méretezhetők. Indexelési technikákat használnak a keresési teljesítmény optimalizálásához.
Mi a teendő, ha több oszlopot szeretnék használni beágyazások létrehozásához?
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 javítja a keresési eredmények relevanciáját a kezdeti eredmények további feltételek vagy modellek alapján történő újraértékelésével. Az SQL Database Engine-ben a vektoros keresés és a teljes szöveges keresés kombinálásával (amely BM25-rangsorolást biztosít), vagy további SQL-lekérdezésekkel vagy gépi tanulási modellekkel pontosíthatja az eredményeket adott üzleti logika vagy felhasználói beállítások alapján.
További információ: Keresési képességek fejlesztése hibrid kereséssel és RRF-rangsorolással.
A kifinomultabb újra rangsorolási technikát szemantikai újrarangolásnak nevezzük. A szemantikai újrarangolás egy speciális modellre (gyakran keresztkódolóra vagy késői interakciós megközelítésre) támaszkodik, amely összehasonlítja az egyes jelöltszakaszokat a lekérdezéssel, és részletes relevanciapontot rendel hozzá. Az ilyen szakaszok újraértékelésével a rangsoroló algoritmusok biztosítják, hogy a legpontosabb, leghasznosabb és legrelevánsabb eredmények a lista élére kerüljenek.
Az újrabesorolási modell használatának mintájáért tekintse meg az Azure SQL, az SQL Server 2025 és a Cohere Rerank modellek szemantikai újrarankálását.
Mikor érdemes az AI Search (most AI Foundry) szolgáltatást használni a vektorkeresési forgatókönyvekhez használt SQL-hez képest?
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 bármilyen adat tárolására és bármilyen lekérdezés futtatására képes: strukturált és strukturálatlan. Vektorkeresést végezhet az adatokon. Ez egy jó választás olyan helyzetekben, 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, amelyet az Azure SQL-ben vagy az SQL Serveren futtathat, amely egyszerre egyesíti a vektoros, térinformatikai, strukturált és strukturálatlan adatokat. A mintalekérdezés lekéri az 50 legfontosabb éttermet az étterem leírása, az étterem helye és a felhasználó beállításai alapján. Vektoros keresést használ a hely leírásához és térinformatikai kereséséhez, valamint csillagszámok, vélemények száma, kategória és egyéb attribútumok alapján is szűr.
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 Exact Nearest Neighbor (ENN) keresés a beágyazások szemantikai távolsága alapján találja meg a legrelevánsabb értékeléseket, miközben térinformatikai távolság és egyéb üzleti attribútumok alapján is szűr. 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 .