Vytváření vkládání 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
Azure OpenAI a Azure OpenAI
Flexibilní rozšíření Azure Database for PostgreSQL pro Azure AI poskytuje uživatelem definované funkce pro integraci se službami Azure AI, včetně Azure OpenAI a Azure Cognitive Services.
Rozhraní API azure OpenAI Embeddings generuje vektor vkládání 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í.
azure_ai
Použití rozšíření 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ředpokladudescription
, že tabulka listings
se sloupcem a listing_vector
sloupcem můžete vygenerovat a uložit vkládání pro všechny výpisy 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í desetinou čárkou. Nejprve můžete spustit \x
, aby byl výstup čitelnější.
Dynamické generování vkládání dotazů
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 azure_openai
azure_ai
rozšíření umožňuje vygenerovat vložené objekty v rámci 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á kosinus vzdálenost mezi dvěma vektory, sémantickou podobností. Čím blíže jsou vektory, tím více sémanticky podobné; další 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).