Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon-webservices

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon-webservices

Inbedding speelt een sleutelrol bij natuurlijke taalverwerking (NLP) en machine learning (ML). Tekst insluiten verwijst naar het proces waarbij tekst wordt omgezet in numerieke representaties die zich in een hoogdimensionale vectorruimte bevinden. Deze techniek wordt bereikt door het gebruik van ML-algoritmen die het begrijpen van de betekenis en context van gegevens (semantische relaties) en het leren van complexe relaties en patronen binnen de gegevens mogelijk maken (syntactische relaties). U kunt de resulterende vectorrepresentaties gebruiken voor een breed scala aan toepassingen, zoals het ophalen van informatie, tekstclassificatie, natuurlijke taalverwerking en vele andere.

Amazon Titan-tekstinsluitingen is een tekstinbeddingsmodel dat tekst in natuurlijke taal (bestaande uit afzonderlijke woorden, zinsdelen of zelfs grote documenten) omzet in numerieke representaties die kunnen worden gebruikt om gebruiksscenario's zoals zoeken, personaliseren en clusteren op basis van semantische gelijkenis te versterken.

In dit bericht bespreken we het Amazon Titan Text Embeddings-model, de functies ervan en voorbeelden van gebruiksscenario's.

Enkele sleutelconcepten zijn onder meer:

  • De numerieke weergave van tekst (vectoren) legt de semantiek en relaties tussen woorden vast
  • Rijke insluitingen kunnen worden gebruikt om de gelijkenis van tekst te vergelijken
  • Meertalige tekstinsluitingen kunnen de betekenis in verschillende talen identificeren

Hoe wordt een stukje tekst omgezet in een vector?

Er zijn meerdere technieken om een โ€‹โ€‹zin om te zetten in een vector. Een populaire methode is het gebruik van algoritmen voor het insluiten van woorden, zoals Word2Vec, GloVe of FastText, en het vervolgens aggregeren van de woordinsluitingen om een โ€‹โ€‹vectorrepresentatie op zinsniveau te vormen.

Een andere veel voorkomende aanpak is het gebruik van grote taalmodellen (LLM's), zoals BERT of GPT, die gecontextualiseerde inbedding voor hele zinnen kunnen bieden. Deze modellen zijn gebaseerd op deep learning-architecturen zoals Transformers, die de contextuele informatie en relaties tussen woorden in een zin effectiever kunnen vastleggen.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Waarom hebben we een inbeddingsmodel nodig?

Vector-inbedding is van fundamenteel belang voor LLM's om de semantische niveaus van taal te begrijpen, en stelt LLM's ook in staat goed te presteren op downstream NLP-taken zoals sentimentanalyse, herkenning van benoemde entiteiten en tekstclassificatie.

Naast semantisch zoeken kunt u insluitingen gebruiken om uw aanwijzingen uit te breiden voor nauwkeurigere resultaten via Retrieval Augmented Generation (RAG), maar om ze te kunnen gebruiken, moet u ze opslaan in een database met vectormogelijkheden.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het Amazon Titan Text Embeddings-model is geoptimaliseerd voor het ophalen van tekst om RAG-gebruiksscenario's mogelijk te maken. Hiermee kunt u uw tekstgegevens eerst omzetten in numerieke representaties of vectoren, en deze vectoren vervolgens gebruiken om nauwkeurig te zoeken naar relevante passages uit een vectordatabase, zodat u uw eigen gegevens optimaal kunt benutten in combinatie met andere basismodellen.

Omdat Amazon Titan Text Embeddings een beheerd model is Amazonebodem, wordt het aangeboden als een volledig serverloze ervaring. Je kunt het gebruiken via de Amazon Bedrock REST API of de AWS SDK. De vereiste parameters zijn de tekst waarvan u de insluitingen wilt genereren en de modelID parameter, die de naam vertegenwoordigt van het Amazon Titan Text Embeddings-model. De volgende code is een voorbeeld van het gebruik van de AWS SDK voor Python (Boto3):

import boto3
import json #Create the connection to Bedrock
bedrock = boto3.client( service_name='bedrock', region_name='us-west-2', ) bedrock_runtime = boto3.client( service_name='bedrock-runtime', region_name='us-west-2', ) # Let's see all available Amazon Models
available_models = bedrock.list_foundation_models() for model in available_models['modelSummaries']: if 'amazon' in model['modelId']: print(model) # Define prompt and model parameters
prompt_data = """Write me a poem about apples""" body = json.dumps({ "inputText": prompt_data,
}) model_id = 'amazon.titan-embed-text-v1' #look for embeddings in the modelID
accept = 'application/json' content_type = 'application/json' # Invoke model response = bedrock_runtime.invoke_model( body=body, modelId=model_id, accept=accept, contentType=content_type
) # Print response
response_body = json.loads(response['body'].read())
embedding = response_body.get('embedding') #Print the Embedding print(embedding)

De uitvoer ziet er ongeveer als volgt uit:

[-0.057861328, -0.15039062, -0.4296875, 0.31054688, ..., -0.15625]

Verwijzen naar Amazon Bedrock boto3-installatie voor meer details over hoe u de vereiste pakketten installeert, maakt u verbinding met Amazon Bedrock en roept u modellen op.

Kenmerken van Amazon Titan-tekstinsluitingen

Met Amazon Titan Text Embeddings kunt u maximaal 8,000 tokens invoeren, waardoor het zeer geschikt is om met afzonderlijke woorden, zinsdelen of hele documenten te werken op basis van uw gebruiksscenario. Amazone Titan retourneert uitvoervectoren met afmeting 1536, waardoor het een hoge mate van nauwkeurigheid krijgt, terwijl het ook optimaliseert voor kosteneffectieve resultaten met lage latentie.

Amazon Titan Text Embeddings ondersteunt het maken en opvragen van insluitingen voor tekst in meer dan 25 verschillende talen. Dit betekent dat u het model kunt toepassen op uw gebruiksscenario's zonder dat u afzonderlijke modellen hoeft te maken en te onderhouden voor elke taal die u wilt ondersteunen.

Het hebben van รฉรฉn enkel inbeddingsmodel dat in veel talen is getraind, biedt de volgende belangrijke voordelen:

  • Breder bereik โ€“ Door kant-en-klare ondersteuning voor meer dan 25 talen, kunt u het bereik van uw applicaties uitbreiden naar gebruikers en inhoud op veel internationale markten.
  • Consistente prestaties โ€“ Met een uniform model dat meerdere talen bestrijkt, krijgt u consistente resultaten voor alle talen, in plaats van afzonderlijk per taal te optimaliseren. Het model is holistisch getraind, zodat u voordeel krijgt in alle talen.
  • Ondersteuning voor meertalige zoekopdrachten โ€“ Met Amazon Titan Text Embeddings kunnen tekstinsluitingen in elk van de ondersteunde talen worden opgevraagd. Dit biedt flexibiliteit om semantisch vergelijkbare inhoud in verschillende talen op te halen zonder beperkt te zijn tot รฉรฉn enkele taal. U kunt toepassingen bouwen die meertalige gegevens opvragen en analyseren met behulp van dezelfde uniforme inbeddingsruimte.

Op het moment van schrijven worden de volgende talen ondersteund:

  • Arabisch
  • Versimpeld Chinees)
  • Chinese traditionele)
  • Tsjechisch
  • Nederlands
  • Engels
  • Frans
  • Duits
  • Hebreeuws
  • Hindi
  • Italiaans
  • Japanse
  • Kannada
  • Korean
  • Malayalam
  • marathi
  • Pools
  • Portugees
  • Russian
  • Spaans
  • Zweeds
  • Filipijns Tagalog
  • tamil
  • Telugu
  • Turks

Amazon Titan-tekstinsluitingen gebruiken met LangChain

LangChain is een populair open source-framework om mee te werken generatieve AI modellen en ondersteunende technologieรซn. Het omvat een BedrockEmbeddings-client die de Boto3 SDK handig omhult met een abstractielaag. De BedrockEmbeddings Met de client kunt u rechtstreeks met tekst en insluitingen werken, zonder de details van de JSON-verzoek- of antwoordstructuren te kennen. Het volgende is een eenvoudig voorbeeld:

from langchain.embeddings import BedrockEmbeddings #create an Amazon Titan Text Embeddings client
embeddings_client = BedrockEmbeddings() #Define the text from which to create embeddings
text = "Can you please tell me how to get to the bakery?" #Invoke the model
embedding = embeddings_client.embed_query(text) #Print response
print(embedding)

Je kunt ook LangChain's gebruiken BedrockEmbeddings client naast de Amazon Bedrock LLM-client om de implementatie van RAG, semantisch zoeken en andere insluitingsgerelateerde patronen te vereenvoudigen.

Gebruik cases voor inbedding

Hoewel RAG momenteel het meest populaire gebruiksscenario is voor het werken met insluitingen, zijn er veel andere gebruiksscenario's waarin insluitingen kunnen worden toegepast. Hieronder volgen enkele aanvullende scenario's waarin u inbedding kunt gebruiken om specifieke problemen op te lossen, hetzij alleen, hetzij in samenwerking met een LLM:

  • Vraag en antwoord โ€“ Inbedding kan helpen bij het ondersteunen van vraag- en antwoordinterfaces via het RAG-patroon. Door het genereren van inbedding in combinatie met een vectordatabase kunt u nauwe overeenkomsten vinden tussen vragen en inhoud in een kennisopslagplaats.
  • Persoonlijke aanbevelingen โ€“ Net als bij vraag en antwoord kunt u insluitingen gebruiken om vakantiebestemmingen, hogescholen, voertuigen of andere producten te vinden op basis van de criteria die door de gebruiker zijn opgegeven. Dit kan de vorm aannemen van een eenvoudige lijst met overeenkomsten, of u kunt vervolgens een LLM gebruiken om elke aanbeveling te verwerken en uit te leggen hoe deze aan de criteria van de gebruiker voldoet. U kunt deze aanpak ook gebruiken om aangepaste โ€œ10 besteโ€ artikelen voor een gebruiker te genereren op basis van hun specifieke behoeften.
  • Gegevensbeheer โ€“ Als u gegevensbronnen hebt die niet goed op elkaar aansluiten, maar wel tekstinhoud heeft die de gegevensrecord beschrijft, kunt u insluitingen gebruiken om mogelijke dubbele records te identificeren. U kunt bijvoorbeeld insluitingen gebruiken om dubbele kandidaten te identificeren die mogelijk een andere opmaak of afkorting gebruiken of zelfs vertaalde namen hebben.
  • Rationalisatie van applicatieportfolio's โ€“ Wanneer je de applicatieportfolio's van een moederbedrijf en een overname op รฉรฉn lijn wilt brengen, is het niet altijd duidelijk waar je moet beginnen met het vinden van potentiรซle overlap. De kwaliteit van configuratiebeheergegevens kan een beperkende factor zijn, en het kan moeilijk zijn om tussen teams te coรถrdineren om het applicatielandschap te begrijpen. Door semantische matching met inbedding te gebruiken, kunnen we een snelle analyse van applicatieportfolio's uitvoeren om potentiรซle kandidaat-applicaties voor rationalisatie te identificeren.
  • Inhoud groeperen โ€“ U kunt insluitingen gebruiken om het groeperen van vergelijkbare inhoud in categorieรซn die u misschien nog niet van tevoren kent, te vergemakkelijken. Stel dat u bijvoorbeeld een verzameling e-mails van klanten of online productrecensies heeft. U kunt voor elk item insluitingen maken en deze insluitingen vervolgens doorlopen k-betekent clustering om logische groeperingen van zorgen van klanten, productlof of klachten, of andere thema's te identificeren. Vervolgens kunt u gerichte samenvattingen genereren van de inhoud van die groepen met behulp van een LLM.

Semantisch zoekvoorbeeld

In onze voorbeeld op GitHub, demonstreren we een eenvoudige zoektoepassing voor insluitingen met Amazon Titan Text Embeddings, LangChain en Streamlit.

In het voorbeeld komt de zoekopdracht van een gebruiker overeen met de dichtstbijzijnde vermeldingen in een vectordatabase in het geheugen. Vervolgens tonen wij deze matches direct in de gebruikersinterface. Dit kan handig zijn als u problemen met een RAG-toepassing wilt oplossen of een inbeddingsmodel rechtstreeks wilt evalueren.

Voor de eenvoud gebruiken we de in-memory FAISS database voor het opslaan en zoeken naar inbeddingsvectoren. In een real-world scenario op schaal zult u waarschijnlijk een persistente gegevensopslag willen gebruiken zoals de vector-engine voor Amazon OpenSearch Serverless of de vector extensie voor PostgreSQL.

Probeer een paar aanwijzingen uit de webapplicatie in verschillende talen, zoals de volgende:

  • Hoe kan ik mijn verbruik monitoren?
  • Hoe kan ik modellen aanpassen?
  • Welke programmeertalen kan ik gebruiken?
  • Geef commentaar op mijn veiligheidsgegevens?
  • ็งใฎใƒ‡ใƒผใ‚ฟใฏใฉใฎใ‚ˆใ†ใซไฟ่ญทใ•ใ‚Œใฆใ„ใพใ™ใ‹๏ผŸ
  • Wat zijn de noodzakelijke modelmodellen die beschikbaar zijn voor Bedrock?
  • In Welchen Regionen is Amazon Bedrock beschikbaar?
  • Ik ben blij dat ik dit heb gedaan.

Merk op dat, ook al was het bronmateriaal in het Engels, de zoekopdrachten in andere talen werden gekoppeld aan relevante vermeldingen.

Conclusie

De tekstgeneratiemogelijkheden van basismodellen zijn erg opwindend, maar het is belangrijk om te onthouden dat het begrijpen van tekst, het vinden van relevante inhoud uit een verzameling kennis en het leggen van verbanden tussen passages cruciaal zijn om de volledige waarde van generatieve AI te bereiken. We zullen de komende jaren nieuwe en interessante gebruiksscenario's voor inbedding blijven zien verschijnen naarmate deze modellen blijven verbeteren.

Volgende stappen

Extra voorbeelden van inbedding als notebooks of demo-applicaties vindt u in de volgende workshops:


Over de auteurs

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jason Stehle is een Senior Solutions Architect bij AWS, gevestigd in de regio New England. Hij werkt samen met klanten om de AWS-mogelijkheden af โ€‹โ€‹te stemmen op hun grootste zakelijke uitdagingen. Buiten zijn werk besteedt hij zijn tijd aan het bouwen van dingen en het kijken naar stripfilms met zijn gezin.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Nitin Eusebius is een Sr. Enterprise Solutions Architect bij AWS, met ervaring in Software Engineering, Enterprise Architecture en AI/ML. Hij is zeer gepassioneerd over het verkennen van de mogelijkheden van generatieve AI. Hij werkt samen met klanten om hen te helpen goed ontworpen applicaties op het AWS-platform te bouwen, en is toegewijd aan het oplossen van technologische uitdagingen en het assisteren bij hun cloudreis.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Raj Pathak is een Principal Solutions Architect en technisch adviseur voor grote Fortune 50-bedrijven en middelgrote financiรซle dienstverleners in Canada en de Verenigde Staten. Hij is gespecialiseerd in machine learning-toepassingen zoals generatieve AI, natuurlijke taalverwerking, intelligente documentverwerking en MLOps.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Mani Khanuja is een Tech Lead โ€“ Generative AI Specialists, auteur van het boek โ€“ Applied Machine Learning and High Performance Computing on AWS, en lid van de Raad van Bestuur van Women in Manufacturing Education Foundation Board. Ze leidt machine learning (ML)-projecten in verschillende domeinen, zoals computer vision, natuurlijke taalverwerking en generatieve AI. Ze helpt klanten bij het bouwen, trainen en implementeren van grote machine learning-modellen op schaal. Ze spreekt op interne en externe conferenties zoals re:Invent, Women in Manufacturing West, YouTube-webinars en GHC 23. In haar vrije tijd maakt ze graag lange runs langs het strand.

Aan de slag met Amazon Titan-tekstinsluitingen in Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Marc Roy is een Principal Machine Learning Architect voor AWS en helpt klanten bij het ontwerpen en bouwen van AI/ML-oplossingen. Marks werk bestrijkt een breed scala aan ML-use-cases, met een primaire interesse in computervisie, deep learning en het opschalen van ML binnen de onderneming. Hij heeft bedrijven in vele sectoren geholpen, waaronder verzekeringen, financiรซle diensten, media en entertainment, gezondheidszorg, nutsbedrijven en productie. Mark heeft zes AWS-certificeringen, waaronder de ML Specialty-certificering. Voordat hij bij AWS kwam, was Mark meer dan 25 jaar architect, ontwikkelaar en technologieleider, waarvan 19 jaar in de financiรซle dienstverlening.

Tijdstempel:

Meer van AWS-machine learning