Tworzenie osadzania za pomocą rozszerzenia azure AI

Ukończone

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.

Diagram przedstawiający tekst wejściowy

Wprowadzenie do azure_ai usługi 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 usługami azure AI, w tym Azure OpenAI i Azure Cognitive Services.

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, zobacz dokumentację usługi Azure OpenAI w usłudze Azure Database for PostgreSQL — serwer elastyczny.

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 azure_ai skonfigurowaniu interfejsu Azure OpenAI pobieranie i przechowywanie osadzania jest prostą kwestią wywoływania funkcji w zapytaniu SQL. Przy założeniu, że tabela listings z kolumną description i kolumną listing_vector , możesz wygenerować i zapisać osadzanie dla wszystkich list przy użyciu następującego zapytania. Zastąp {your-deployment-name} ciąg nazwą wdrożenia z usługi Azure OpenAI Studio dla utworzonego modelu.

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 azure_openai azure_ai rozszerzenia umożliwia generowanie osadzeń w programie SQL. Aby na przykład znaleźć trzy pierwsze listy, których tekst jest najbardziej semantycznie podobny do zapytania "Znajdź mnie miejsca w okolicy z możliwością przejścia", 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 wektorów, tym bardziej semantycznie podobne; tym bardziej semantycznie różnią się wektory.

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).