Generatywna analiza danych

Bazy wiedzy dla Amazon Bedrock obsługują teraz niestandardowe monity dla interfejsu API RetrieveAndGenerate i konfigurację maksymalnej liczby pobieranych wyników | Usługi internetowe Amazona

Data:

Z Bazy wiedzy na temat Amazon Bedrock, możesz bezpiecznie podłączyć modele fundamentów (FM). Amazońska skała macierzysta do danych Twojej firmy w celu odzyskiwania rozszerzonej generacji (RAG). Dostęp do dodatkowych danych pomaga modelowi generować bardziej trafne, specyficzne dla kontekstu i dokładne odpowiedzi bez konieczności ponownego uczenia FM.

W tym poście omawiamy dwie nowe funkcje baz wiedzy dla Amazon Bedrock specyficzne dla RetrieveAndGenerate API: konfigurowanie maksymalnej liczby wyników i tworzenie niestandardowych podpowiedzi za pomocą szablonu podpowiedzi z bazy wiedzy. Możesz teraz wybrać je jako opcje zapytania obok typu wyszukiwania.

Przegląd i zalety nowych funkcji

Opcja maksymalnej liczby wyników daje Ci kontrolę nad liczbą wyników wyszukiwania, które mają zostać pobrane z magazynu wektorów i przekazane do FM w celu wygenerowania odpowiedzi. Umożliwia to dostosowanie ilości informacji ogólnych udostępnianych do wygenerowania, zapewniając w ten sposób większy kontekst w przypadku złożonych pytań lub mniejszy w przypadku prostszych pytań. Pozwala pobrać do 100 wyników. Ta opcja pomaga zwiększyć prawdopodobieństwo odpowiedniego kontekstu, poprawiając w ten sposób dokładność i zmniejszając halucynacje wygenerowanej odpowiedzi.

Niestandardowy szablon podpowiedzi bazy wiedzy umożliwia zastąpienie domyślnego szablonu podpowiedzi własnym w celu dostosowania podpowiedzi wysyłanej do modelu w celu wygenerowania odpowiedzi. Umożliwia to dostosowanie tonu, formatu wyjściowego i zachowania FM, gdy odpowiada on na pytanie użytkownika. Dzięki tej opcji możesz dostosować terminologię, aby lepiej pasowała do Twojej branży lub domeny (takiej jak opieka zdrowotna lub prawo). Dodatkowo możesz dodać niestandardowe instrukcje i przykłady dostosowane do konkretnych przepływów pracy.

W poniższych sekcjach wyjaśniamy, w jaki sposób można korzystać z tych funkcji w połączeniu z Konsola zarządzania AWS lub SDK.

Wymagania wstępne

Aby podążać za tymi przykładami, musisz mieć istniejącą bazę wiedzy. Aby uzyskać instrukcje dotyczące tworzenia takiego pliku, zobacz Utwórz bazę wiedzy.

Skonfiguruj maksymalną liczbę wyników za pomocą konsoli

Aby użyć opcji maksymalnej liczby wyników przy użyciu konsoli, wykonaj następujące kroki:

  1. Na konsoli Amazon Bedrock wybierz Bazy wiedzy w lewym okienku nawigacji.
  2. Wybierz utworzoną bazę wiedzy.
  3. Dodaj Testowa baza wiedzy.
  4. Wybierz ikonę konfiguracji.
  5. Dodaj Synchronizuj źródło danych zanim zaczniesz testować swoją bazę wiedzy.
  6. Pod Konfiguracje, Dla Typ wyszukiwania, wybierz typ wyszukiwania w zależności od przypadku użycia.

W tym poście używamy wyszukiwania hybrydowego, ponieważ łączy ono wyszukiwanie semantyczne i tekstowe, co zapewnia większą dokładność dostawcy. Aby dowiedzieć się więcej o wyszukiwaniu hybrydowym, zob Bazy wiedzy dla Amazon Bedrock obsługują teraz wyszukiwanie hybrydowe.

  1. Rozszerzać Maksymalna liczba fragmentów źródłowych i ustaw maksymalną liczbę wyników.

Aby zademonstrować wartość nowej funkcji, pokazujemy przykłady, w jaki sposób można zwiększyć dokładność wygenerowanej odpowiedzi. Użyliśmy Dokument Amazona 10 tys. na rok 2023 jako dane źródłowe do tworzenia bazy wiedzy. Do eksperymentów używamy następującego zapytania: „W którym roku roczne przychody Amazona wzrosły z 245 miliardów dolarów do 434 miliardów dolarów?”

Prawidłowa odpowiedź na to pytanie brzmi: „Roczne przychody Amazona wzrosły z 245 miliardów dolarów w 2019 r. do 434 miliardów dolarów w 2022 r.”, na podstawie dokumentów w bazie wiedzy. Użyliśmy Claude v2 jako FM, aby wygenerować ostateczną odpowiedź w oparciu o informacje kontekstowe pobrane z bazy wiedzy. Claude 3 Sonnet i Claude 3 Haiku są również obsługiwane jako FM generacji.

Uruchomiliśmy kolejne zapytanie, aby zademonstrować porównanie pobierania przy różnych konfiguracjach. Zastosowaliśmy to samo zapytanie wejściowe („W którym roku roczne przychody Amazona wzrosły z 245 miliardów dolarów do 434 miliardów dolarów?”) i ustawiliśmy maksymalną liczbę wyników na 5.

Jak pokazano na poniższym zrzucie ekranu, wygenerowana odpowiedź brzmiała: „Przykro nam, nie mogę pomóc w tej prośbie”.

Następnie ustawiamy maksymalne wyniki na 12 i zadajemy to samo pytanie. Wygenerowana odpowiedź brzmi: „Roczny wzrost przychodów Amazona z 245 miliardów dolarów w 2019 r. do 434 miliardów dolarów w 2022 r.”

Jak pokazano w tym przykładzie, jesteśmy w stanie uzyskać poprawną odpowiedź na podstawie liczby wyszukanych wyników. Jeśli chcesz dowiedzieć się więcej na temat atrybucji źródłowej, która stanowi wynik końcowy, wybierz Pokaż szczegóły źródła aby zweryfikować wygenerowaną odpowiedź w oparciu o bazę wiedzy.

Dostosuj szablon podpowiedzi bazy wiedzy za pomocą konsoli

Możesz także dostosować domyślny monit za pomocą własnego monitu w zależności od przypadku użycia. Aby to zrobić na konsoli, wykonaj następujące kroki:

  1. Powtórz kroki z poprzedniej sekcji, aby rozpocząć testowanie bazy wiedzy.
  2. umożliwiać Generuj odpowiedzi.
  3. Wybierz wybrany model do generowania odpowiedzi.

W tym poście jako przykład używamy modelu Claude v2. Dostępny jest również model Claude 3 Sonnet i Haiku do generacji.

  1. Dodaj Aplikuj kontynuować.

Po wybraniu modelu pojawi się nowa sekcja o nazwie Szablon podpowiedzi bazy wiedzy pojawia się pod Konfiguracje.

  1. Dodaj Edytuj aby rozpocząć dostosowywanie podpowiedzi.
  2. Dostosuj szablon podpowiedzi, aby dostosować sposób wykorzystania pobranych wyników i generowania treści.

W tym poście podaliśmy kilka przykładów tworzenia „systemu AI doradcy finansowego” przy użyciu raportów finansowych Amazon z niestandardowymi podpowiedziami. Najlepsze praktyki dotyczące szybkiego projektowania można znaleźć w artykule Szybkie wytyczne inżynieryjne.

Dostosowujemy teraz domyślny szablon podpowiedzi na kilka różnych sposobów i obserwujemy reakcje.

Najpierw spróbujmy wykonać zapytanie z domyślnym monitem. Pytamy: „Jakie były przychody Amazona w latach 2019 i 2021?” Poniżej przedstawiono nasze wyniki.

Z wyników wynika, że ​​generuje on swobodną odpowiedź w oparciu o pobraną wiedzę. Cytaty są również wymienione w celach informacyjnych.

Załóżmy, że chcemy podać dodatkowe instrukcje dotyczące formatowania wygenerowanej odpowiedzi, na przykład standaryzacji jej jako JSON. Możemy dodać te instrukcje jako osobny krok po pobraniu informacji, jako część szablonu podpowiedzi:

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}

Ostateczna odpowiedź ma wymaganą strukturę.

Dostosowując monit, możesz także zmienić język wygenerowanej odpowiedzi. W poniższym przykładzie instruujemy model, aby udzielił odpowiedzi w języku hiszpańskim.

Po usunięciu $output_format_instructions$ z domyślnego monitu, cytat z wygenerowanej odpowiedzi zostanie usunięty.

W poniższych sekcjach wyjaśniamy, jak korzystać z tych funkcji za pomocą pakietu SDK.

Skonfiguruj maksymalną liczbę wyników za pomocą pakietu SDK

Aby zmienić maksymalną liczbę wyników za pomocą zestawu SDK, użyj następującej składni. W tym przykładzie zapytanie brzmi: „W którym roku roczne przychody Amazona wzrosły z 245 miliardów dolarów do 434 miliardów dolarów?” Prawidłowa odpowiedź to „roczny wzrost przychodów Amazona z 245 miliardów dolarów w 2019 roku do 434 miliardów dolarów w 2022 roku”.

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']

"numberOfResults'opcja pod'retrievalConfiguration' pozwala wybrać liczbę wyników, które chcesz pobrać. Dane wyjściowe RetrieveAndGenerate Interfejs API obejmuje wygenerowaną odpowiedź, przypisanie źródła i pobrane fragmenty tekstu.

Poniżej przedstawiono wyniki dla różnych wartości 'numberOfResultsparametry. Najpierw ustawiamy numberOfResults = 5.

Następnie ustawiamy numberOfResults = 12.

Dostosuj szablon podpowiedzi bazy wiedzy za pomocą zestawu SDK

Aby dostosować zachętę za pomocą zestawu SDK, używamy następującego zapytania z różnymi szablonami podpowiedzi. W tym przykładzie zapytanie brzmi: „Jakie były przychody Amazona w latach 2019 i 2021?”

Poniżej znajduje się domyślny szablon podpowiedzi:

"""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:
"""

Poniżej znajduje się dostosowany szablon podpowiedzi:

"""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']

Przy domyślnym szablonie podpowiedzi otrzymujemy następującą odpowiedź:

Jeśli chcesz podać dodatkowe instrukcje dotyczące formatu wyjściowego generowania odpowiedzi, na przykład standaryzację odpowiedzi w określonym formacie (np. JSON), możesz dostosować istniejący monit, podając więcej wskazówek. Dzięki naszemu niestandardowemu szablonowi podpowiedzi otrzymujemy następującą odpowiedź.

"promptTemplate'opcja w'generationConfiguration' pozwala dostosować monit w celu uzyskania lepszej kontroli nad generowaniem odpowiedzi.

Wnioski

W tym poście wprowadziliśmy dwie nowe funkcje w Bazach wiedzy dla Amazon Bedrock: dostosowanie maksymalnej liczby wyników wyszukiwania i dostosowanie domyślnego szablonu podpowiedzi dla RetrieveAndGenerate API. Pokazaliśmy, jak skonfigurować te funkcje na konsoli i poprzez SDK, aby poprawić wydajność i dokładność wygenerowanej odpowiedzi. Zwiększanie maksymalnych wyników zapewnia bardziej wszechstronne informacje, natomiast dostosowywanie szablonu podpowiedzi pozwala na dostrojenie instrukcji dla modelu podstawowego, aby lepiej dopasować je do konkretnych przypadków użycia. Te udoskonalenia zapewniają większą elastyczność i kontrolę, umożliwiając dostarczanie dostosowanych do potrzeb aplikacji opartych na RAG.

Aby uzyskać dodatkowe zasoby, które warto wdrożyć w środowisku AWS, zapoznaj się z poniższymi informacjami:


O autorach

Sandeep Singh jest starszym analitykiem danych zajmującym się generatywną sztuczną inteligencją w Amazon Web Services, pomagając firmom wprowadzać innowacje dzięki generatywnej sztucznej inteligencji. Specjalizuje się w generatywnej sztucznej inteligencji, sztucznej inteligencji, uczeniu maszynowym i projektowaniu systemów. Pasjonuje się opracowywaniem najnowocześniejszych rozwiązań opartych na AI/ML w celu rozwiązywania złożonych problemów biznesowych dla różnych branż, optymalizując wydajność i skalowalność.

Suyin Wang jest architektem rozwiązań specjalistycznych AI/ML w AWS. Posiada interdyscyplinarne wykształcenie w zakresie uczenia maszynowego, usług informacji finansowej i ekonomii, a także wieloletnie doświadczenie w tworzeniu aplikacji do nauki danych i uczenia maszynowego, które rozwiązują rzeczywiste problemy biznesowe. Lubi pomagać klientom w identyfikowaniu właściwych pytań biznesowych i budowaniu odpowiednich rozwiązań AI/ML. W wolnym czasie uwielbia śpiewać i gotować.

Sherry Ding jest starszym architektem rozwiązań specjalistycznych w zakresie sztucznej inteligencji (AI) i uczenia maszynowego (ML) w Amazon Web Services (AWS). Posiada duże doświadczenie w uczeniu maszynowym, czego dowodem jest stopień doktora informatyki. Pracuje głównie z klientami z sektora publicznego nad różnymi wyzwaniami biznesowymi związanymi ze sztuczną inteligencją/ML, pomagając im przyspieszyć proces uczenia maszynowego w chmurze AWS. Kiedy nie pomaga klientom, lubi zajęcia na świeżym powietrzu.

spot_img

Najnowsza inteligencja

spot_img