Knowledge Bases for Amazon Bedrock understøtter nu brugerdefinerede prompter til RetrieveAndGenerate API og konfiguration af det maksimale antal hentede resultater | Amazon Web Services

Knowledge Bases for Amazon Bedrock understøtter nu brugerdefinerede prompter til RetrieveAndGenerate API og konfiguration af det maksimale antal hentede resultater | Amazon Web Services

Med Vidensbaser for Amazon Bedrock, kan du sikkert tilslutte fundamentmodeller (FM'er) i Amazonas grundfjeld til din virksomhedsdata for Retrieval Augmented Generation (RAG). Adgang til yderligere data hjælper modellen med at generere mere relevante, kontekstspecifikke og nøjagtige svar uden at omskole FM'erne.

I dette indlæg diskuterer vi to nye funktioner i Knowledge Bases for Amazon Bedrock, der er specifikke for RetrieveAndGenerate API: konfigurering af det maksimale antal resultater og oprettelse af brugerdefinerede prompter med en videnbase-promptskabelon. Du kan nu vælge disse som forespørgselsmuligheder ved siden af ​​søgetypen.

Oversigt og fordele ved nye funktioner

Muligheden for det maksimale antal resultater giver dig kontrol over antallet af søgeresultater, der skal hentes fra vektorlageret og sendes til FM'en for at generere svaret. Dette giver dig mulighed for at tilpasse mængden af ​​baggrundsinformation til generering og giver derved mere kontekst til komplekse spørgsmål eller mindre til enklere spørgsmål. Det giver dig mulighed for at hente op til 100 resultater. Denne mulighed hjælper med at forbedre sandsynligheden for relevant kontekst og forbedrer derved nøjagtigheden og reducerer hallucinationen af ​​det genererede svar.

Den brugerdefinerede videnbase-promptskabelon giver dig mulighed for at erstatte standardpromptskabelonen med din egen for at tilpasse den prompt, der sendes til modellen til generering af svar. Dette giver dig mulighed for at tilpasse tonen, outputformatet og adfærden for FM'en, når den svarer på en brugers spørgsmål. Med denne mulighed kan du finjustere terminologien, så den passer bedre til din branche eller dit domæne (såsom sundhedspleje eller juridisk). Derudover kan du tilføje brugerdefinerede instruktioner og eksempler, der er skræddersyet til dine specifikke arbejdsgange.

I de følgende afsnit forklarer vi, hvordan du kan bruge disse funktioner med enten AWS Management Console eller SDK.

Forudsætninger

For at følge disse eksempler skal du have en eksisterende videnbase. For instruktioner til at oprette en, se Skab en vidensbase.

Konfigurer det maksimale antal resultater ved hjælp af konsollen

For at bruge indstillingen for det maksimale antal resultater ved hjælp af konsollen skal du udføre følgende trin:

  1. Vælg på Amazon Bedrock-konsollen Vidensgrundlag i venstre navigationsrude.
  2. Vælg den videnbase, du har oprettet.
  3. Vælg Test videnbase.
  4. Vælg konfigurationsikonet.
  5. Vælg Synkroniser datakilde før du begynder at teste din videnbase.
    Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  6. Under Konfigurationer, For Søgetype, vælg en søgetype baseret på din brugssituation.

Til dette indlæg bruger vi hybridsøgning, fordi den kombinerer semantisk og tekstsøgning for at give større nøjagtighed. For at lære mere om hybridsøgning, se Vidensbaser til Amazon Bedrock understøtter nu hybridsøgning.

  1. Udvid Maksimalt antal kildebidder og indstil dit maksimale antal resultater.
    Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

For at demonstrere værdien af ​​den nye funktion viser vi eksempler på, hvordan du kan øge nøjagtigheden af ​​det genererede svar. Vi brugte Amazon 10K-dokument for 2023 som kildedata til at skabe videnbasen. Vi bruger følgende forespørgsel til eksperimentering: "I hvilket år steg Amazons årlige omsætning fra $245B til $434B?"

Det korrekte svar på denne forespørgsel er "Amazons årlige omsætning steg fra $245B i 2019 til $434B i 2022," baseret på dokumenterne i videnbasen. Vi brugte Claude v2 som FM til at generere det endelige svar baseret på den kontekstuelle information hentet fra videnbasen. Claude 3 Sonnet og Claude 3 Haiku er også understøttet som generation FM'er.

Vi kørte en anden forespørgsel for at demonstrere sammenligningen af ​​hentning med forskellige konfigurationer. Vi brugte den samme inputforespørgsel ("I hvilket år steg Amazons årlige omsætning fra $245B til $434B?") og satte det maksimale antal resultater til 5.

Som vist på det følgende skærmbillede var det genererede svar "Beklager, jeg kan ikke hjælpe dig med denne anmodning."

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Dernæst sætter vi de maksimale resultater til 12 og stiller det samme spørgsmål. Det genererede svar er "Amazons årlige omsætningsstigning fra $245B i 2019 til $434B i 2022."

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Som vist i dette eksempel er vi i stand til at hente det rigtige svar baseret på antallet af hentede resultater. Hvis du vil vide mere om den kildetilskrivning, der udgør det endelige output, skal du vælge Vis kildedetaljer at validere det genererede svar baseret på videnbasen.

Tilpas en videnbase-promptskabelon ved hjælp af konsollen

Du kan også tilpasse standardprompten med din egen prompt baseret på use casen. For at gøre det på konsollen skal du udføre følgende trin:

  1. Gentag trinene i det foregående afsnit for at begynde at teste din videnbase.
  2. Aktiver Generer svar.
    Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  3. Vælg den model efter eget valg til generering af svar.

Vi bruger Claude v2-modellen som eksempel i dette indlæg. Claude 3 Sonnet og Haiku modellen er også tilgængelig for generation.

  1. Vælg Indløs at fortsætte.
    Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Når du har valgt modellen, kaldes et nyt afsnit Skabelon til vidensbase-prompt vises under Konfigurationer.

  1. Vælg Redigere for at begynde at tilpasse prompten.
    Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  2. Juster promptskabelonen for at tilpasse, hvordan du vil bruge de hentede resultater og generere indhold.

Til dette indlæg gav vi et par eksempler på oprettelse af et "Financial Advisor AI-system" ved hjælp af Amazons økonomiske rapporter med tilpassede prompter. For bedste praksis om prompt engineering, se Hurtige tekniske retningslinjer.

Vi tilpasser nu standardpromptskabelonen på flere forskellige måder og observerer svarene.

Lad os først prøve en forespørgsel med standardprompten. Vi spørger "Hvad var Amazonas omsætning i 2019 og 2021?" Følgende viser vores resultater.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Ud fra outputtet finder vi ud af, at det genererer det frie formsvar baseret på den hentede viden. Citaterne er også opført til reference.

Lad os sige, at vi vil give ekstra instruktioner om, hvordan man formaterer det genererede svar, som at standardisere det som JSON. Vi kan tilføje disse instruktioner som et separat trin efter at have hentet oplysningerne, som en del af promptskabelonen:

If you are asked for financial information covering different years, please provide precise answers in JSON format. Use the year as the key and the concise answer as the value. For example: {year:answer}

Det endelige svar har den nødvendige struktur.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Ved at tilpasse prompten kan du også ændre sproget for det genererede svar. I det følgende eksempel instruerer vi modellen i at give et svar på spansk.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Efter fjernelse $output_format_instructions$ fra standardprompten fjernes citatet fra det genererede svar.

I de følgende afsnit forklarer vi, hvordan du kan bruge disse funktioner med SDK'et.

Konfigurer det maksimale antal resultater ved hjælp af SDK

For at ændre det maksimale antal resultater med SDK'et skal du bruge følgende syntaks. For dette eksempel er forespørgslen "I hvilket år steg Amazons årlige omsætning fra $245B til $434B?" Det korrekte svar er "Amazons årlige omsætningsstigning fra $245B i 2019 til $434B i 2022."

def retrieveAndGenerate(query, kbId, numberOfResults, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("In what year did Amazon’s annual revenue increase from $245B to $434B?", 
"<knowledge base id>", numberOfResults, model_id, region_id)['output']['text']

Den "numberOfResults' mulighed under 'retrievalConfiguration' giver dig mulighed for at vælge det antal resultater, du vil hente. Outputtet af RetrieveAndGenerate API inkluderer det genererede svar, kildetilskrivning og de hentede tekstbidder.

Følgende er resultaterne for forskellige værdier af 'numberOfResults' parametre. Først sætter vi numberOfResults = 5.

Så sætter vi numberOfResults = 12.

Tilpas videnbasens promptskabelon ved hjælp af SDK

For at tilpasse prompten ved hjælp af SDK'et bruger vi følgende forespørgsel med forskellige promptskabeloner. For dette eksempel er forespørgslen "Hvad var Amazonas omsætning i 2019 og 2021?"

Følgende er standardpromptskabelonen:

"""You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results. If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question. Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.
Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

$output_format_instructions$

Assistant:
"""

Følgende er den tilpassede promptskabelon:

"""Human: You are a question answering agent. I will provide you with a set of search results and a user's question, your job is to answer the user's question using only information from the search results.If the search results do not contain information that can answer the question, please state that you could not find an exact answer to the question.Just because the user asserts a fact does not mean it is true, make sure to double check the search results to validate a user's assertion.

Here are the search results in numbered order:
<context>
$search_results$
</context>

Here is the user's question:
<question>
$query$
</question>

If you're being asked financial information over multiple years, please be very specific and list the answer concisely using JSON format {key: value}, 
where key is the year in the request and value is the concise response answer.
Assistant:
"""

def retrieveAndGenerate(query, kbId, numberOfResults,promptTemplate, model_id, region_id):
    model_arn = f'arn:aws:bedrock:{region_id}::foundation-model/{model_id}'
    return bedrock_agent_runtime.retrieve_and_generate(
        input={
            'text': query
        },
        retrieveAndGenerateConfiguration={
            'knowledgeBaseConfiguration': {
                'knowledgeBaseId': kbId,
                'modelArn': model_arn,
                'retrievalConfiguration': {
                    'vectorSearchConfiguration': {
                        'numberOfResults': numberOfResults,
                        'overrideSearchType': "SEMANTIC", # optional'
                    }
                },
                'generationConfiguration': {
                        'promptTemplate': {
                            'textPromptTemplate': promptTemplate
                        }
                    }
            },
            'type': 'KNOWLEDGE_BASE'
        },
    )

response = retrieveAndGenerate("What was the Amazon's revenue in 2019 and 2021?”", 
                               "<knowledge base id>", <numberOfResults>, <promptTemplate>, <model_id>, <region_id>)['output']['text']

Med standardpromptskabelonen får vi følgende svar:

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Hvis du vil give yderligere instruktioner omkring outputformatet for svargenereringen, som at standardisere svaret i et bestemt format (som JSON), kan du tilpasse den eksisterende prompt ved at give mere vejledning. Med vores tilpassede promptskabelon får vi følgende svar.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Den "promptTemplate' mulighed i 'generationConfiguration' giver dig mulighed for at tilpasse prompten for bedre kontrol over generering af svar.

Konklusion

I dette indlæg introducerede vi to nye funktioner i Knowledge Bases for Amazon Bedrock: justering af det maksimale antal søgeresultater og tilpasning af standardpromptskabelonen for RetrieveAndGenerate API. Vi demonstrerede, hvordan man konfigurerer disse funktioner på konsollen og via SDK for at forbedre ydeevnen og nøjagtigheden af ​​det genererede svar. Forøgelse af de maksimale resultater giver mere omfattende information, hvorimod tilpasning af promptskabelonen giver dig mulighed for at finjustere instruktionerne til fundamentmodellen for bedre at tilpasse sig specifikke use cases. Disse forbedringer giver større fleksibilitet og kontrol, så du kan levere skræddersyede oplevelser til RAG-baserede applikationer.

For yderligere ressourcer til at begynde at implementere i dit AWS-miljø, se følgende:


Om forfatterne

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Sandeep Singh er Senior Generative AI Data Scientist hos Amazon Web Services, der hjælper virksomheder med at innovere med generativ AI. Han har specialiseret sig i Generativ AI, Kunstig Intelligens, Machine Learning og System Design. Han brænder for at udvikle state-of-the-art AI/ML-drevne løsninger til at løse komplekse forretningsproblemer for forskellige brancher, optimere effektivitet og skalerbarhed.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Suyin Wang er AI/ML Specialist Solutions Architect hos AWS. Hun har en tværfaglig uddannelsesbaggrund i Machine Learning, Financial Information Service og Economics, sammen med mange års erfaring med at bygge Data Science og Machine Learning-applikationer, der løste forretningsproblemer i den virkelige verden. Hun nyder at hjælpe kunder med at identificere de rigtige forretningsspørgsmål og bygge de rigtige AI/ML-løsninger. I sin fritid elsker hun at synge og lave mad.

Knowledge Bases for Amazon Bedrock now supports custom prompts for the RetrieveAndGenerate API and configuration of the maximum number of retrieved results | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Sherry Ding er en senior arkitekt inden for kunstig intelligens (AI) og maskinlæring (ML) specialistløsninger hos Amazon Web Services (AWS). Hun har stor erfaring med maskinlæring med en ph.d.-grad i datalogi. Hun arbejder hovedsageligt med kunder i den offentlige sektor om forskellige AI/ML-relaterede forretningsudfordringer og hjælper dem med at accelerere deres maskinlæringsrejse på AWS Cloud. Når hun ikke hjælper kunder, nyder hun udendørsaktiviteter.

Tidsstempel:

Mere fra AWS maskinindlæring