Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Tip
Voor de nieuwste voorbeelden van vectordatabases en RAG-patroon-apps gaat u naar de Azure Cosmos DB-voorbeeldengalerie.
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 zijn Hiërarchische Navigable Small World (HNSW), Inverted File (IVF) en DiskANN.
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. Een zeer goed presterende database met schemaflexiteit en geïntegreerde vectordatabase is met name optimaal voor AI-agents.
"Toepassingsgevallen voor vectordatabases"
Vectordatabases worden gebruikt in talloze domeinen en situaties in analytische en generatieve AI, waaronder verwerking van natuurlijke taal, video- en afbeeldingsherkenning, aanbevelingssysteem en zoekopdrachten. 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.
Vectordatabases zijn vooral populair om retrieval-ondersteunde generatie (RAG) mogelijk te maken, die LLM’s en aangepaste data of domeinspecifieke informatie benut. 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.
Concepten met betrekking tot vectordatabases
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.
Vector doorzoeken
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 nemen die u met een machine learning-model hebt gemaakt met behulp van een API voor insluiten, 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, worden als semantisch gezien het meest vergelijkbaar beschouwd.
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.
Prompts en promptopbouw
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 die richtlijnen geven aan de LLM
 - Primaire inhoud die informatie geeft aan de LLM voor verwerking
 - Voorbeelden om het model aan een bepaalde taak of een bepaald proces te koppelen
 - Aanwijzingen om de uitvoer van de LLM in de juiste richting te sturen
 - Ondersteunende inhoud die aanvullende informatie vertegenwoordigt 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 Het ontwerp van systeemberichten voor meer informatie over prompts en aanbevolen procedures voor prompt-engineering.
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. [Keer terug]
Terughaal-verrijkte 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:
- Azure Cosmos DB NoSQL Vector Index inschakelen
 - Een database en container instellen met een containervectorbeleid en vectorindex
 - Gegevens invoegen in een Azure Cosmos DB for NoSQL-database en -container
 - Insluitingen maken op basis van een gegevenseigenschap met behulp van Azure OpenAI Embeddings
 - Koppel de Azure Cosmos DB voor NoSQL.
 - Een vectorindex maken voor de eigenschappen van insluitingen
 - Een functie maken om vector-overeenkomsten te zoeken op basis van een gebruikersprompt
 - 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 Grounding LLMs voor meer informatie.
Geïntegreerde vectordatabasefunctionaliteiten implementeren
U kunt geïntegreerde vectordatabasefunctionaliteiten implementeren voor de volgende Azure Cosmos DB-API's:
NoSQL-API
Azure Cosmos DB for NoSQL is de eerste serverloze NoSQL-vectordatabase ter wereld. Sla uw vectoren en gegevens samen op in Azure Cosmos DB for NoSQL met geïntegreerde vectordatabasemogelijkheden , waar u een vectorindex kunt maken op basis van DiskANN, een suite met hoogwaardige vectorindexeringsalgoritmen die zijn ontwikkeld door Microsoft Research.
Met DiskANN kunt u uiterst nauwkeurige query's met lage latentie uitvoeren op elke schaal, terwijl u gebruikmaakt van alle voordelen van Azure Cosmos DB for NoSQL, zoals 99.999% SLA (met hoge beschikbaarheid), geo-replicatie, naadloze overgang van serverloos naar ingerichte doorvoer (RU) allemaal in één gegevensarchief.
Koppelingen en voorbeelden
- Wat is de database achter ChatGPT? - Microsoft Mechanics
 - Vectorindexering in Azure Cosmos DB voor NoSQL
 - VectorDistance systeemfunctie NoSQL-query's
 - Vectorzoekopdracht in Azure Cosmos DB voor NoSQL
 - Python - Notebook-tutorial
 - C# - Volledige copilot-oplossingsversneller bouwen met AKS en Semantische Kernel
 - C# - Uw eigen Copilot-voorbeeld-app en hands-on-lab bouwen
 - Python - Movie Chatbot
 
Azure Cosmos DB 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
- Uw eigen Copilot bouwen voor Azure Cosmos DB voor MongoDB in C# met Semantische kernel
 - .NET-zelfstudie : chatbot voor recepten
 - C# RAG-patroon - OpenAI-services integreren met Cosmos
 - Python RAG-patroon - Azure-product chatbot
 - Python Notebook - Vector-databaseintegratie via LangChain-zelfstudie
 - Python Notebook - LLM caching-integratie via LangChain-handleiding
 - Python - LlamaIndex-integratie
 - Python - Semantische kernelgeheugenintegratie
 - Python Notebook - Movie Chatbot
 
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.