Vectordatabase

VAN TOEPASSING OP: Nosql MongoDB vCore Postgresql

Vectordatabases worden gebruikt in talloze domeinen en situaties in analytische en generatieve AI, waaronder verwerking van natuurlijke taal, video- en afbeeldingsherkenning, aanbevelingssysteem en zoekopdrachten.

In 2023 was een opvallende trend in software de integratie van AI-verbeteringen, vaak bereikt door gespecialiseerde zelfstandige vectordatabases in bestaande tech stacks op te nemen. In dit artikel wordt uitgelegd wat vectordatabases zijn en wordt een alternatieve architectuur gepresenteerd die u mogelijk wilt overwegen: het gebruik van een geïntegreerde vectordatabase in de NoSQL- of relationele database die u al gebruikt, met name wanneer u met multimodale gegevens werkt. Met deze aanpak kunt u niet alleen kosten verlagen, maar ook betere gegevensconsistentie, schaalbaarheid en prestaties bereiken.

Tip

Gegevensconsistentie, schaalbaarheid en prestaties zijn essentieel voor gegevensintensieve toepassingen. Daarom heeft OpenAI ervoor gekozen om de ChatGPT-service te bouwen boven op Azure Cosmos DB. U kunt ook profiteren van de geïntegreerde vectordatabase, evenals de reactietijden van één milliseconden, automatische en directe schaalbaarheid en gegarandeerde snelheid op elke schaal. Bekijk implementatievoorbeelden en probeer het gratis.

Wat is een vectordatabase?

Een vectordatabase is een database die is ontworpen voor het opslaan en beheren van vector-insluitingen, die wiskundige representaties van gegevens in een hoogdimensionale ruimte zijn. In deze ruimte komt elke dimensie overeen met een functie van de gegevens en kunnen tienduizenden dimensies worden gebruikt om geavanceerde gegevens weer te geven. De positie van een vector in deze ruimte vertegenwoordigt de kenmerken. Woorden, woordgroepen of volledige documenten en afbeeldingen, audio en andere typen gegevens kunnen allemaal worden gevectoriseerd. Deze vector insluitingen worden gebruikt in overeenkomsten zoeken, multimodale zoekopdrachten, aanbevelingen engines, grote talenmodellen (LLM's), enzovoort.

In een vectordatabase worden insluitingen geïndexeerd en opgevraagd via vectorzoekalgoritmen op basis van hun vectorafstand of overeenkomsten. Een robuust mechanisme is nodig om de meest relevante gegevens te identificeren. Sommige bekende vectorzoekalgoritmen omvatten Hiërarchische Navigable Small World (HNSW), Omgekeerd bestand (IVF), DiskANN, enzovoort.

Geïntegreerde vectordatabase versus pure vectordatabase

Er zijn twee veelvoorkomende typen vectordatabase-implementaties: pure vectordatabase en geïntegreerde vectordatabase in een NoSQL- of relationele database.

Een pure vectordatabase is ontworpen om vector-insluitingen efficiënt op te slaan en te beheren, samen met een kleine hoeveelheid metagegevens; deze staat los van de gegevensbron waaruit de insluitingen worden afgeleid.

Een vectordatabase die is geïntegreerd in een zeer krachtige NoSQL- of relationele database biedt extra mogelijkheden. De geïntegreerde vectordatabase in een NoSQL- of relationele database kan insluitingen opslaan, indexeren en query's uitvoeren naast de bijbehorende oorspronkelijke gegevens. Deze aanpak elimineert de extra kosten voor het repliceren van gegevens in een afzonderlijke pure vectordatabase. Bovendien kunt u de vector-insluitingen en oorspronkelijke gegevens beter bij elkaar houden en multimodale gegevensbewerkingen mogelijk maken en betere gegevensconsistentie, schaal en prestaties mogelijk maken.

Use cases voor vectordatabases

Vectordatabases worden gebruikt in talloze domeinen en situaties in analytische en generatieve AI, waaronder verwerking van natuurlijke taal, video- en afbeeldingsherkenning, aanbevelingssysteem, zoeken, enzovoort. U kunt bijvoorbeeld een vectordatabase gebruiken om het volgende te doen:

  • vergelijkbare afbeeldingen, documenten en nummers identificeren op basis van hun inhoud, thema's, sentimenten en stijlen
  • vergelijkbare producten identificeren op basis van hun kenmerken, functies en gebruikersgroepen
  • inhoud, producten of services aanbevelen op basis van de voorkeuren van personen
  • inhoud, producten of services aanbevelen op basis van overeenkomsten van gebruikersgroepen
  • de best passende mogelijke opties van een grote groep keuzes identificeren om te voldoen aan complexe vereisten
  • gegevensafwijkingen of frauduleuze activiteiten identificeren die niet hetzelfde zijn als overwegende of normale patronen
  • permanent geheugen implementeren voor AI-agents

Tip

Naast deze typische gebruiksvoorbeelden voor vectordatabases is onze geïntegreerde vectordatabase ook een ideale oplossing voor LLM-caching op productieniveau dankzij de lage latentie, hoge schaalbaarheid en hoge beschikbaarheid.

Het is vooral populair om vectordatabases te gebruiken om het ophalen van augmented generation (RAG) mogelijk te maken die gebruik maakt van LLM's en aangepaste gegevens of domeinspecifieke informatie. Met deze aanpak kunt u het volgende doen:

  • Contextafhankelijk relevante en nauwkeurige antwoorden genereren op gebruikersprompts van AI-modellen
  • Limieten voor LLMs-tokens overwinnen
  • De kosten verlagen door regelmatig af te stemmen op bijgewerkte gegevens

Dit proces omvat het extraheren van relevante informatie uit een aangepaste gegevensbron en het integreren ervan in de modelaanvraag via prompt-engineering. Voordat u een aanvraag naar de LLM verzendt, wordt de invoer/query/aanvraag van de gebruiker ook omgezet in een insluiting en worden vectorzoektechnieken gebruikt om de meest vergelijkbare insluitingen in de database te vinden. Met deze techniek kunt u de meest relevante gegevensrecords in de database identificeren. Deze opgehaalde records worden vervolgens geleverd als invoer voor de LLM-aanvraag met behulp van prompt-engineering.

Insluitingen

Een insluiting is een speciale indeling van gegevensweergave die machine learning-modellen en -algoritmen eenvoudig kunnen gebruiken. Het insluiten is een informatiedichte weergave van de semantische betekenis van een stuk tekst. Elke insluiting is een vector van drijvendekommagetallen, zodat de afstand tussen twee insluitingen in de vectorruimte wordt gecorreleerd met een semantische gelijkenis tussen twee invoerwaarden in de oorspronkelijke indeling. Als twee teksten bijvoorbeeld vergelijkbaar zijn, moeten hun vectorweergaven ook vergelijkbaar zijn. Een vectordatabase-extensie waarmee u uw insluitingen kunt opslaan met uw oorspronkelijke gegevens, zorgt voor gegevensconsistentie, schaal en prestaties. [Ga terug]

Vectorzoekopdrachten is een methode waarmee u vergelijkbare items kunt vinden op basis van hun gegevenskenmerken in plaats van door exacte overeenkomsten in een eigenschapsveld. Deze techniek is handig in toepassingen zoals het zoeken naar vergelijkbare tekst, het vinden van gerelateerde afbeeldingen, het maken van aanbevelingen of zelfs het detecteren van afwijkingen. Het werkt door de vectorweergaven (lijsten met getallen) van uw gegevens te gebruiken die u hebt gemaakt met behulp van een machine learning-model met behulp van een API voor insluitingen, zoals Azure OpenAI Embeddings of Hugging Face in Azure. Vervolgens wordt de afstand tussen de gegevensvectoren en uw queryvector berekend. De gegevensvectoren die zich het dichtst bij uw queryvector bevinden, zijn de vectoren die het meest vergelijkbaar zijn met semantisch. Het gebruik van een systeemeigen vectorzoekfunctie biedt een efficiënte manier om high-dimensionale vectorgegevens rechtstreeks naast andere toepassingsgegevens op te slaan, te indexeren en te doorzoeken. Deze aanpak verwijdert de noodzaak om uw gegevens te migreren naar duurdere alternatieve vectordatabases en biedt een naadloze integratie van uw AI-gestuurde toepassingen. [Ga terug]

Prompts en prompt engineering

Een prompt verwijst naar een specifieke tekst of informatie die kan dienen als instructie voor een LLM of als contextuele gegevens waarop de LLM kan bouwen. Een prompt kan verschillende vormen aannemen, zoals een vraag, een instructie of zelfs een codefragment. Prompts kunnen fungeren als:

  • Instructies geven instructies aan de LLM
  • Primaire inhoud: geeft informatie aan de LLM voor verwerking
  • Voorbeelden: het model aan een bepaalde taak of een bepaald proces aanpassen
  • Aanwijzingen: de uitvoer van de LLM in de juiste richting sturen
  • Ondersteunende inhoud: vertegenwoordigt aanvullende informatie die de LLM kan gebruiken om uitvoer te genereren

Het proces voor het maken van goede prompts voor een scenario wordt prompt engineering genoemd. Zie voor meer informatie over prompts en best practices voor prompt engineering de technische technieken van de Azure OpenAI-serviceprompt. [Ga terug]

Tokens

Tokens zijn kleine stukken tekst die worden gegenereerd door de invoertekst op te splitsen in kleinere segmenten. Deze segmenten kunnen woorden of groepen tekens zijn, variërend van één teken tot een heel woord. Het woord hamburger zou bijvoorbeeld worden onderverdeeld in tokens zoals ham, bur en ger, terwijl een kort en gemeenschappelijk woord zoals peer als één token wordt beschouwd. LLM's zoals ChatGPT, GPT-3.5 of GPT-4 splitsen woorden in tokens voor verwerking. [Ga terug]

Ophalen-augmented generatie

Rag (Retrieval-augmentated generation) is een architectuur die de mogelijkheden van LLM's zoals ChatGPT, GPT-3.5 of GPT-4 verbetert door een systeem voor het ophalen van gegevens toe te voegen, zoals vectorzoekopdrachten die grondgegevens bieden, zoals die zijn opgeslagen in een vectordatabase. Met deze benadering kan uw LLM contextafhankelijk relevante en nauwkeurige antwoorden genereren op basis van uw aangepaste gegevens die afkomstig zijn van gevectoriseerde documenten, afbeeldingen, audio, video, enzovoort.

Een eenvoudig RAG-patroon met behulp van Azure Cosmos DB for NoSQL kan het volgende zijn:

  1. Gegevens invoegen in een Azure Cosmos DB for NoSQL-database en -verzameling
  2. Insluitingen maken op basis van een gegevenseigenschap met behulp van Azure OpenAI Embeddings
  3. De Azure Cosmos DB voor NoSQL koppelen aan Azure Cognitive Search (voor vectorindexering/zoekopdracht)
  4. Een vectorindex maken voor de eigenschappen van insluitingen
  5. Een functie maken om vector-overeenkomsten te zoeken op basis van een gebruikersprompt
  6. Vraag beantwoorden over de gegevens met behulp van een Azure OpenAI-voltooiingsmodel

Het RAG-patroon, met prompt engineering, is bedoeld om de responskwaliteit te verbeteren door meer contextuele informatie aan het model te bieden. MET RAG kan het model een bredere knowledge base toepassen door relevante externe bronnen in het generatieproces op te nemen, wat resulteert in uitgebreidere en geïnformeerde antwoorden. Zie voor meer informatie over 'grounding'-LLM's de grounding-LLM's. [Ga terug]

Hier volgen meerdere manieren om RAG op uw gegevens te implementeren met behulp van onze geïntegreerde vectordatabasefunctionaliteiten:

Geïntegreerde vectordatabasefunctionaliteiten implementeren

U kunt geïntegreerde vectordatabasefunctionaliteiten implementeren voor de volgende Azure Cosmos DB-API's:

API voor MongoDB

Gebruik de systeemeigen geïntegreerde vectordatabase in Azure Cosmos DB voor MongoDB (vCore-architectuur), die een efficiënte manier biedt om high-dimensionale vectorgegevens rechtstreeks naast andere toepassingsgegevens op te slaan, te indexeren en te doorzoeken. Deze aanpak verwijdert de noodzaak om uw gegevens te migreren naar duurdere alternatieve vectordatabases en biedt een naadloze integratie van uw AI-gestuurde toepassingen.

Codevoorbeelden

API voor PostgreSQL

Gebruik de systeemeigen geïntegreerde vectordatabase in Azure Cosmos DB for PostgreSQL, die een efficiënte manier biedt om high-dimensionale vectorgegevens rechtstreeks naast andere toepassingsgegevens op te slaan, te indexeren en te doorzoeken. Deze aanpak verwijdert de noodzaak om uw gegevens te migreren naar duurdere alternatieve vectordatabases en biedt een naadloze integratie van uw AI-gestuurde toepassingen.

Codevoorbeelden

NoSQL-API

Notitie

Voor onze NoSQL-API wordt de systeemeigen integratie van een geavanceerde vectorindexeringsalgoritmen aangekondigd tijdens build in mei 2024. Blijf op de hoogte.

De systeemeigen geïntegreerde vectordatabaseg in de NoSQL-API is in ontwikkeling. Ondertussen kunt u RAG-patronen implementeren met Azure Cosmos DB for NoSQL en Azure AI Search. Met deze aanpak kunt u krachtige integratie van uw gegevens in de NoSQL-API in uw AI-toepassingen mogelijk maken.

Codevoorbeelden

Volgende stap

Gratis proefversie van 30 dagen zonder Azure-abonnement

Gratis proefversie van 90 dagen en maximaal $ 6.000 aan doorvoertegoed met Azure AI-voordeel

Meer vectordatabaseoplossingen

Diagram van vectorindexeringsservices.