Tworzenie osadzania za pomocą rozszerzenia azure AI
Aby uruchomić wyszukiwanie semantyczne, należy porównać osadzanie zapytania z osadzeniem wyszukiwanych elementów.
azure_ai Rozszerzenie usługi Azure Database for PostgreSQL — serwer elastyczny integruje się z usługą Azure OpenAI w celu wygenerowania wektorów osadzania.
Wprowadzenie do azure_ai oraz Azure OpenAI
Elastyczne rozszerzenie usługi Azure Database for PostgreSQL dla usługi Azure AI udostępnia funkcje zdefiniowane przez użytkownika w celu integracji z rozwiązaniem Microsoft Foundry, w tym usług Azure OpenAI i Azure AI Search.
Interfejs API osadzania w usłudze Azure OpenAI generuje wektor osadzania tekstu wejściowego. Użyj tego interfejsu API, aby ustawić osadzanie dla wszystkich wyszukiwanych elementów.
azure_ai Schemat rozszerzenia azure_openai ułatwia wywoływanie interfejsu API z bazy danych SQL w celu wygenerowania osadzonych elementów, niezależnie od tego, czy należy zainicjować osadzanie elementów, czy utworzyć zapytanie osadzone na bieżąco. Te osadzania mogą następnie służyć do wykonywania wyszukiwania podobieństwa wektorowego lub innymi słowy wyszukiwania semantycznego.
azure_ai Używanie rozszerzenia z usługą Azure OpenAI
Aby wywołać interfejs API osadzania usługi Azure OpenAI z bazy danych PostgreSQL, musisz włączyć i skonfigurować azure_ai rozszerzenie, udzielić dostępu do usługi Azure OpenAI i wdrożyć model usługi Azure OpenAI. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Azure OpenAI dotyczącą elastycznego serwera Azure Database for PostgreSQL.
Gdy środowisko będzie gotowe i rozszerzenie ma wartość allow-listed, uruchom następujące polecenie SQL:
/* Enable the extension. */
CREATE EXTENSION azure_ai;
Należy również skonfigurować punkt końcowy i klucz dostępu zasobu usługi OpenAI:
SELECT azure_ai.set_setting('azure_openai.endpoint', '{your-endpoint-url}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{your-api-key}}');
Po skonfigurowaniu azure_ai i Azure OpenAI, pobieranie i przechowywanie embeddingów jest prostą kwestią wywołania funkcji w zapytaniu SQL. Zakładając, że jest tabela listings z kolumną description i kolumną listing_vector, możesz wygenerować i zapisać wektory osadzeń dla wszystkich list przy użyciu następującego zapytania. Zastąp {your-deployment-name}nazwą wdrożenia z usługi Azure OpenAI Studio dla modelu, który utworzyłeś.
UPDATE listings
SET listing_vector = azure_openai.create_embeddings('{your-deployment-name}', description, max_attempts => 5, retry_delay_ms => 500)
WHERE listing_vector IS NULL;
Kolumna listing_vector wektorowa musi mieć taką samą liczbę wymiarów, jakie generuje model językowy.
Aby wyświetlić osadzanie dokumentu, uruchom następujące zapytanie:
SELECT listing_vector FROM listings LIMIT 1;
Wynik jest wektorem liczb zmiennoprzecinkowych. Najpierw możesz uruchomić \x polecenie , aby dane wyjściowe mogły być bardziej czytelne.
Dynamiczne generowanie osadzania zapytania
Po osadzeniu dokumentów, które chcesz wyszukać, możesz uruchomić semantyczne zapytanie wyszukiwania. W tym celu należy również wygenerować osadzanie dla tekstu zapytania.
Schemat rozszerzenia azure_openaiazure_ai umożliwia generowanie embeddingów w języku SQL. Aby na przykład znaleźć trzy główne ogłoszenia, których tekst jest najbardziej zbliżony pod względem semantycznym do zapytania "Znajdź miejsca w okolicy przyjaznej pieszym", uruchom następujący kod SQL:
SELECT id, description FROM listings
ORDER BY listing_vector <=> azure_openai.create_embeddings('{your-deployment-name}', 'Find me places in a walkable neighborhood.')::vector
LIMIT 3;
Operator <=> oblicza odległość cosinusu między dwoma wektorami — metryką podobieństwa semantycznego. Im bliżej są wektory, tym bardziej są semantycznie podobne; im dalej są wektory, tym bardziej są semantycznie różne.
Operator ::vector konwertuje wygenerowane osadzanie na tablice wektorowe PostgreSQL.
Zapytanie zwraca trzy najważniejsze identyfikatory i opisy listy, sklasyfikowane z mniejszej do bardziej innej (więcej do mniej podobnych).