Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku praktycznym pokazano, jak utworzyć aplikację wyszukiwania semantycznego przy użyciu usług Azure Database for PostgreSQL i Azure OpenAI.
Wyszukiwanie semantyczne wykonuje wyszukiwanie na podstawie semantyki. Standardowe wyszukiwanie leksykalne wyszukuje na podstawie słów kluczowych podanych w zapytaniu. Na przykład zestaw danych przepisów może nie zawierać etykiet tnych jak bezglutenowe, wegańskie, bezmleczne, bezowocowe lub deser, ale te cechy mogą być wywnioskowane na podstawie składników. Chodzi o to, aby wydać takie zapytania semantyczne i uzyskać odpowiednie wyniki wyszukiwania.
W tym samouczku nauczysz się następujących rzeczy:
- Zidentyfikuj scenariusze wyszukiwania i pola danych, które będą zaangażowane w wyszukiwanie.
- Dla każdego pola danych biorącego udział w wyszukiwaniu utwórz odpowiednie pole wektorowe do przechowywania osadzonych wartości przechowywanych w polu danych.
- Generowanie osadzania dla danych w wybranych polach danych i przechowywanie osadzonych w odpowiednich polach wektorów.
- Wygeneruj osadzanie dla dowolnego wejściowego zapytania wyszukiwania.
- Wyszukaj pole danych wektorowych i wyświetl listę najbliższych sąsiadów.
- Uruchom wyniki za pomocą odpowiednich modeli istotności, klasyfikacji i personalizacji, aby utworzyć ostateczną klasyfikację. W przypadku braku takich modeli należy sklasyfikować wyniki w zakresie malejącego zamówienia dot-product.
- Monitoruj model, jakość wyników i metryki biznesowe, takie jak współczynnik klikalności i czas zatrzymania. Uwzględnij mechanizmy przesyłania opinii w celu debugowania i ulepszania stosu wyszukiwania, od jakości danych, świeżości danych i personalizacji po środowisko użytkownika.
Wymagania wstępne
- Utwórz konto openAI i zażądaj dostępu do usługi Azure OpenAI.
- Udziel dostępu do usługi Azure OpenAI w żądanej subskrypcji.
- Udzielanie uprawnień do tworzenia zasobów usługi Azure OpenAI i wdrażania modeli.
- Tworzenie i wdrażanie zasobu usługi Azure OpenAI i modelu. Wdróż model osadzania tekst-embedding-ada-002. Skopiuj nazwę wdrożenia, ponieważ jest ona potrzebna do utworzenia embeddings.
Włączanie rozszerzeń azure_ai i pgvector
Zanim będzie można włączyć azure_ai i pgvector w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL, należy dodać je do listy dopuszczeń. Upewnij się, że zostały one poprawnie dodane, uruchamiając polecenie SHOW azure.extensions;.
Następnie możesz zainstalować rozszerzenie, łącząc się z docelową bazą danych i uruchamiając polecenie CREATE EXTENSION . Należy powtórzyć polecenie oddzielnie dla każdej bazy danych, w której ma być dostępne rozszerzenie.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Konfigurowanie punktu końcowego OpenAI i klucza
W usługach azure AI w obszarze Klucze zarządzania>zasobami i punkty końcowe można znaleźć punkt końcowy i klucze dla zasobu usługi Azure AI. Skorzystaj z punktu końcowego i jednego z kluczy, aby umożliwić rozszerzeniu azure_ai wywołanie wdrożenia modelu:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Pobieranie danych
Pobierz dane z narzędzia Kaggle.
Tworzenie tabeli
Połącz się z serwerem test i utwórz bazę danych. W tej bazie danych użyj następującego polecenia, aby utworzyć tabelę, w której zaimportujesz dane:
CREATE TABLE public.recipes(
rid integer NOT NULL,
recipe_name text,
prep_time text,
cook_time text,
total_time text,
servings integer,
yield text,
ingredients text,
directions text,
rating real,
url text,
cuisine_path text,
nutrition text,
timing text,
img_src text,
PRIMARY KEY (rid)
);
Importowanie danych
Ustaw następującą zmienną środowiskową w oknie klienta, aby kodowanie było ustawione na UTF-8. Ten krok jest niezbędny, ponieważ ten konkretny zestaw danych używa kodowania Windows-1252.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Zaimportuj dane do utworzonej tabeli. Należy pamiętać, że ten zestaw danych zawiera wiersz nagłówka.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Dodawanie kolumny do przechowywania osadzania
Dodaj kolumnę osadzania do tabeli:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Generowanie osadzania
Generuj osadzanie dla danych przy użyciu azure_ai rozszerzenia . Poniższy przykład wektoryzuje kilka pól, które następnie zostają połączone.
WITH ro AS (
SELECT ro.rid
FROM
recipes ro
WHERE
ro.embedding is null
LIMIT 500
)
UPDATE
recipes r
SET
embedding = azure_openai.create_embeddings('text-embedding-ada-002', r.recipe_name||' '||r.cuisine_path||' '||r.ingredients||' '||r.nutrition||' '||r.directions)
FROM
ro
WHERE
r.rid = ro.rid;
Powtarzaj komendę, dopóki nie będzie więcej wierszy do przetworzenia.
Napiwek
Pobaw się wartością LIMIT. Z wysoką wartością instrukcja może zakończyć się niepowodzeniem w połowie drogi z powodu ograniczenia przepustowości nałożonego przez usługę Azure OpenAI. Jeśli instrukcja zakończy się niepowodzeniem, zaczekaj co najmniej minutę i ponownie uruchom polecenie.
Search
Utwórz funkcję wyszukiwania w bazie danych dla wygody:
create function
recipe_search(searchQuery text, numResults int)
returns table(
recipeId int,
recipe_name text,
nutrition text,
score real)
as $$
declare
query_embedding vector(1536);
begin
query_embedding := (azure_openai.create_embeddings('text-embedding-ada-002', searchQuery));
return query
select
r.rid,
r.recipe_name,
r.nutrition,
(r.embedding <=> query_embedding)::real as score
from
recipes r
order by score asc limit numResults; -- cosine distance
end $$
language plpgsql;
Teraz po prostu wywołaj funkcję, aby wyszukać:
select recipeid, recipe_name, score from recipe_search('vegan recipes', 10);
Zapoznaj się z wynikami:
recipeid | recipe_name | score
----------+--------------------------------------------------------------+------------
829 | Avocado Toast (Vegan) | 0.15672222
836 | Vegetarian Tortilla Soup | 0.17583494
922 | Vegan Overnight Oats with Chia Seeds and Fruit | 0.17668104
600 | Spinach and Banana Power Smoothie | 0.1773768
519 | Smokey Butternut Squash Soup | 0.18031077
604 | Vegan Banana Muffins | 0.18287598
832 | Kale, Quinoa, and Avocado Salad with Lemon Dijon Vinaigrette | 0.18368931
617 | Hearty Breakfast Muffins | 0.18737361
946 | Chia Coconut Pudding with Coconut Milk | 0.1884186
468 | Spicy Oven-Roasted Plums | 0.18994217
(10 rows)
Powiązana zawartość
- Integrowanie usługi Azure Database for PostgreSQL z usługami Azure Cognitive Services
- Integrowanie usługi Azure Database for PostgreSQL z usługami Azure Machine Learning
- Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL
- Rozszerzenie azure AI w usłudze Azure Database for PostgreSQL
- Generowanie sztucznej inteligencji za pomocą usługi Azure Database for PostgreSQL
- Tworzenie systemu rekomendacji przy użyciu usług Azure Database for PostgreSQL i Azure OpenAI
- Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL