Vytváření vkládání 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 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).