Wat zijn Vector Embeddings en Vector Search in Azure Cache voor Redis?
Vector similarity search (VSS) is een populaire technologie geworden voor ai-aangedreven intelligente toepassingen. Azure Cache voor Redis kan worden gebruikt als een vectordatabase door deze modellen te combineren, zoals Azure OpenAI voor scenario's voor ophalen van augmented Ative AI en analysescenario's. Dit artikel is een inleiding op hoog niveau tot het concept van vectorinsluitingen, vector overeenkomsten zoeken en hoe Redis kan worden gebruikt als een vectordatabase die intelligente toepassingen mogelijk maakt.
Zie het volgende voor zelfstudies en voorbeeldtoepassingen over het gebruik van Azure Cache voor Redis en Azure OpenAI om vector-overeenkomsten te zoeken:
- Zelfstudie: Vector similarity search on Azure OpenAI embeddings using Azure Cache voor Redis with LangChain (Zelfstudie: Vector similarity Search uitvoeren op Azure OpenAI-insluitingen met behulp van Azure Cache voor Redis met LangChain)
- Voorbeeld: Redis gebruiken als vectordatabase in een Chatbot-toepassing met .NET Semantic Kernel
- Voorbeeld: Redis gebruiken als semantische cache in een Dall-E-afbeeldingengalerie met Redis OM voor .NET
Bereik van beschikbaarheid
Vectorzoekmogelijkheden in Redis vereisen Redis Stack, met name de RediSearch-module . Deze mogelijkheid is alleen beschikbaar in de Enterprise-lagen van Azure Cache voor Redis.
Deze tabel bevat de informatie voor de beschikbaarheid van vectorzoekopdrachten in verschillende lagen.
Laag | Basic /Standard | Premium | Enterprise | Enterprise Flash | Azure Managed Redis (preview) |
---|---|---|---|---|---|
Beschikbaar | Nee | No | Ja | Ja (preview) | Ja |
Wat zijn vector embeddings?
Concept
Vector embeddings zijn een fundamenteel concept in machine learning en natuurlijke taalverwerking die de weergave van gegevens mogelijk maken, zoals woorden, documenten of afbeeldingen als numerieke vectoren in een vectorruimte met een hoge dimensie. Het primaire idee achter vector-insluitingen is het vastleggen van de onderliggende relaties en semantiek van de gegevens door ze toe te passen op punten in deze vectorruimte. Dit betekent dat u uw tekst of afbeeldingen converteert naar een reeks getallen die de gegevens vertegenwoordigen en vervolgens de verschillende getallenreeksen vergelijkt. Hierdoor kunnen complexe gegevens wiskundig worden bewerkt en geanalyseerd, waardoor het eenvoudiger is om taken uit te voeren zoals vergelijking van overeenkomsten, aanbevelingen en classificatie.
Elk machine learning-model classificeert gegevens en produceert de vector op een andere manier. Bovendien is het doorgaans niet mogelijk om precies te bepalen welke semantische betekenis elke vectordimensie vertegenwoordigt. Maar omdat het model consistent is tussen elk invoerblok, hebben vergelijkbare woorden, documenten of afbeeldingen vectoren die ook vergelijkbaar zijn. De woorden basketball
en baseball
hebben bijvoorbeeld insluitingsvectoren veel dichter bij elkaar dan een woord zoals rainforest
.
Vectorvergelijking
Vectoren kunnen worden vergeleken met behulp van verschillende metrische gegevens. De populairste manier om vectoren te vergelijken is door cosinus-gelijkenis te gebruiken, die de cosinus van de hoek tussen twee vectoren in een multidimensionale ruimte meet. Hoe dichter de vectoren, hoe kleiner de hoek. Andere algemene metrische gegevens over afstand zijn Euclidische afstand en binnenste product.
Insluitingen genereren
Veel machine learning-modellen ondersteunen insluitings-API's. Zie Meer informatie over het genereren van insluitingen van vectoren met behulp van Azure OpenAI Service voor een voorbeeld van het genereren van insluitingen met Azure OpenAI.
Wat is een vectordatabase?
Een vectordatabase is een database die vectorvectoren kan opslaan, beheren, ophalen en vergelijken. Vectordatabases moeten een hoogdimensionale vector efficiënt kunnen opslaan en ophalen met minimale latentie en hoge doorvoer. Niet-relationele gegevensarchieven worden meestal gebruikt als vectordatabases, hoewel het mogelijk is om relationele databases zoals PostgreSQL te gebruiken, bijvoorbeeld met de pgvector-extensie .
Index- en zoekmethode
Vectordatabases moeten gegevens indexeren om snel te zoeken en op te halen. Daarnaast moet een vectordatabase ingebouwde zoekquery's ondersteunen voor vereenvoudigde programmeerervaringen.
Er zijn verschillende indexeringsmethoden, zoals:
- FLAT - Brute-force index
- HNSW - Efficiënt en robuust zoeken naar dichtstbijzijnde buren met behulp van hiërarchische navigable Small World-grafieken
Er zijn verschillende algemene zoekmethoden, waaronder:
- K-Nearest Neighbors (KNN) - een uitgebreide methode die de meeste precisie biedt, maar met hogere rekenkosten.
- Geschatte dichtstbijzijnde buren (ANN) - een efficiëntere door handelsprecisie voor grotere snelheid en lagere verwerkingsoverhead.
Zoekmogelijkheden
Ten slotte voeren vectordatabases vectorzoekopdrachten uit met behulp van de gekozen vectorvergelijkingsmethode om de meest vergelijkbare vectoren te retourneren. Sommige vectordatabases kunnen ook hybride zoekopdrachten uitvoeren door eerst resultaten te verfijnen op basis van kenmerken of metagegevens die ook zijn opgeslagen in de database voordat de vectorzoekopdracht wordt uitgevoerd. Dit is een manier om vectorzoekopdrachten effectiever en aanpasbaarer te maken. Een vectorzoekopdracht kan bijvoorbeeld worden beperkt tot alleen vectoren met een specifieke tag in de database of vectoren met geolocatiegegevens in een bepaalde regio.
Sleutelscenario's voor vectorzoekopdrachten
Vector overeenkomsten zoeken kan worden gebruikt in meerdere toepassingen. Enkele veelvoorkomende use-cases zijn:
- Semantische Q&A. Maak een chatbot die kan reageren op vragen over uw eigen gegevens. Een chatbot die bijvoorbeeld kan reageren op vragen van werknemers over hun gezondheidszorgdekking. Honderden pagina's met documentatie over dichte gezondheidszorgdekking kunnen worden gesplitst in segmenten, geconverteerd naar ingesloten vectoren en worden doorzocht op basis van vector-overeenkomsten. De resulterende documenten kunnen vervolgens worden samengevat voor werknemers die een ander groot taalmodel (LLM) gebruiken. Voorbeeld van Semantische Q&A
- Document ophalen. Gebruik het diepere semantische begrip van tekst die wordt geleverd door LLM's om een rijkere zoekervaring voor documenten te bieden, waarbij traditionele zoekopdrachten op basis van trefwoorden kort zijn. Voorbeeld van het ophalen van documenten
- Productaanaanveling. Vind vergelijkbare producten of services die u kunt aanbevelen op basis van eerdere gebruikersactiviteiten, zoals zoekgeschiedenis of eerdere aankopen. Voorbeeld van productaanveling
- Visual Search. Zoek naar producten die lijken op een foto die is gemaakt door een gebruiker of een foto van een ander product. Voorbeeld van Visual Search
- Semantische caching. Verminder de kosten en latentie van LLM's door LLM-voltooiingen in de cache op te cachen. LLM-query's worden vergeleken met vector-overeenkomsten. Als een nieuwe query vergelijkbaar is met een eerder in de cache opgeslagen query, wordt de query in de cache geretourneerd. Voorbeeld van Semantische caching met Behulp van LangChain
- LLM-gespreksgeheugen. Houd de gespreksgeschiedenis met een LLM vast als insluitingen in een vectordatabase. Uw toepassing kan vectorzoekopdrachten gebruiken om relevante geschiedenis of 'herinneringen' op te halen in het antwoord van de LLM. Voorbeeld van LLM-gespreksgeheugen
Waarom kiezen Azure Cache voor Redis voor het opslaan en zoeken van vectoren?
Azure Cache voor Redis kan effectief worden gebruikt als een vectordatabase voor het opslaan van insluitingsvectoren en het uitvoeren van zoekopdrachten op vectoren. Ondersteuning voor vectoropslag en -zoekopdrachten is beschikbaar in veel belangrijke machine learning-frameworks, zoals:
Deze frameworks bieden uitgebreide integraties met Redis. De integratie van Redis LangChain genereert bijvoorbeeld automatisch een indexschema voor metagegevens die worden doorgegeven bij gebruik van Redis als vectorarchief. Hierdoor is het veel eenvoudiger om resultaten te filteren op basis van metagegevens.
Redis heeft een breed scala aan zoekmogelijkheden via de RediSearch-module, die beschikbaar is in de Enterprise-laag van Azure Cache voor Redis. Deze omvatten:
- Metrische gegevens over meerdere afstanden, waaronder
Euclidean
,Cosine
enInternal Product
. - Ondersteuning voor zowel KNN -indexeringsmethoden (met behulp van )
FLAT
als ANN (met behulp vanHNSW
). - Vectoropslag in hash- of JSON-gegevensstructuren
- Belangrijkste K-query's
- Vectorbereikquery's (dat wil gezegd, alle items binnen een specifieke vectorafstand zoeken)
- Hybride zoekopdrachten met krachtige queryfuncties , zoals:
- Georuimtelijke filtering
- Numerieke en tekstfilters
- Voorvoegsel en fuzzy matching
- Fonetische overeenkomsten
- Booleaanse query's
Daarnaast is Redis vaak een voordelige keuze omdat het al zo vaak wordt gebruikt voor caching- of sessieopslagtoepassingen. In deze scenario's kan het dubbele plicht ophalen door een typische cacherol te leveren terwijl vectorzoektoepassingen tegelijkertijd worden verwerkt.
Wat zijn mijn andere opties voor het opslaan en zoeken naar vectoren?
Er zijn meerdere andere oplossingen in Azure voor vectoropslag en zoekopdrachten. Andere oplossingen zijn:
- Azure AI Search
- Azure Cosmos DB met behulp van de MongoDB vCore-API
- Azure Database for PostgreSQL - Flexibele server met behulp van
pgvector
Gerelateerde inhoud
De beste manier om aan de slag te gaan met insluitingen en vectorzoekopdrachten is om het zelf te proberen!