Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2025 (17.x) Förhandsversion
Azure SQL Database
Azure SQL Managed Instance
Förhandsversion av SQL-databas för Microsoft Fabric
Den här artikeln innehåller vanliga frågor om vektorer och inbäddningar i SQL Database Engine.
Anmärkning
Vektorfunktioner är tillgängliga i Azure SQL Managed Instance som konfigurerats med principen Always-up-to-date .
Hur håller jag inbäddningen uppdaterad?
Uppdatera inbäddningar varje gång de underliggande data som de representerar ändras. Detta är särskilt viktigt för scenarier där data är dynamiska, till exempel användargenererat innehåll eller ofta uppdaterade databaser. Mer information om flera strategier för att hålla inbäddningar uppdaterade finns i Databas och AI: lösningar för att hålla inbäddningar uppdaterade.
Vad är den extra lagringen och bearbetningen för vektorsökning?
Omkostnaderna för vektorsökning omfattar främst lagring av vektordatatypen och de beräkningsresurser som krävs för indexering och sökning. Datatypen VECTOR är utformad för att vara effektiv när det gäller lagring, men den exakta kostnaden kan variera beroende på storleken – antalet dimensioner – för de lagrade vektorerna.
Mer information om hur du väljer rätt vektorstorlek finns i Bädda in modeller och dimensioner: optimera förhållandet mellan prestanda och resursanvändning.
En SQL Server-datasida kan innehålla upp till 8 060 byte, så storleken på vektorn påverkar hur många vektorer som kan lagras på en enda sida. Om du till exempel har en vektor med 1 024 dimensioner och varje dimension är en enkel precision float (4 byte) skulle den totala storleken på vektorn vara 4 104 byte (4 096 byte nyttolast + 8 byte header). Detta begränsar antalet vektorer som får plats på en enda sida till en.
Vilken inbäddningsmodell ska jag använda och när?
Det finns många inbäddningsmodeller tillgängliga, och valet av vilken som ska användas beror på det specifika användningsfallet och vilken typ av data som bearbetas. Vissa modeller stöder flera språk, medan andra stöder multimodala data (text, bilder osv.). Vissa är bara tillgängliga online, andra kan köras lokalt.
Utöver själva modellen bör du överväga storleken på modellen och antalet dimensioner som den producerar. Större modeller kan ge bättre noggrannhet men kräver mer beräkningsresurser och lagringsutrymme, men i många fall har fler dimensioner inte riktigt ändrar kvaliteten så mycket, för vanliga användningsfall.
Mer information om hur du väljer rätt inbäddningsmodell finns i Bädda in modeller och dimensioner: optimera förhållandet mellan prestanda och resursanvändning.
Hur bestämmer du när du ska använda flyttalsvärden med enkel precision (4 byte) jämfört med halv precision (2 byte) för vektorer?
När du lagrar inbäddningsvektorer i en databas kommer valet mellan enkel precision (float32) och halvprecision (float16) ofta att handla om att balansera lagringseffektivitet med numerisk översättning.
Lyckligtvis är inbäddningar vanligtvis inte mycket känsliga för små ändringar i precision.
Inbäddningar är kompakta vektorrepresentationer som används i uppgifter som semantisk sökning, rekommendationssystem och bearbetning av naturligt språk. Dessa vektorer är ofta utdata från neurala nätverk, som till sin natur är toleranta mot små numeriska variationer. Därför har en minskning av precisionen från float32 till float16 vanligtvis minimal inverkan på kvaliteten på likhetsjämförelser eller underordnade uppgifter , särskilt under slutsatsdragning.
Användning av float16 kan avsevärt minska lagrings- och minnesanvändningen, vilket är särskilt fördelaktigt när du arbetar med storskaliga inbäddningsdatauppsättningar.
Hur är det med glesa vektorer?
För närvarande är vektordatatypen i SQL Database Engine utformad för kompakta vektorer, som är matriser med flyttalsnummer där de flesta elementen inte är noll. Glesa vektorer, som innehåller ett betydande antal nollelement, stöds inte internt.
Vilka är några prestandamått för SQL-vektorsökning?
Prestanda kan variera mycket beroende på det specifika användningsfallet, datamängdens storlek och frågornas komplexitet. SQL Server-vektorsökningsfunktionerna är dock utformade för att vara effektiva och skalbara, med hjälp av indexeringstekniker för att optimera sökprestanda.
Vad händer om jag har fler än en kolumn som jag vill använda för att generera inbäddningar?
Om du har flera kolumner som du vill använda för att generera inbäddningar har du två huvudsakliga alternativ:
- Skapa en inbäddning för varje kolumn, eller
- Sammanfoga värdena för flera kolumner i en enda sträng och generera sedan en enda inbäddning för den sammanfogade strängen.
Mer information om de två alternativen och de relaterade övervägandena för databasdesign finns i Avsnittet om effektiv och elegant modellering av inbäddningar.
Hur är det med omrankning?
Omrankning är en teknik som används för att förbättra sökresultatens relevans genom att omvärdera de första resultaten baserat på ytterligare kriterier eller modeller. I SQL Database Engine kan du implementera omrankning genom att kombinera vektorsökning med fulltext (som ger BM25-rangordning) eller ytterligare SQL-frågor eller maskininlärningsmodeller för att förfina resultaten baserat på specifik affärslogik eller användarinställningar.
Mer information finns i Förbättra sökfunktioner med hybridsökning och RRF-omrankning.
När ska du använda AI Search (nu AI Foundry) jämfört med SQL för vektorsökningsscenarier?
AI Search (nu AI Foundry) är en specialiserad tjänst som är utformad för avancerade sökscenarier, inklusive vektorsökning, bearbetning av naturligt språk och AI-drivna insikter. Den innehåller en omfattande uppsättning funktioner för att skapa intelligenta sökprogram, till exempel inbyggt stöd för olika AI-modeller, avancerade rankningsalgoritmer och integrering med andra AI-tjänster.
SQL Database Engine ger möjlighet att lagra alla typer av data och köra alla typer av frågor: strukturerade och ostrukturerade och att utföra vektorsökning på dessa data. Det är ett bra val för scenarier där du behöver söka efter alla dessa data tillsammans och du inte vill använda en separat tjänst för sökning som skulle komplicera din arkitektur. SQL Database Engine erbjuder viktiga säkerhetsfunktioner för företag för att se till att data alltid skyddas, till exempel säkerhet på radnivå (RLS), dynamisk datamaskering (DDM), Always Encrypted, oföränderliga transaktionsregistertabeller och transparent datakryptering (TDE).
Här är ett exempel på en enskild fråga som kan köras i Azure SQL eller SQL Server som kombinerar vektor-, geospatiala, strukturerade och ostrukturerade data samtidigt. Exempelfrågan hämtar de 50 mest relevanta restaurangerna baserat på beskrivningen av restaurangen, restaurangens plats och användarens inställningar, med hjälp av vektorsökning efter beskrivningen och geospatial sökning efter platsen, filtrering även efter stjärnnummer, antal recensioner, kategori och så vidare:
DECLARE @p GEOGRAPHY = GEOGRAPHY::Point(47.6694141, - 122.1238767, 4326);
DECLARE @e 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 r
INNER JOIN dbo.reviews_embeddings re
ON r.id = re.review_id
INNER JOIN dbo.business 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;
I föregående exempel används ENN-sökningen (Exact Nearest Neighbor) för att hitta de mest relevanta recensionerna baserat på det semantiska avståndet för inbäddningarna, samtidigt som geospatialt avstånd och andra affärsattribut filtreras. Den här frågan visar kraften i att kombinera vektorsökning med traditionella SQL-funktioner för att skapa en omfattande och effektiv sökupplevelse.
Om du vill använda ann-sökning (Ungefärlig närmaste granne) kan du skapa ett vektorindex i reviews_embeddings tabellen och använda VECTOR_SEARCH funktionen för att utföra sökningen.
Var hittar jag ett labb i egen takt för att lära mig mer om inbäddningar och vektorsökning?
Granska Azure SQL Cryptozoology AI Embeddings-labbet i din egen takt.