Prozkoumání schématu Azure OpenAI

Dokončeno

Začleněním Azure OpenAI do databáze PostgreSQL můžete vytvářet vysoce škálovatelné aplikace využívající AI. Tato integrace umožňuje používat známý jazyk SQL a flexibilitu PostgreSQL k vytváření inteligentních řešení v rámci databázové vrstvy. Azure OpenAI umožňuje vašim aplikacím bez ohledu na to, jestli zpracování přirozeného jazyka, systémy doporučení nebo generování obsahu.

Schéma azure_openai nainstalované rozšířením azure_ai umožňuje připojit se k instanci služby Azure OpenAI a pracovat s ní. Toto schéma umožňuje bezproblémovou integraci se službou Azure OpenAI a umožňuje vytvářet výkonné aplikace AI přímo z databáze PostgreSQL.

Vytváření vložených objektů

azure_openai Pomocí schématu create_embeddings() můžete volat funkci, která generuje vektorové vkládání z databázové vrstvy. Tyto vkládání umožňují efektivní ukládání, indexování a dotazování vysoce dimenzionálních vektorů. Funkce může mít dvě formy:

  • azure_openai.create_embeddings(text,text,integer,boolean,integer,integer)
  • azure_openai.create_embeddings(text,text[],integer,integer,boolean,integer,integer)

Následující tabulka popisuje argumenty očekávané funkcí:

Argument Typ Výchozí Popis
deployment_name text Název nasazení modelu vložení v nástroji Azure OpenAI Studio Tento název obvykle odkazuje na nasazení text-embeddings-ada-002 modelu.
input text nebo text[] Vstupní text (nebo pole vstupního textu), pro který se vytvářejí vektorové vkládání.
batch_size integer 100 Platí pouze v případech, input kdy je argument polem text hodnot. batch_size určuje počet záznamů z pole, které se mají zpracovat současně.
timeout_ms integer NULL::integer Časový limit v milisekundách, po kterém je operace zastavena.
throw_on_error boolean true Příznak označující, zda má funkce při chybě vyvolat výjimku, což vede k vrácení zpět obtékání transakcí.
max_attempts integer 1 Počet opakování volání služby Azure OpenAI v případě selhání
retry_delay_ms integer 1000 Doba čekání v milisekundách, než se pokusíte znovu volat koncový bod služby Azure OpenAI.

Konfigurace připojení k Azure OpenAI

Před použitím azure_openai funkcí nakonfigurujte rozšíření pomocí koncového bodu služby Azure OpenAI a klíče. Následující příkaz představuje dotazy, které byste použili k nastavení koncového bodu a klíče potřebného pro připojení k instanci Azure OpenAI:

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

Potom můžete pomocí get_setting() funkce ověřit nastavení napsaná v azure_ai.settings konfigurační tabulce:

SELECT azure_ai.get_setting('azure_openai.endpoint');
SELECT azure_ai.get_setting('azure_openai.subscription_key');

Povolení podpory vektorů s rozšířením vektoru

Funkce azure_openai.create_embeddings() v azure_ai rozšíření umožňuje generovat vkládání pro vstupní text. Pokud chcete, aby se vygenerované vektory ukládaly společně se zbytkem dat v databázi, musíte rozšíření nainstalovat vector také podle pokynů v dokumentaci k povolení vektoru.

Rozšíření můžete nainstalovat vector pomocí příkazu CREATE EXTENSION .

CREATE EXTENSION IF NOT EXISTS vector;

Generování a ukládání vektorů

V aplikaci doporučení k pronájmu založené na umělé inteligenci, kterou vyvíjíte pro Margie's Travel, musíte do cílové tabulky přidat nový sloupec pomocí datového vector typu pro ukládání vložených objektů v této tabulce po přidání podpory vektorů do databáze. V tabulce jsou povoleny listings vektory, které umožňují sémantické vyhledávání při spouštění dotazů hledat dostupné vlastnosti. Model text-embedding-ada-002 vytváří vektory s rozměry 1 536, takže je nutné zadat 1536 jako velikost vektoru.

ALTER TABLE listings
ADD COLUMN description_vector vector(1536);

Tabulka listings je teď připravená k ukládání vložených objektů. azure_openai.create_embeddings() Pomocí funkce vytvoříte vektory pro description pole a vložíte je do nově vytvořeného description_vector listings sloupce v tabulce.

UPDATE listings
SET description_vector = azure_openai.create_embeddings('{your-deployment-name}', description);

Každé vložení je vektor čísel s plovoucí desetinou čárkou, takže vzdálenost mezi dvěma vkládáními ve vektorovém prostoru odpovídá sémantické podobnosti mezi dvěma vstupy v původním formátu.