Vektordatabas

GÄLLER FÖR: Nosql MongoDB vCore Postgresql

Vektordatabaser används i flera domäner och situationer inom analytisk och generativ AI, inklusive bearbetning av naturligt språk, video- och bildigenkänning, rekommendationssystem och sökning, bland annat.

År 2023 var en viktig trend inom programvara integreringen av AI-förbättringar, vilket ofta uppnåddes genom att införliva specialiserade fristående vektordatabaser i befintliga tekniska staplar. Den här artikeln förklarar vilka vektordatabaser som är och presenterar en alternativ arkitektur som du kanske vill överväga: använda en integrerad vektordatabas i NoSQL eller relationsdatabasen som du redan använder, särskilt när du arbetar med multimodala data. Med den här metoden kan du inte bara minska kostnaderna utan även uppnå större datakonsekvens, skalbarhet och prestanda.

Dricks

Datakonsekvens, skalbarhet och prestanda är viktiga för dataintensiva program, vilket är anledningen till att OpenAI valde att bygga ChatGPT-tjänsten ovanpå Azure Cosmos DB. Du kan också dra nytta av den integrerade vektordatabasen, samt svarstiderna för ensiffriga millisekunder, automatisk och omedelbar skalbarhet och garanterad hastighet i valfri skala. Se implementeringsexempel och prova det kostnadsfritt.

Vad är en vektordatabas?

En vektordatabas är en databas som är utformad för att lagra och hantera inbäddningar av vektorer, som är matematiska representationer av data i ett högdimensionellt utrymme. I det här utrymmet motsvarar varje dimension en funktion i data och tiotusentals dimensioner kan användas för att representera avancerade data. En vektors position i det här utrymmet representerar dess egenskaper. Ord, fraser eller hela dokument och bilder, ljud och andra typer av data kan alla vektoriseras. Dessa vektorinbäddningar används i likhetssökning, multimodal sökning, rekommendationer motorer, stora språk modeller (LLMs), etc.

I en vektordatabas indexeras inbäddningar och efterfrågas via vektorsökningsalgoritmer baserat på deras vektoravstånd eller likhet. Det krävs en robust mekanism för att identifiera de mest relevanta data. Några välkända vektorsökningsalgoritmer är HNSW (Hierarchical Navigable Small World), Inverted File (IVF), DiskANN osv.

Integrerad vektordatabas jämfört med ren vektordatabas

Det finns två vanliga typer av vektordatabasimplementeringar – ren vektordatabas och integrerad vektordatabas i en NoSQL- eller relationsdatabas.

En ren vektordatabas är utformad för att effektivt lagra och hantera inbäddningar av vektorer, tillsammans med en liten mängd metadata. den är separat från den datakälla som inbäddningarna härleds från.

En vektordatabas som är integrerad i en högpresterande NoSQL- eller relationsdatabas ger ytterligare funktioner. Den integrerade vektordatabasen i en NoSQL- eller relationsdatabas kan lagra, indexera och fråga inbäddningar tillsammans med motsvarande ursprungliga data. Den här metoden eliminerar den extra kostnaden för att replikera data i en separat ren vektordatabas. Att hålla ihop vektorbäddningar och ursprungliga data underlättar dessutom flermodala dataåtgärder och ger bättre datakonsekvens, skalning och prestanda.

Användningsfall för vektordatabas

Vektordatabaser används i flera domäner och situationer inom analytisk och generativ AI, inklusive bearbetning av naturligt språk, video- och bildigenkänning, rekommendationssystem, sökning osv. Du kan till exempel använda en vektordatabas för att:

  • identifiera liknande bilder, dokument och låtar baserat på deras innehåll, teman, känslor och format
  • identifiera liknande produkter baserat på deras egenskaper, funktioner och användargrupper
  • rekommendera innehåll, produkter eller tjänster baserat på enskilda personers preferenser
  • rekommendera innehåll, produkter eller tjänster baserat på användargruppers likheter
  • identifiera de bästa möjliga alternativen från en stor pool med val för att uppfylla komplexa krav
  • identifiera dataavvikelser eller bedrägliga aktiviteter som skiljer sig från dominerande eller normala mönster
  • implementera beständigt minne för AI-agenter

Dricks

Förutom dessa vanliga användningsfall för vektordatabaser är vår integrerade vektordatabas också en idealisk lösning för LLM-cachelagring på produktionsnivå tack vare dess låga svarstid, hög skalbarhet och hög tillgänglighet.

Det är särskilt populärt att använda vektordatabaser för att aktivera hämtningsförhöjd generering (RAG) som utnyttjar LLM:er och anpassade data eller domänspecifik information. Med den här metoden kan du:

  • Generera kontextuellt relevanta och korrekta svar på användarfrågor från AI-modeller
  • Övervinna LLMs tokengränser
  • Minska kostnaderna från frekvent finjustering av uppdaterade data

Den här processen innebär att extrahera relevant information från en anpassad datakälla och integrera den i modellbegäran via prompt engineering. Innan du skickar en begäran till LLM omvandlas även användarens indata/fråga/begäran till en inbäddning, och tekniker för vektorsökning används för att hitta de mest liknande inbäddningarna i databasen. Den här tekniken möjliggör identifiering av de mest relevanta dataposterna i databasen. Dessa hämtade poster tillhandahålls sedan som indata till LLM-begäran med hjälp av promptteknik.

Inbäddningar

En inbäddning är ett särskilt format för datarepresentation som maskininlärningsmodeller och algoritmer enkelt kan använda. Inbäddningen är en informationstät representation av den semantiska innebörden av ett stycke text. Varje inbäddning är en vektor med flyttalsnummer, så att avståndet mellan två inbäddningar i vektorutrymmet korreleras med semantisk likhet mellan två indata i det ursprungliga formatet. Om två texter till exempel är liknande bör deras vektorrepresentationer också vara liknande. Ett vektordatabastillägg som gör att du kan lagra dina inbäddningar med dina ursprungliga data säkerställer datakonsekvens, skalning och prestanda. [Gå tillbaka]

Vektorsökning är en metod som hjälper dig att hitta liknande objekt baserat på deras dataegenskaper i stället för exakta matchningar i ett egenskapsfält. Den här tekniken är användbar i program som att söka efter liknande text, hitta relaterade bilder, göra rekommendationer eller till och med identifiera avvikelser. Det fungerar genom att ta vektorrepresentationer (listor med siffror) av dina data som du skapade med hjälp av en maskininlärningsmodell med hjälp av ett inbäddnings-API, till exempel Azure OpenAI Embeddings eller Hugging Face på Azure. Sedan mäter den avståndet mellan datavektorerna och frågevektorn. De datavektorer som är närmast din frågevektor är de som är mest lika semantiskt. Med hjälp av en intern vektorsökningsfunktion kan du lagra, indexeras och söka efter högdimensionella vektordata direkt tillsammans med andra programdata. Den här metoden tar bort behovet av att migrera dina data till dyrare alternativa vektordatabaser och ger en sömlös integrering av dina AI-drivna program. [Gå tillbaka]

Prompts och prompt engineering

En uppmaning refererar till en specifik text eller information som kan fungera som en instruktion till en LLM, eller som kontextuella data som LLM kan bygga vidare på. En fråga kan ha olika former, till exempel en fråga, en instruktion eller till och med ett kodfragment. Prompter kan fungera som:

  • Instruktioner ger direktiv till LLM
  • Primärt innehåll: ger information till LLM för bearbetning
  • Exempel: hjälp med att villkora modellen för en viss uppgift eller process
  • Tips: dirigera LLM:s utdata i rätt riktning
  • Stödinnehåll: representerar kompletterande information som LLM kan använda för att generera utdata

Processen att skapa bra frågor för ett scenario kallas prompt engineering. Mer information om frågor och metodtips för snabbteknik finns i Tekniker för azure OpenAI Service prompt engineering. [Gå tillbaka]

Token

Token är små textsegment som genereras genom att dela upp indatatexten i mindre segment. Dessa segment kan antingen vara ord eller grupper av tecken, som varierar i längd från ett enda tecken till ett helt ord. Till exempel skulle ordet hamburgare delas in i tokens som skinka, bur och ger medan ett kort och vanligt ord som päron skulle betraktas som en enda token. LLM:er som ChatGPT, GPT-3.5 eller GPT-4 delar upp ord i token för bearbetning. [Gå tillbaka]

Hämtningsförhöjd generation

RAG (Retrieval Augmentated Generation) är en arkitektur som utökar funktionerna i LLM:er som ChatGPT, GPT-3.5 eller GPT-4 genom att lägga till ett informationshämtningssystem som vektorsökning som tillhandahåller jordningsdata, till exempel de som lagras i en vektordatabas. Med den här metoden kan din LLM generera kontextuellt relevanta och korrekta svar baserat på dina anpassade data som kommer från vektoriserade dokument, bilder, ljud, video osv.

Ett enkelt RAG-mönster med Hjälp av Azure Cosmos DB för NoSQL kan vara:

  1. Infoga data i en Azure Cosmos DB för NoSQL-databas och -samling
  2. Skapa inbäddningar från en dataegenskap med Azure OpenAI-inbäddningar
  3. Länka Azure Cosmos DB för NoSQL till Azure Cognitive Search (för vektorindexering/sökning)
  4. Skapa ett vektorindex över inbäddningsegenskaperna
  5. Skapa en funktion för att utföra vektorlikhetssökning baserat på en användarprompt
  6. Besvara frågor om data med hjälp av en Azure OpenAI Completions-modell

RAG-mönstret, med snabb teknik, tjänar syftet att förbättra svarskvaliteten genom att erbjuda mer kontextuell information till modellen. RAG gör det möjligt för modellen att tillämpa ett bredare kunskapsbas genom att införliva relevanta externa källor i genereringsprocessen, vilket resulterar i mer omfattande och välgrundade svar. Mer information om "grundande" LLM:er finns i grundande LLM:er. [Gå tillbaka]

Här är flera sätt att implementera RAG på dina data med hjälp av våra integrerade vektordatabasfunktioner:

Så här implementerar du integrerade funktioner för vektordatabaser

Du kan implementera integrerade vektordatabasfunktioner för följande Azure Cosmos DB-API:er:

API för MongoDB

Använd den inbyggda integrerade vektordatabasen i Azure Cosmos DB for MongoDB (vCore-arkitektur), som erbjuder ett effektivt sätt att lagra, indexeras och söka efter högdimensionella vektordata direkt tillsammans med andra programdata. Den här metoden tar bort behovet av att migrera dina data till dyrare alternativa vektordatabaser och ger en sömlös integrering av dina AI-drivna program.

Kodexempel

API för PostgreSQL

Använd den inbyggda integrerade vektordatabasen i Azure Cosmos DB for PostgreSQL, som erbjuder ett effektivt sätt att lagra, indexeras och söka efter högdimensionella vektordata direkt tillsammans med andra programdata. Den här metoden tar bort behovet av att migrera dina data till dyrare alternativa vektordatabaser och ger en sömlös integrering av dina AI-drivna program.

Kodexempel

NoSQL API

Kommentar

För vårt NoSQL-API kommer den interna integreringen av en toppmodern vektorindexeringsalgoritm att tillkännages under build i maj 2024. Håll ögonen öppna.

Den inbyggda integrerade vektordatabasen i NoSQL-API:et är under utveckling. Under tiden kan du implementera RAG-mönster med Azure Cosmos DB för NoSQL och Azure AI Search. Den här metoden möjliggör kraftfull integrering av dina data som finns i NoSQL-API:et i dina AI-orienterade program.

Kodexempel

Gå vidare

30 dagars kostnadsfri utvärderingsversion utan Azure-prenumeration

90 dagars kostnadsfri utvärderingsversion och upp till 6 000 USD i dataflödeskrediter med Azure AI Advantage

Fler vektordatabaslösningar

Diagram över vektorindexeringstjänster.