Vytvořte embeddingy pomocí rozšíření Azure AI

Dokončeno

Pokud chcete spustit sémantické vyhledávání, musíte porovnat vkládání dotazu se vkládáním prohledáných položek. Rozšíření azure_ai pro flexibilní server Azure Database for PostgreSQL se integruje s Azure OpenAI a generuje vektory vkládání.

Diagram znázorňující vstupní text

Úvod do azure_ai a Azure OpenAI

Flexibilní rozšíření Azure Database for PostgreSQL pro Azure AI poskytuje uživatelem definované funkce pro integraci s Microsoft Foundry, včetně Azure OpenAI a Azure AI Search.

Rozhraní API Azure OpenAI Embeddings generuje vektor vložení vstupního textu. Pomocí tohoto rozhraní API můžete nastavit vkládání pro všechny prohledávané položky. Schéma azure_ai rozšíření azure_openai usnadňuje volání rozhraní API z SQL ke generování vložených položek, ať už k inicializaci vkládání položek, nebo k vytvoření dotazu vloženého za běhu. Tyto vkládání se pak dají použít k provádění vyhledávání vektorové podobnosti nebo jinými slovy sémantického vyhledávání.

Použití rozšíření azure_ai s Azure OpenAI

Pokud chcete volat rozhraní API azure OpenAI Embeddings z PostgreSQL, musíte povolit a nakonfigurovat azure_ai rozšíření, udělit přístup k Azure OpenAI a nasadit model Azure OpenAI. Další informace najdete v dokumentaci k flexibilnímu serveru Azure Database for PostgreSQL v Azure OpenAI.

Jakmile je prostředí připravené a rozšíření je uvedené v seznamu povolených, spusťte tento SQL:

/* Enable the extension. */
CREATE EXTENSION azure_ai;

Musíte také nakonfigurovat koncový bod a přístupový klíč prostředku služby OpenAI:

SELECT azure_ai.set_setting('azure_openai.endpoint', '{your-endpoint-url}');
SELECT azure_ai.set_setting('azure_openai.subscription_key', '{your-api-key}}');

Jakmile se nakonfiguruje azure_ai Azure OpenAI, načítání a ukládání vložených objektů je jednoduchá záležitost volání funkce v dotazu SQL. Za předpokladu, že máte tabulku listings se sloupcem description a sloupcem listing_vector, můžete vygenerovat a uložit embeddings pro všechny záznamy pomocí následujícího dotazu. Nahraďte {your-deployment-name}názvem nasazení ze sady Azure OpenAI Studio pro model, který jste vytvořili.

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;

listing_vector Sloupec vektoru musí mít stejný počet dimenzí jako jazykový model.

Pokud chcete zobrazit vkládání dokumentu, spusťte následující dotaz:

SELECT listing_vector FROM listings LIMIT 1;

Výsledkem je vektor čísel s plovoucí desetinnou čárkou. Nejprve můžete spustit \x , aby byl výstup čitelnější.

Dynamické generování vloženého dotazu

Po vložení dokumentů, které chcete hledat, můžete spustit sémantický vyhledávací dotaz. K tomu je také potřeba vygenerovat vložení textu dotazu.

Schéma rozšíření azure_openaiazure_ai vám umožňuje generovat embeddingy v SQL. Pokud například chcete najít první tři výpisy, jejichž text je nejvíce sémanticky podobný dotazu "Najít místa v procházitelné čtvrti", spusťte následující 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;

Operátor <=> vypočítá kosinovou vzdálenost mezi dvěma vektory, která je metrickým vyjádřením sémantické podobnosti. Čím blíže jsou vektory, tím více sémanticky podobné; čím dále jsou vektory, tím více se sémanticky liší.

Operátor ::vector převede vygenerované vkládání na pole vektorů PostgreSQL.

Dotaz vrátí první tři ID a popisy výpisu seřazené od méně do více různých (více až méně podobných).