Vytvořte embeddingy pomocí rozšíření Azure AI
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í.
Ú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).