Delen via


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 in combinatie met modellen zoals Azure OpenAI voor generatie AI verrijkt met informatieherstel en andere analysesituaties. 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.

Voor zelfstudies en voorbeeldtoepassingen over het gebruik van enterprise-laag of Azure Managed Redis met Azure OpenAI raadpleegt u het volgende:

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 en Azure Managed Redis.

Deze tabel bevat de informatie voor de beschikbaarheid van vectorzoekopdrachten in verschillende lagen.

Rang Basic /Standard Premiumkwaliteit Onderneming Enterprise Flash Azure Managed Redis
Beschikbaar Nee. Nee. Ja Ja (voorvertoning) Ja

Wat zijn vector embeddings?

Vector embeddings zijn een fundamenteel concept in machine learning en natuurlijke taalverwerking die de weergave van gegevens, zoals woorden, documenten of afbeeldingen, mogelijk maakt 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.

Embeddings genereren

Veel machine learning-modellen ondersteunen insluitings-API's. Voor een voorbeeld van hoe vector-insluitingen te maken met Azure OpenAI Service, zie Leer hoe u insluitingen kunt genereren 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 methode door precisie in te ruilen 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 dat wordt geleverd door LLM's om een rijkere zoekervaring voor documenten te bieden, waar traditionele zoekopdrachten op basis van trefwoorden tekortschieten. Voorbeeld van het ophalen van documenten
  • Productaanbeveling. Vind vergelijkbare producten of services die u kunt aanbevelen op basis van eerdere gebruikersactiviteiten, zoals zoekgeschiedenis of eerdere aankopen. Voorbeeld van productaanbeveling
  • 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 de vectorzoekfunctie gebruiken om relevante geschiedenis of 'herinneringen' in het antwoord van het LLM op te halen. 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, Cosineen Internal Product.
  • Ondersteuning voor zowel KNN-indexeringsmethoden (met behulp van FLAT) als ANN (met behulp van HNSW).
  • Vectoropslag in hash- of JSON-gegevensstructuren
  • Belangrijkste K-query's
  • Vectorbereikquery's (dat wil zeggen, zoeken naar alle items binnen een specifieke vectorafstand)
  • Hybride zoekopdrachten met krachtige queryfuncties zoals:
    • Georuimtelijke filtering
    • Numerieke en tekstfilters
    • Voorvoegsel en fuzzy matching
    • Fonetische overeenkomsten
    • Booleaanse queries

Daarnaast is Redis vaak een voordelige keuze omdat het al zo vaak wordt gebruikt voor caching- of sessieopslagtoepassingen. In deze scenario's kan het dubbel werk verrichten door zowel een typische cacherol te vervullen als de vectorzoektoepassingen te beheren.

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:

De beste manier om aan de slag te gaan met insluitingen en vectorzoekopdrachten is om het zelf te proberen!