Digitale eiendeler er viktige visuelle representasjoner av produkter, tjenester, kultur og merkevareidentitet for bedrifter i en stadig mer digitalisert verden. Digitale eiendeler, sammen med registrert brukeratferd, kan legge til rette for kundeengasjement ved å tilby interaktive og personlig tilpassede opplevelser, slik at bedrifter kan få kontakt med målgruppen sin på et dypere nivå. Å effektivt oppdage og søke etter spesifikt innhold innenfor digitale eiendeler er avgjørende for at bedrifter skal optimere arbeidsflyter, strømlinjeforme samarbeid og levere relevant innhold til den rette målgruppen. Ifølge en studie, innen 2021, utgjør videoer allerede 81 % av all forbrukertrafikk på internett. Denne observasjonen kommer ikke som noen overraskelse fordi video og lyd er kraftige medier som tilbyr mer oppslukende opplevelser og naturlig engasjerer målgrupper på et høyere følelsesmessig nivå.
Ettersom selskaper samler opp store volumer av digitale eiendeler, blir det mer utfordrende å organisere og administrere dem effektivt for å maksimere verdien. Tradisjonelt legger bedrifter til metadata, som nøkkelord, titler og beskrivelser, til disse digitale ressursene for å lette søk og gjenfinning av relevant innhold. Men dette krever et godt utformet digitalt forvaltningssystem og ytterligere innsats for å lagre disse eiendelene i utgangspunktet. I virkeligheten mangler de fleste digitale eiendeler informative metadata som muliggjør effektivt innholdssøk. I tillegg må du ofte gjøre en analyse av ulike segmenter av hele filen og finne konseptene som dekkes der. Dette er tidkrevende og krever mye manuell innsats.
Generativ AI, spesielt innen naturlig språkbehandling og -forståelse (NLP og NLU), har revolusjonert måten vi forstår og analyserer tekst på, og har gjort oss i stand til å få dypere innsikt effektivt og i skala. Fremskritt innen store språkmodeller (LLM) har ført til rikere representasjoner av tekster, noe som gir bedre søkemuligheter for digitale eiendeler. Retrieval Augmented Generation (RAG), bygget på toppen av LLM-er og avanserte promptteknikker, er en populær tilnærming for å gi mer nøyaktige svar basert på informasjon som er skjult i bedriftens digitale aktivalager. Ved å dra nytte av innebygde modeller av LLM-er og kraftige indeksere og retrievere, kan RAG forstå og behandle muntlige eller skriftlige spørsmål og raskt finne den mest relevante informasjonen i kunnskapsbasen. Tidligere studier har vist hvordan RAG kan brukes til å tilby en spørsmål og svar-løsning som kobles til bedriftens private domenekunnskap. Men blant alle typer digitale eiendeler er video- og lydressurser de vanligste og viktigste.
Den RAG-baserte løsningen for svar på video/lydspørsmål kan potensielt løse forretningsproblemer med å finne opplærings- og referansemateriell som er i form av ikke-tekstlig innhold. Med begrensede tagger eller metadata knyttet til disse ressursene, prøver løsningen å få brukere til å samhandle med chatboten og få svar på spørsmålene deres, som kan være lenker til spesifikk videoopplæring (“Jeg trenger kobling til Amazon S3 datalagringsopplæring”) lenker til dokumenter (“Jeg trenger lenke for å lære om maskinlæring”), eller spørsmål som ble dekket i videoene (“Fortell meg hvordan jeg lager en S3-bøtte”). Svaret fra chatboten vil kunne svare direkte på spørsmålet og også inkludere lenkene til kildevideoene med det spesifikke tidsstempelet for innholdet som er mest relevant for brukerens forespørsel.
I dette innlegget viser vi hvordan du kan bruke kraften til RAG til å bygge en spørsmål og svar-løsning for video- og lydressurser på Amazon SageMaker.
Løsningsoversikt
Følgende diagram illustrerer løsningsarkitekturen.
Arbeidsflyten består hovedsakelig av følgende stadier:
- Konverter video til tekst med en tale-til-tekst-modell og tekstjustering med videoer og organisering. Vi lagrer dataene i Amazon enkel lagringstjeneste (Amazon S3).
- Aktiver intelligent videosøk ved hjelp av en RAG-tilnærming med LLM og LangChain. Brukere kan få svar generert av LLM-er og relevante kilder med tidsstempler.
- Bygg en multifunksjonell chatbot ved å bruke LLM-er med SageMaker, hvor de to nevnte løsningene pakkes inn og distribueres.
For en detaljert implementering, se GitHub repo.
Forutsetninger
Du trenger en AWS-konto med en AWS identitets- og tilgangsadministrasjon (IAM) rolle med tillatelser til å administrere ressurser opprettet som en del av løsningen. For detaljer, se opprette en AWS-konto.
Hvis dette er første gang du jobber med Amazon SageMaker Studio, må du først opprette en SageMaker-domene. I tillegg kan det hende du må be om en tjenestekvoteøkning for de tilsvarende SageMaker-behandlings- og hostingforekomstene. For å forhåndsbehandle videodataene bruker vi en ml.p3.2xlarge SageMaker-behandlingsforekomst. For hosting av Falcon-40B bruker vi en ml.g5.12xlarge SageMaker-vertsinstans.
Konverter video til tekst med en tale-til-tekst-modell og modell for innebygging av setninger
For å kunne søke gjennom digitale video- eller lydressurser og gi kontekstuell informasjon fra videoer til LLM-er, må vi konvertere alt medieinnholdet til tekst og deretter følge de generelle tilnærmingene i NLP for å behandle tekstdataene. For å gjøre løsningen vår mer fleksibel for å håndtere ulike scenarier, tilbyr vi følgende alternativer for denne oppgaven:
- Amazon Transcribe og Amazon Translate – Hvis hver video- og lydfil bare inneholder ett språk, anbefaler vi sterkt at du velger Amazon Transcribe, som er en AWS-administrert tjeneste for å transkribere lyd- og videofiler. Hvis du trenger å oversette dem til samme språk, Amazon Oversett er en annen AWS-administrert tjeneste, som støtter flerspråklig oversettelse.
- Hviske – I virkelige brukstilfeller kan videodata inkludere flere språk, for eksempel videoer for fremmedspråklæring. Hviske er en multitasking talegjenkjenningsmodell som kan utføre flerspråklig talegjenkjenning, taleoversettelse og språkidentifikasjon. Du kan bruke en Hviske modell for å oppdage og transkribere forskjellige språk på videodata, og deretter oversette alle de forskjellige språkene til ett språk. Det er viktig for de fleste RAG-løsninger å kjøre på kunnskapsbasen med samme språk. Selv om OpenAI tilbyr Whisper API, for dette innlegget, bruker vi Whisper-modellen fra Klemme ansiktet.
Vi kjører denne oppgaven med en Amazon SageMaker-prosessering jobb på eksisterende data. Du kan henvise til data_preparation.ipynb
for detaljer om hvordan du kjører denne oppgaven.
Konverter videodata til lyddata
Fordi Amazon Transcribe kan håndtere både video- og lyddata og Whisper-modellen bare kan akseptere lyddata, må vi konvertere videodata til lyddata for å få begge alternativene til å fungere. I følgende kode bruker vi VideoFileClip
fra biblioteket moviepy
for å kjøre denne jobben:
from moviepy.editor import VideoFileClip video = VideoFileClip(video_path)
video.audio.write_audiofile(audio_path)
Transkribere lyddata
Når lyddataene er klare, kan vi velge mellom våre to transkriberingsalternativer. Du kan velge det optimale alternativet basert på din egen brukssituasjon med kriteriene vi nevnte tidligere.
Alternativ 1: Amazon Transcribe og Amazon Translate
Det første alternativet er å bruke Amazon AI-tjenester, som Amazon Transcribe og Amazon Translate, for å få transkripsjoner av video- og lyddatasettene. Du kan referere til følgende GitHub eksempel når du velger dette alternativet.
Alternativ 2: Whisper
En Whisper-modell kan håndtere lyddata opptil 30 sekunders varighet. For å håndtere store lyddata tar vi i bruk transformers.pipeline
å trekke slutninger med Whisper. Når du søker etter relevante videoklipp eller genererer innhold med RAG, er tidsstempler for de aktuelle klippene viktige referanser. Derfor snur vi return_timestamps
på for å få utganger med tidsstempler. Ved å stille inn parameteren language
in generate_kwargs
, alle de forskjellige språkene i en videofil blir transkribert og oversatt til samme språk. stride_length_s
er skrittlengden til venstre og høyre for hver del. Med denne parameteren kan vi få Whisper-modellen til å se mer kontekst når vi gjør slutninger på hver del, noe som vil føre til et mer nøyaktig resultat. Se følgende kode:
from transformers import pipeline
import torch target_language = "en"
whisper_model = "whisper-large-v2" device = "cuda:0" if torch.cuda.is_available() else "cpu"
pipe = pipeline(
"automatic-speech-recognition",
model=f"openai/{whisper_model}",
device=device
) generate_kwargs = {"task":"transcribe", "language":f"<|{target_language}|>"}
prediction = pipe(
file_path,
return_timestamps=True,
chunk_length_s=30,
stride_length_s=(5),
generate_kwargs=generate_kwargs
)
Resultatet av pipe
er ordbokformatet data med elementer av text
og chunks
. text
inneholder hele det transkriberte resultatet, og chunks
består av biter med tidsstempel og tilsvarende transkribert resultat (se følgende skjermbilde). Vi bruker data i biter for å gjøre videre behandling.
Som det foregående skjermbildet viser, har mange setninger blitt kuttet av og delt opp i forskjellige biter. For å gjøre bitene mer meningsfulle, må vi kombinere setninger som er kuttet av og oppdatere tidsstempler i neste trinn.
Organisere setninger
Vi bruker en veldig enkel regel for å kombinere setninger. Når biten slutter med en punktum (.
), vi gjør ingen endring; ellers setter vi den sammen med neste del. Følgende kodebit forklarer hvordan vi gjør denne endringen:
prev_chunk = None
new_chunks = []
for chunk in chunks:
if prev_chunk:
chunk['text'] = prev_chunk['text'] + chunk['text']
chunk['timestamp'] = (prev_chunk['timestamp'][0], chunk['timestamp'][1]) if not chunk['text'].endswith('.'):
prev_chunk = chunk
else:
new_chunks.append(chunk)
prev_chunk = None
Sammenlignet med de originale bitene produsert av lyd-til-tekst-konverteringene, kan vi få komplette setninger som er kuttet av opprinnelig.
Klump setninger
Tekstinnholdet i dokumenter er normalt organisert etter avsnitt. Hvert avsnitt fokuserer på samme emne. Chunking etter avsnitt kan bidra til å bygge inn tekster i mer meningsfulle vektorer, noe som kan forbedre gjenfinningsnøyaktigheten.
I motsetning til det vanlige tekstinnholdet i dokumenter, er ikke transkripsjoner fra transkripsjonsmodellen paragraferte. Selv om det er noen stopp i lydfilene, kan det noen ganger ikke brukes til avsnittssetninger. På den andre siden, langchain
gir rekursiv chunking tekst splitter funksjon RecursiveCharacterTextSplitter
, som kan holde alt semantisk relevant innhold i samme del. Fordi vi trenger å beholde tidsstempler med biter, implementerer vi vår egen chunking-prosess. Inspirert av innlegget Hvordan dele tekst inn i avsnitt ved hjelp av python, deler vi setninger basert på likheten mellom de tilstøtende setningene med en setningsbasert tilnærming. Den grunnleggende ideen er å ta setningene med den laveste likheten med tilstøtende setninger som delpunktene. Vi bruker all-MiniLM-L6-v2
for setningsinnbygging. Du kan henvise til det opprinnelige innlegget for forklaring av denne tilnærmingen. Vi har gjort noen mindre endringer på den originale kildekoden; henvise til vår kildekoden for gjennomføringen. Kjernedelen for denne prosessen er som følger:
# Embed sentences
model_name = "all-minilm-l6-v2"
model = SentenceTransformer(model_name)
embeddings = model.encode(sentences_all)
# Create similarities matrix
similarities = cosine_similarity(embeddings) # Let's apply our function. For long sentences i reccomend to use 10 or more sentences
minmimas = activate_similarities(similarities, p_size=p_size, order=order) # Create empty string
split_points = [each for each in minmimas[0]]
text = '' para_chunks = []
para_timestamp = []
start_timestamp = 0 for num, each in enumerate(sentences_all): current_timestamp = timestamps_all[num] if text == '' and (start_timestamp == current_timestamp[1]): start_timestamp = current_timestamp[0] if num in split_points: para_chunks.append(text) para_timestamp.append([start_timestamp, current_timestamp[1]]) text = f'{each}. ' start_timestamp = current_timestamp[1] else: text+=f'{each}. ' if len(text): para_chunks.append(text) para_timestamp.append([start_timestamp, timestamps_all[-1][1]])
For å evaluere effektiviteten av chunking med setningsinnbygging, gjennomførte vi kvalitative sammenligninger mellom ulike chunking-mekanismer. Forutsetningen som ligger til grunn for slike sammenligninger er at hvis de chunked tekstene er mer semantisk forskjellige og separate, vil det være mindre irrelevant kontekstuell informasjon som blir hentet for spørsmål og svar, slik at svaret blir mer nøyaktig og presist. På samme tid, fordi mindre kontekstuell informasjon sendes til LLM-er, vil kostnadene for slutninger også være mindre ettersom prisene øker med størrelsen på tokens.
Vi visualiserte de to første komponentene i en PCA ved å redusere høy dimensjon til to dimensjoner. Sammenlignet med rekursiv chunking, kan vi se at avstandene mellom vektorer som representerer forskjellige biter med setningsinnbygging er mer spredt, noe som betyr at bitene er mer semantisk adskilte. Dette betyr at når vektoren til en spørring er nær vektoren til en del, kan den ha mindre mulighet for å være nær andre deler. En gjenfinningsoppgave vil ha færre muligheter til å velge relevant informasjon fra flere semantisk like biter.
Når delprosessen er fullført, legger vi til tidsstempler til filnavnet til hver del, lagrer den som en enkelt fil og laster den deretter opp til en S3-bøtte.
Aktiver intelligent videosøk ved hjelp av en RAG-basert tilnærming med LangChain
Det er vanligvis fire tilnærminger for å bygge en RAG-løsning for spørsmål og svar med LangChain:
- Bruke
load_qa_chain
funksjonalitet, som mater all informasjon til en LLM. Dette er ikke en ideell tilnærming gitt kontekstens vindusstørrelse og volumet av video- og lyddata. - Bruke
RetrievalQA
verktøy, som krever en tekstsplitter, tekstinnbyggingsmodell og vektorlager for å behandle tekster og hente relevant informasjon. - Ved hjelp av
VectorstoreIndexCreator
, som er en innpakning rundt all logikk i den andre tilnærmingen. Tekstsplitteren, tekstinnbyggingsmodellen og vektorlageret konfigureres sammen inne i funksjonen på en gang. - Bruke
ConversationalRetrievalChain
verktøy, som ytterligere legger til minne om chat-historikk til QA-løsningen.
For dette innlegget bruker vi den andre tilnærmingen for å eksplisitt tilpasse og velge den beste ingeniørpraksisen. I de følgende avsnittene beskriver vi hvert trinn i detalj.
For å søke etter det relevante innholdet basert på brukerinndataspørringene, bruker vi semantisk søk, som bedre kan forstå intensjonen bak og spørringen og utføre meningsfull gjenfinning. Vi bruker først en forhåndstrent innebyggingsmodell for å bygge inn all den transkriberte teksten i et vektorrom. På søketidspunktet er spørringen også innebygd i det samme vektorrommet og de nærmeste innbyggingene fra kildekorpuset blir funnet. Du kan distribuere den forhåndstrente innebyggingsmodellen som vist i Svar på spørsmål ved å bruke Retrieval Augmented Generation med grunnmodeller i Amazon SageMaker JumpStart for å lage innebyggingene for semantisk søk. I innlegget vårt tar vi i bruk lignende måter å lage en intelligent videosøkeløsning ved å bruke en RAG-basert tilnærming med åpen kildekode Langkjede bibliotek. LangChain er et åpen kildekode-rammeverk for utvikling av applikasjoner drevet av språkmodeller. LangChain gir et generisk grensesnitt for mange forskjellige LLM-er.
Vi distribuerer først en innebyggingsmodell GPT-J 6B levert av Amazon SageMaker JumpStart og språkmodellen Falcon-40B Instruer fra Hugging Face for å forberede løsningen. Når endepunktene er klare, følger vi lignende trinn beskrevet Svar på spørsmål ved å bruke Retrieval Augmented Generation med grunnmodeller i Amazon SageMaker JumpStart å lage LLM-modellen og innebyggingsmodellen for LangChain.
Følgende kodebit viser hvordan du oppretter LLM-modellen ved hjelp av langchain.llms.sagemaker_endpoint.SagemakerEndpoint
klasse og transformer nyttelasten for forespørsel og svar for LLM i ContentHandler
:
from langchain.llms.sagemaker_endpoint import LLMContentHandler, SagemakerEndpoint parameters = { "max_new_tokens": 500,
} class ContentHandler(LLMContentHandler): content_type = "application/json" accepts = "application/json" def transform_input(self, prompt: str, model_kwargs={}) -> bytes: self.len_prompt = len(prompt) input_str = json.dumps({"inputs": prompt , "parameters": {**model_kwargs}}) return input_str.encode("utf-8") def transform_output(self, output: bytes) -> str: response_json = output.read() res = json.loads(response_json) print(res) ans = res[0]['generated_text'][self.len_prompt:] return ans content_handler = ContentHandler() sm_llm = SagemakerEndpoint( endpoint_name=_MODEL_CONFIG_["huggingface-falcon-40b"]["endpoint_name"], region_name=aws_region, model_kwargs=parameters, content_handler=content_handler,
)
Når vi bruker en SageMaker JumpStart-innbyggingsmodell, må vi tilpasse LangChain SageMaker-endepunktinnbyggingsklassen og transformere modellforespørselen og -svaret for å integreres med LangChain. Last de behandlede videotranskripsjonene ved hjelp av LangChain-dokumentlasteren og lag en indeks.
Vi bruker DirectoryLoader
pakke i LangChain for å laste tekstdokumentene inn i dokumentlasteren:
loader = DirectoryLoader("./data/demo-video-sagemaker-doc/", glob="*/.txt")
documents = loader.load()
Deretter bruker vi innbyggingsmodellene til å lage innebyggingene av innholdet og lagre innebyggingene i en FAISS vektorbutikk for å lage en indeks. Vi bruker denne indeksen for å finne relevante dokumenter som er semantisk lik inndataspørringen. Med VectorstoreIndexCreator
klasse, kan du bare skrive noen få linjer med kode for å oppnå denne oppgaven:
index_creator = VectorstoreIndexCreator( vectorstore_cls=FAISS, embedding=embeddings, text_splitter=CharacterTextSplitter(chunk_size=500, chunk_overlap=0),
)
index = index_creator.from_loaders([loader])
Nå kan vi bruke indeksen til å søke etter relevant kontekst og sende den til LLM-modellen for å generere et nøyaktig svar:
index.query(question=question, llm=sm_llm)
Bygg en multifunksjonell chatbot med SageMaker
Med den utplasserte LLM på SageMaker kan vi bygge en multifunksjonell smart chatbot for å vise hvordan disse modellene kan hjelpe bedriften din med å bygge avanserte AI-drevne applikasjoner. I dette eksemplet bruker chatboten Strømbelyst å bygge brukergrensesnittet og Langkjede rammeverk for å lenke sammen ulike komponenter rundt LLM-er. Ved hjelp av tekst-til-tekst og tale-til-tekst LLM-ene som er distribuert på SageMaker, aksepterer denne smarte chatboten innganger fra tekstfiler og lydfiler slik at brukere kan chatte med inndatafilene (godtar tekst- og lydfiler) og bygge videre applikasjoner på toppen av dette. Følgende diagram viser arkitekturen til chatboten.
Når en bruker laster opp en tekstfil til chatboten, legger chatboten innholdet inn i LangChain-minnekomponenten og brukeren kan chatte med det opplastede dokumentet. Denne delen er inspirert av følgende GitHub eksempel som bygger en dokumentchatbot med SageMaker. Vi legger også til et alternativ for å la brukere laste opp lydfiler. Deretter påkaller chatboten automatisk tale-til-tekst-modellen som ligger på SageMaker-endepunktet for å trekke ut tekstinnholdet fra den opplastede lydfilen og legge til tekstinnholdet i LangChain-minnet. Til slutt lar vi brukeren velge alternativet for å bruke kunnskapsbasen når han svarer på spørsmål. Dette er RAG-evnen vist i det foregående diagrammet. Vi har definert SageMaker-endepunktene som er distribuert i notatbøkene gitt i de forrige avsnittene. Merk at du må sende de faktiske endepunktnavnene som vises i kontoen din når du kjører Streamlit-appen. Du finner endepunktnavnene på SageMaker-konsollen under slutning og endepunkter.
Falcon_endpoint_name = os.getenv("falcon_ep_name", default="falcon-40b-instruct-12xl")
whisper_endpoint_name = os.getenv('wp_ep_name', default="whisper-large-v2")
embedding_endpoint_name = os.getenv('embed_ep_name', default="huggingface-textembedding-gpt-j-6b")
Når alternativet for kunnskapsbase ikke er valgt, bruker vi samtalekjede, hvor vi legger til minnekomponenten ved hjelp av ConversationBufferMemory levert av LangChain, slik at boten kan huske gjeldende samtalehistorikk:
def load_chain(): memory = ConversationBufferMemory(return_messages=True) chain = ConversationChain(llm=llm, memory=memory) return chain chatchain = load_chain()
Vi bruker lignende logikk som vist i den tidligere delen for RAG-komponenten og legger til dokumentinnhentingsfunksjonen i koden. For demoformål laster vi den transkriberte teksten som er lagret i SageMaker Studio lokal lagring som en dokumentkilde. Du kan implementere andre RAG-løsninger ved å bruke vektordatabasene basert på ditt valg, som f.eks Amazon OpenSearch-tjeneste, Amazon RDS, Amazon Kendra, Og mer.
Når brukere bruker kunnskapsbasen for spørsmålet, henter følgende kodebit det relevante innholdet fra databasen og gir ytterligere kontekst for LLM for å svare på spørsmålet. Vi brukte den spesifikke metoden levert av FAISS, similarity_search_with_score
, når du søker etter relevante dokumenter. Dette er fordi det også kan gi metadata og likhetspoeng til den hentede kildefilen. Den returnerte distansepoengsummen er L2 distanse. Derfor er en lavere poengsum bedre. Dette gir oss flere alternativer for å gi mer kontekst for brukerne, for eksempel å gi de nøyaktige tidsstemplene til kildevideoene som er relevante for inndataspørringen. Når RAG-alternativet er valgt av brukeren fra brukergrensesnittet, bruker chatboten load_qa_chain
funksjon levert av LangChain for å gi svarene basert på inndataprompten.
docs = docsearch.similarity_search_with_score(user_input)
contexts = [] for doc, score in docs: print(f"Content: {doc.page_content}, Metadata: {doc.metadata}, Score: {score}") if score <= 0.9: contexts.append(doc) source.append(doc.metadata['source'].split('/')[-1])
print(f"n INPUT CONTEXT:{contexts}")
prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.:nn{context}nnQuestion: {question}nHelpful Answer:""" PROMPT = PromptTemplate(template=prompt_template, input_variables=["context", "question"])
chain = load_qa_chain(llm=llm, prompt=PROMPT)
result = chain({"input_documents": contexts, "question": user_input}, return_only_outputs=True)["output_text"] if len(source) != 0: df = pd.DataFrame(source, columns=['knowledge source']) st.data_editor(df)
Kjør chatbot-appen
Nå er vi klare til å kjøre Streamlit-appen. Åpne en terminal i SageMaker Studio og naviger til den klonede GitHub-depotmappen. Du må installere de nødvendige Python-pakkene som er spesifisert i requirements.txt
fil. Løpe pip install -r requirements.txt
å forberede Python-avhengighetene.
Kjør deretter følgende kommando for å oppdatere endepunktnavnene i miljøvariablene basert på endepunktene som er distribuert i kontoen din tilsvarende. Når du kjører chatbot.py
fil, oppdaterer den automatisk endepunktnavnene basert på miljøvariablene.
export falcon_ep_name=<the falcon endpoint name deployed in your account>
export wp_ep_name=<the whisper endpoint name deployed in your account>
export embed_ep_name=<the embedding endpoint name deployed in your account>
streamlit run app_chatbot/chatbot.py --server.port 6006 --server.maxUploadSize 6
For å få tilgang til Streamlit UI, kopier SageMaker Studio URL og erstatt lab?
med proxy/[PORT NUMBER]/
. For dette innlegget spesifiserte vi serverporten som 6006
, så nettadressen skal se slik ut https://<domain ID>.studio.<region>.sagemaker.aws/jupyter/default/proxy/6006/
.
Erstatt domene-ID og region med riktig verdi i kontoen din for å få tilgang til brukergrensesnittet.
Chat med lydfilen din
på Samtaleoppsett ruten, velg Bla gjennom filer for å velge lokale tekst- eller lydfiler som skal lastes opp til chatboten. Hvis du velger en lydfil, vil den automatisk påkalle tale-til-tekst SageMaker-endepunktet for å behandle lydfilen og presentere den transkriberte teksten til konsollen, som vist i følgende skjermbilde. Du kan fortsette å stille spørsmål om lydfilen, og chatboten vil kunne huske lydinnholdet og svare på spørsmålene dine basert på lydinnholdet.
Bruk kunnskapsbasen for spørsmål og svar
Når du vil svare på spørsmål som krever spesifikk domenekunnskap eller bruke kunnskapsbasen, velg Bruk kunnskapsbasen. Dette lar chatboten hente relevant informasjon fra kunnskapsbasen bygget tidligere (vektordatabasen) for å legge til ekstra kontekst for å svare på spørsmålet. For eksempel når vi stiller spørsmålet "hva er den anbefalte måten å først tilpasse en fundamentmodell?” til chatboten uten kunnskapsbasen, returnerer chatboten et svar som ligner på følgende skjermbilde.
Når vi bruker kunnskapsbasen til å svare på dette spørsmålet, returnerer chatboten et annet svar. I demovideoen leser vi SageMaker-dokumentet om hvordan tilpasse en modell i SageMaker Jumpstart.
Utdataene gir også det originale videofilnavnet med det hentede tidsstempelet til den tilsvarende teksten. Brukere kan gå tilbake til den opprinnelige videofilen og finne de spesifikke klippene i de originale videoene.
Dette eksempelet chatbot demonstrerer hvordan bedrifter kan bruke ulike typer digitale eiendeler for å forbedre kunnskapsbasen og gi multifunksjonell assistanse til sine ansatte for å forbedre produktiviteten og effektiviteten. Du kan bygge kunnskapsdatabasen fra dokumenter, lyd- og videodatasett og til og med bildedatasett for å konsolidere alle ressursene sammen. Med SageMaker som en avansert ML-plattform, akselererer du prosjektideer til produksjonshastighet med bredden og dybden til SageMaker-tjenestene som dekker hele ML-livssyklusen.
Rydd opp
For å spare kostnader, slett alle ressursene du distribuerte som en del av innlegget. Du kan følge den medfølgende notatbokens oppryddingsseksjon for å slette ressursene programmatisk, eller du kan slette eventuelle SageMaker-endepunkter du kan ha opprettet via SageMaker-konsollen.
konklusjonen
Fremkomsten av generative AI-modeller drevet av LLM-er har revolusjonert måten bedrifter tilegner seg og anvender innsikt fra informasjon. I denne sammenhengen spiller digitale eiendeler, inkludert video- og lydinnhold, en sentral rolle som visuelle representasjoner av produkter, tjenester og merkevareidentitet. Effektiv søking og oppdagelse av spesifikt innhold i disse ressursene er avgjørende for å optimalisere arbeidsflyter, forbedre samarbeidet og levere skreddersydde opplevelser til den tiltenkte målgruppen. Med kraften til generative AI-modeller på SageMaker kan bedrifter frigjøre det fulle potensialet til video- og lydressurser. Integreringen av generative AI-modeller gir bedrifter mulighet til å bygge effektive og intelligente søkeløsninger, som gjør det mulig for brukere å få tilgang til relevant og kontekstuell informasjon fra sine digitale eiendeler, og dermed maksimere verdien og fremme forretningssuksess i det digitale landskapet.
For mer informasjon om arbeid med generativ AI på AWS, se Annonserer nye verktøy for bygging med generativ AI på AWS.
Om forfatterne
Gordon Wang er en senior AI/ML-spesialist TAM ved AWS. Han støtter strategiske kunder med AI/ML beste praksis på tvers av mange bransjer. Han er lidenskapelig opptatt av datasyn, NLP, generativ AI og MLOps. På fritiden elsker han løping og fotturer.
Melanie Li er en senior AI/ML-spesialist TAM ved AWS med base i Sydney, Australia. Hun hjelper bedriftskunder med å bygge løsninger ved hjelp av toppmoderne AI/ML-verktøy på AWS og gir veiledning om arkitektur og implementering av ML-løsninger med beste praksis. På fritiden elsker hun å utforske naturen og tilbringe tid med familie og venner.
Guang Yang er Senior Applied Scientist ved Amazon Generative AI Innovation Center, hvor han jobber med kunder på tvers av ulike vertikaler og bruker kreativ problemløsning for å generere verdi for kunder med toppmoderne generative AI-løsninger.
Harjyot Malik er senior programleder ved AWS med base i Sydney, Australia. Han jobber med APJC Enterprise Support-team og hjelper dem med å bygge og levere strategier. Han samarbeider med forretningsteam, fordyper seg i komplekse problemer for å finne innovative løsninger som til gjengjeld driver effektiviteten for virksomheten. På fritiden elsker han å reise og utforske nye steder.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Bil / elbiler, Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- ChartPrime. Hev handelsspillet ditt med ChartPrime. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/intelligent-video-and-audio-qa-with-multilingual-support-using-llms-on-amazon-sagemaker/
- : har
- :er
- :ikke
- :hvor
- $OPP
- 1
- 10
- 100
- 2021
- 30
- 500
- 7
- 9
- a
- I stand
- Om oss
- akselerere
- Aksepterer
- godtar
- adgang
- Ifølge
- tilsvar
- Logg inn
- Akkumulere
- nøyaktighet
- nøyaktig
- Oppnå
- erverve
- tvers
- faktiske
- legge til
- Ytterligere
- I tillegg
- Legger
- ved siden av
- adoptere
- avansert
- fremskritt
- Fordel
- advent
- AI
- AI-modeller
- AI-tjenester
- AI-drevet
- AI / ML
- innretting
- Alle
- tillate
- tillate
- allerede
- også
- Amazon
- Amazon SageMaker
- Amazon Transcribe
- Amazon Oversett
- Amazon Web Services
- blant
- an
- analyse
- analysere
- og
- En annen
- besvare
- svar
- noen
- api
- app
- søknader
- anvendt
- Påfør
- tilnærming
- tilnærminger
- arkitektur
- ER
- rundt
- AS
- eiendel
- Kapitalforvaltning
- Eiendeler
- Assistanse
- assosiert
- forutsetningen
- At
- feste
- publikum
- publikum
- lyd
- augmented
- Australia
- automatisk
- AWS
- tilbake
- basen
- basert
- grunnleggende
- BE
- fordi
- blir
- vært
- atferd
- bak
- være
- BEST
- beste praksis
- Bedre
- mellom
- Bot
- både
- merke
- bredde
- buffer
- bygge
- Bygning
- bygger
- bygget
- virksomhet
- bedrifter
- men
- by
- CAN
- Kan få
- evner
- evne
- saken
- saker
- sentrum
- kjede
- kjeder
- utfordrende
- endring
- Endringer
- avgifter
- chatbot
- valg
- Velg
- velge
- Cisco
- klasse
- klipp
- Lukke
- kode
- samarbeid
- kombinere
- kommer
- Felles
- Selskaper
- sammenlignet
- fullføre
- komplekse
- komponent
- komponenter
- fatte
- datamaskin
- Datamaskin syn
- konsepter
- gjennomført
- konfigurert
- Koble
- Tilkobling
- består
- Konsoll
- konsolidere
- forbruker
- inneholder
- innhold
- innhold
- kontekst
- sammenhenger
- kontekstuelle
- fortsette
- Samtale
- konvertere
- Kjerne
- korrigere
- Tilsvarende
- Kostnad
- Kostnader
- kunne
- dekke
- dekket
- skape
- opprettet
- Kreativ
- kriterier
- avgjørende
- Kultur
- Gjeldende
- kunde
- Kundedeltakelse
- Kunder
- tilpasse
- Kutt
- dato
- datalagring
- Database
- databaser
- datasett
- dypere
- definert
- leverer
- levere
- demo
- demonstrere
- demonstrerer
- avhengig
- utplassere
- utplassert
- dybde
- beskrive
- beskrevet
- detalj
- detaljert
- detaljer
- oppdage
- utvikle
- enhet
- forskjellig
- digitalt
- Digital eiendel
- Digital Asset Management
- Digitale eiendeler
- digital verden
- Dimensjon
- dimensjoner
- direkte
- oppdage
- oppdage
- avstand
- do
- dokument
- dokumenter
- gjør
- domene
- Don
- ikke
- stasjonen
- hver enkelt
- Tidligere
- redaktør
- effektivt
- effektivitet
- effektivitet
- effektiv
- effektivt
- innsats
- innsats
- ellers
- embed
- innebygd
- embedding
- ansatte
- bemyndiger
- muliggjør
- muliggjør
- slutt
- Endpoint
- slutter
- engasjement
- engasjerer
- Ingeniørarbeid
- forbedre
- styrke
- Enterprise
- bedrifter
- Hele
- Miljø
- evaluere
- Selv
- eksempel
- eksisterende
- Erfaringer
- forklarer
- forklaring
- utforske
- eksportere
- trekke ut
- Face
- legge til rette
- familie
- Noen få
- færre
- filet
- Filer
- Finn
- Først
- første gang
- fleksibel
- fokuserer
- følge
- etter
- følger
- Til
- utenlandske
- skjema
- format
- fostre
- funnet
- Fundament
- fire
- Rammeverk
- venner
- fra
- fullt
- funksjon
- funksjonalitet
- videre
- Gevinst
- general
- generere
- generert
- genererer
- generasjonen
- generative
- Generativ AI
- få
- GitHub
- gitt
- gir
- Go
- veiledning
- hånd
- håndtere
- Ha
- he
- hjelpe
- hjelper
- her
- skjult
- Høy
- høyere
- svært
- hans
- historie
- vert
- Hosting
- Hvordan
- Hvordan
- Men
- HTML
- http
- HTTPS
- i
- Tanken
- ideell
- Identifikasjon
- Identitet
- if
- illustrerer
- bilde
- oppslukende
- iverksette
- gjennomføring
- implementere
- importere
- viktig
- forbedre
- in
- inkludere
- Inkludert
- Øke
- stadig
- tilvekst
- indeks
- bransjer
- informasjon
- informative
- Innovasjon
- innovative
- inngang
- innganger
- innsiden
- innsikt
- inspirert
- installere
- f.eks
- integrere
- integrering
- Intelligent
- tiltenkt
- hensikt
- samhandle
- interaktiv
- Interface
- Internet
- inn
- påkaller
- IT
- varer
- Jobb
- jpg
- JSON
- bare
- Hold
- nøkkelord
- Vet
- kunnskap
- l2
- maling
- landskap
- Språk
- språk
- stor
- føre
- LÆRE
- læring
- Led
- venstre
- Lengde
- mindre
- la
- Lar
- Nivå
- Bibliotek
- Livssyklus
- i likhet med
- Begrenset
- linjer
- LINK
- lenker
- LLM
- laste
- loader
- lokal
- logikk
- Lang
- Se
- ser ut som
- Lot
- elsker
- lavere
- lavest
- maskin
- laget
- hovedsakelig
- gjøre
- administrer
- fikk til
- ledelse
- leder
- håndbok
- mange
- materialer
- Matrix
- Maksimer
- maksimere
- Kan..
- me
- betyr
- meningsfylt
- midler
- mekanismer
- Media
- Minne
- nevnt
- metadata
- metode
- mindre
- ML
- MLOps
- modell
- modeller
- mer
- mest
- flere
- navn
- navn
- Naturlig
- Natural Language Processing
- Natur
- Naviger
- Trenger
- Ny
- neste
- nlp
- Nei.
- none
- normal
- normalt
- Antall
- of
- off
- tilby
- ofte
- on
- ONE
- bare
- åpen
- åpen kildekode
- OpenAI
- Muligheter
- optimal
- Optimalisere
- optimalisere
- Alternativ
- alternativer
- or
- organisasjon
- Organisert
- original
- opprinnelig
- OS
- Annen
- ellers
- vår
- produksjon
- egen
- pakke
- pakker
- parameter
- parametere
- del
- spesielt
- passere
- lidenskapelig
- Utfør
- perioden
- tillatelser
- Personlig
- stykker
- rør
- rørledning
- sentral
- Sted
- steder
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Spille
- poeng
- Populær
- mulighet
- Post
- potensiell
- potensielt
- makt
- powered
- kraftig
- praksis
- presis
- prediksjon
- Forbered
- presentere
- forrige
- privat
- Problem
- problemer
- prosess
- Bearbeidet
- prosessering
- produsert
- Produksjon
- produktivitet
- Produkter
- program
- prosjekt
- gi
- forutsatt
- gir
- gi
- formål
- setter
- Python
- Q & A
- kvalitativ
- spørsmål
- spørsmål
- spørsmål
- raskt
- Lese
- klar
- virkelige verden
- Reality
- riket
- anerkjennelse
- anbefaler
- anbefales
- registrert
- rekursiv
- redusere
- referanser
- relevant
- husker
- erstatte
- Repository
- representerer
- anmode
- krever
- påkrevd
- Krav
- Krever
- Ressurser
- Svare
- svar
- resultere
- retur
- avkastning
- revolusjon
- ikke sant
- Rolle
- Regel
- Kjør
- rennende
- s
- sagemaker
- samme
- Spar
- sier
- Skala
- spredt
- scenarier
- Forsker
- Resultat
- Søk
- søker
- Sekund
- sekunder
- Seksjon
- seksjoner
- se
- segmenter
- valgt
- SELV
- senior
- sendt
- dømme
- separat
- tjeneste
- Tjenester
- servering
- innstilling
- oppsett
- hun
- bør
- Vis
- vist
- Viser
- lignende
- likheter
- Enkelt
- enkelt
- Størrelse
- Smart
- tekstutdrag
- So
- løsning
- Solutions
- LØSE
- løse
- noen
- kilde
- kildekoden
- Kilder
- Rom
- spesialist
- spesifikk
- spesifisert
- tale
- Talegjenkjenning
- tale-til-tekst
- fart
- bruke
- splittet
- talt
- stadier
- state-of-the-art
- Trinn
- Steps
- Stopper
- lagring
- oppbevare
- Lagre dataene
- lagret
- Strategisk
- strategier
- effektivisere
- skrittlengde
- String
- studier
- studio
- Studer
- suksess
- slik
- støtte
- Støtter
- overraskelse
- sydney
- system
- skreddersydd
- Ta
- ta
- Target
- Oppgave
- lag
- teknikker
- terminal
- Det
- De
- Kilden
- deres
- Dem
- deretter
- Der.
- derved
- derfor
- Disse
- denne
- selv om?
- Gjennom
- tid
- tidsstempel
- titler
- til
- sammen
- tokens
- verktøy
- verktøy
- topp
- Tema
- lommelykt
- tradisjonelt
- Kurs
- Transform
- transformers
- oversette
- Oversettelse
- reiser
- prøve
- SVING
- to
- typer
- typisk
- ui
- etter
- underliggende
- forstå
- forståelse
- låse opp
- Oppdater
- oppdateringer
- lastet opp
- URL
- us
- bruke
- bruk sak
- brukt
- Bruker
- Brukere
- bruker
- ved hjelp av
- verdi
- ulike
- vertikaler
- veldig
- av
- video
- videoer
- syn
- vital
- volum
- volumer
- ønsker
- Vei..
- måter
- we
- web
- webtjenester
- var
- når
- hvilken
- Hviske
- hele
- vil
- vindu
- med
- innenfor
- uten
- Arbeid
- arbeidsflyt
- arbeidsflyt
- arbeid
- virker
- verden
- Innpakket
- skrive
- skrevet
- Du
- Din
- zephyrnet