Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De azure_ai extensie voegt de mogelijkheid toe om grote taalmodellen (LLM's) te gebruiken en generatieve AI-toepassingen te bouwen in een Azure Database for PostgreSQL-database door de kracht van Azure AI-services te integreren.
Generatieve AI is een vorm van kunstmatige intelligentie waarin LLM's worden getraind om oorspronkelijke inhoud te genereren op basis van invoer in natuurlijke taal. Met behulp van de azure_ai extensie kunt u de mogelijkheden van AI gebruiken om query's in natuurlijke taal rechtstreeks vanuit de database te verwerken.
In dit artikel wordt beschreven hoe u uitgebreide AI-mogelijkheden toevoegt aan een flexibele Azure Database for PostgreSQL-serverinstantie met behulp van de azure_ai extensie. U ziet hoe u zowel Azure OpenAI als de Azure AI Language-service in uw database kunt integreren met behulp van de extensie.
Vereisten
Een Azure-abonnement. Maak gratis een account.
Toegang verleend tot Azure OpenAI in het gewenste Azure abonnement. Momenteel verleent de toepassing toegang tot deze service. U kunt toegang tot Azure OpenAI aanvragen door het formulier in te vullen in Beperkte toegang voor De Azure OpenAI-service.
Een Azure OpenAI-resource met het
text-embedding-ada-002(versie 2)-model geïmplementeerd. Dit model is momenteel alleen beschikbaar in bepaalde regio's. Als u geen resource hebt, wordt het proces voor het maken van een resource beschreven in de implementatiehandleiding voor Azure OpenAI-resources.Een Azure AI-taalresource . Als u geen taalresource hebt, kunt u er een maken in Azure Portal door de instructies in de quickstart te volgen voor samenvatting. U kunt de gratis prijscategorie (
Free F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.Een flexibele serverinstantie van Azure Database for PostgreSQL in uw Azure-abonnement. Zie Een Azure Database for PostgreSQL maken als u deze resource niet hebt.
Verbinding maken met de database met behulp van psql in Azure Cloud Shell
Open Azure Cloud Shell in een webbrowser. Selecteer Bash als de omgeving. Als u hierom wordt gevraagd, selecteert u het abonnement dat u hebt gebruikt voor uw Azure Database for PostgreSQL-database en selecteert u Vervolgens Opslag maken.
Ga als volgende te werk om de details van de databaseverbinding op te halen:
Ga in Azure Portal naar uw flexibele Server-exemplaar van Azure Database for PostgreSQL.
Selecteer Verbinding maken in het linkermenu onder Instellingen. Kopieer het blok Verbindingsgegevens .
Plak de gekopieerde declaratieregels voor omgevingsvariabelen in de Azure Cloud Shell-terminal. Vervang het
{your-password}token door het wachtwoord dat u hebt ingesteld toen u de database maakte.export PGHOST={your-server-name}.postgresql.database.azure.com export PGUSER={your-user-name} export PGPORT=5432 export PGDATABASE={your-database-name} export PGPASSWORD="{your-password}"Maak verbinding met uw database met behulp van het opdrachtregelprogramma psql. Voer de volgende opdracht in bij de prompt:
psql
De azure_ai-extensie installeren
U kunt de azure_ai extensie gebruiken om Azure OpenAI en Azure Cognitive Services te integreren in uw database. Zie Vector embeddings genereren met Azure OpenAI in Azure Database for PostgreSQL voor meer informatie.
De extensie inschakelen in uw database:
Voeg de extensie toe aan uw acceptatielijst, zoals wordt beschreven in Extensies toestaan.
Installeer de extensie in de database waarin u de
azure_aiextensie wilt gebruiken, zoals beschreven in Extensies maken.
De objecten in de extensie azure_ai controleren
Het controleren van de objecten die de azure_ai extensie bevat, kan een beter begrip bieden van de mogelijkheden die de extensie biedt. U kunt de \dx metaopdracht vanaf de psql opdrachtprompt gebruiken om de objecten in de extensie weer te geven:
\dx+ azure_ai
In de uitvoer van de metaopdracht ziet u dat de extensie drie schema's, meerdere door de azure_ai gebruiker gedefinieerde functies (UDF's) en verschillende samengestelde typen in de database maakt. In de volgende tabel worden de schema's beschreven die door de extensie worden toegevoegd:
| Schema | Beschrijving |
|---|---|
azure_ai |
Biedt het principal-schema waarin de configuratietabel en UDF's zich bevinden voor interactie met de tabel. |
azure_openai |
Bevat de UDF's waarmee een Azure OpenAI-eindpunt kan worden aangeroepen. |
azure_cognitive |
Biedt UDF's en samengestelde typen die betrekking hebben op de integratie van de database met Azure Cognitive Services. |
De functies en typen zijn allemaal gekoppeld aan een van de schema's. Gebruik de azure_ai meta-opdracht om de functies te controleren die in het \df schema zijn gedefinieerd. Geef het schema op waarvan de functies moeten worden weergegeven. Met de \x auto opdrachten vóór de \df opdracht wordt de uitgevouwen weergave automatisch ingeschakeld en uitgeschakeld, zodat de uitvoer van de opdracht gemakkelijker te bekijken is in Azure Cloud Shell.
\x auto
\df+ azure_ai.*
Gebruik de azure_ai.set_setting() functie om het eindpunt en de kritieke waarden voor Azure AI-services in te stellen. Het accepteert een sleutel en de waarde om deze toe te wijzen. De azure_ai.get_setting() functie biedt een manier om de waarden op te halen die u met de set_setting() functie hebt ingesteld. Hiermee wordt de sleutel geaccepteerd van de instelling die u wilt weergeven. Voor beide methoden moet de sleutel een van de volgende zijn:
| sleutel | Beschrijving |
|---|---|
azure_openai.endpoint |
Een ondersteund Azure OpenAI-eindpunt (bijvoorbeeld https://example.openai.azure.com). |
azure_openai.subscription_key |
Een abonnementssleutel voor een Azure OpenAI-resource. |
azure_cognitive.endpoint |
Een ondersteund Cognitive Services-eindpunt (bijvoorbeeld https://example.cognitiveservices.azure.com). |
azure_cognitive.subscription_key |
Een abonnementssleutel voor een Cognitive Services-resource. |
Belangrijk
Omdat de verbindingsgegevens voor Azure AI-services, inclusief API-sleutels, worden opgeslagen in een configuratietabel in de database, definieert de azure_ai extensie een rol die wordt aangeroepen azure_ai_settings_manager om ervoor te zorgen dat deze informatie wordt beveiligd en alleen toegankelijk is voor gebruikers die die rol hebben. Met deze rol kunt u instellingen lezen en schrijven die betrekking hebben op de extensie.
Alleen supergebruikers en leden van de azure_ai_settings_manager rol kunnen de azure_ai.get_setting() en azure_ai.set_setting() functies aanroepen. In Azure Database for PostgreSQL hebben alle beheerders de azure_ai_settings_manager rol.
Vector-insluitingen genereren met Azure OpenAI
Het azure_ai schema van azure_openai de extensie maakt het gebruik van Azure OpenAI mogelijk voor het maken van vector-insluitingen voor tekstwaarden. Met behulp van dit schema kunt u insluitingen genereren met Azure OpenAI rechtstreeks vanuit de database om vectorweergaven van invoertekst te maken. Deze weergaven kunnen vervolgens worden gebruikt in vector gelijkeniszoekopdrachten en door machine learning-modellen worden gebruikt.
Insluitingen zijn een techniek voor het gebruik van machine learning-modellen om te evalueren hoe nauw gerelateerde informatie is. Met deze techniek kunnen relaties en overeenkomsten tussen gegevens efficiënt worden geïdentificeerd, zodat algoritmen patronen kunnen identificeren en nauwkeurige voorspellingen kunnen doen.
Het Azure OpenAI-eindpunt en -sleutel instellen
Voordat u de azure_openai functies gebruikt, configureert u de extensie met uw Azure OpenAI-service-eindpunt en -sleutel:
Ga in Azure Portal naar uw Azure OpenAI-resource. Selecteer sleutels en eindpunt in het linkermenu onder Resourcebeheer.
Kopieer uw eindpunt en toegangssleutel. U kunt
KEY1ofKEY2gebruiken. Als u altijd twee sleutels hebt, kunt u sleutels veilig roteren en opnieuw genereren zonder de service te onderbreken.Vervang in de volgende opdracht de
{endpoint}en{api-key}tokens door waarden die u hebt opgehaald uit Azure Portal. Voer vervolgens de opdrachten uit vanaf depsqlopdrachtprompt om uw waarden toe te voegen aan de configuratietabel.SELECT azure_ai.set_setting('azure_openai.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_openai.subscription_key', '{api-key}');Controleer de instellingen die zijn geschreven in de configuratietabel:
SELECT azure_ai.get_setting('azure_openai.endpoint'); SELECT azure_ai.get_setting('azure_openai.subscription_key');
De azure_ai extensie is nu verbonden met uw Azure OpenAI-account en kan vector-insluitingen genereren.
De database vullen met voorbeeldgegevens
In dit artikel wordt een kleine subset van de BillSum-gegevensset gebruikt om voorbeeldtekstgegevens te bieden voor het genereren van vectoren. Deze gegevensset bevat een lijst met Amerikaanse congreswetten en staatwetten van Californië. U kunt het bill_sum_data.csv bestand met deze gegevens downloaden uit de GitHub-opslagplaats voor Azure-voorbeelden.
Als u de voorbeeldgegevens in de database wilt hosten, maakt u een tabel met de naam bill_summaries:
CREATE TABLE bill_summaries
(
id bigint PRIMARY KEY,
bill_id text,
bill_text text,
summary text,
title text,
text_len bigint,
sum_len bigint
);
Door de PostgreSQL COPY-opdracht vanuit de psql opdrachtprompt te gebruiken, laadt u de voorbeeldgegevens uit het CSV-bestand in de bill_summaries tabel. Geef op dat de eerste rij van het CSV-bestand een koprij is.
\COPY bill_summaries (id, bill_id, bill_text, summary, title, text_len, sum_len) FROM PROGRAM 'curl "https://raw.githubusercontent.com/Azure-Samples/Azure-OpenAI-Docs-Samples/main/Samples/Tutorials/Embeddings/data/bill_sum_data.csv"' WITH CSV HEADER ENCODING 'UTF8'
Vectorondersteuning inschakelen
U kunt de azure_ai extensie gebruiken om insluitingen te genereren voor invoertekst. Als u wilt dat de gegenereerde vectoren naast de rest van uw gegevens in de database worden opgeslagen, moet u de pgvector extensie installeren. Volg de richtlijnen in de documentatie over het inschakelen van vectorondersteuning in uw database.
Met vectorondersteuning toegevoegd aan uw database, voegt u een nieuwe kolom toe aan de bill_summaries tabel met behulp van het vector gegevenstype voor het opslaan van insluitingen in de tabel. Het text-embedding-ada-002 model produceert vectoren met 1536 dimensies, dus u moet opgeven 1536 als de vectorgrootte.
ALTER TABLE bill_summaries
ADD COLUMN bill_vector vector(1536);
Vectoren genereren en opslaan
De bill_summaries tabel is nu klaar om insluitingen op te slaan. Met behulp van de azure_openai.create_embeddings() functie maakt u vectoren voor het bill_text veld en voegt u deze in de zojuist gemaakte bill_vector kolom in de bill_summaries tabel in.
Voordat u de create_embeddings() functie gebruikt, voert u de volgende opdracht uit om deze te controleren en de vereiste argumenten te controleren:
\df+ azure_openai.*
De Argument data types eigenschap in de uitvoer van de \df+ azure_openai.* opdracht toont de lijst met argumenten die door de functie worden verwacht:
| Argumentatie | Soort | Standaard | Beschrijving |
|---|---|---|---|
deployment_name |
text |
De naam van de implementatie in de Azure AI Foundry-portal die het text-embeddings-ada-002 model bevat. |
|
input |
text |
Invoertekst die wordt gebruikt voor het maken van insluitingen. | |
timeout_ms |
integer |
3600000 |
Time-out in milliseconden, waarna de bewerking wordt gestopt. |
throw_on_error |
boolean |
true |
Vlag die aangeeft of de functie bij een fout een uitzondering moet genereren die resulteert in een terugdraaiactie van de teruglooptransacties. |
Het eerste argument is de deployment_name waarde die is toegewezen toen uw insluitmodel werd geïmplementeerd in uw Azure OpenAI-account. Ga als volgt te werk om deze waarde op te halen:
Ga naar uw Azure OpenAI-resource in Azure Portal.
Selecteer in het linkermenu onder Resourcebeheermodelimplementaties om de Azure AI Foundry-portal te openen.
Selecteer Implementaties in de Azure AI Foundry-portal. Kopieer in het deelvenster Implementaties de waarde van de implementatienaam die is gekoppeld aan de
text-embedding-ada-002modelimplementatie.
Voer met deze informatie een query uit om elke record in de bill_summaries tabel bij te werken. Voeg de gegenereerde vectorinsluitingen voor het bill_text veld in de bill_vector kolom in met behulp van de azure_openai.create_embeddings() functie. Vervang door {your-deployment-name} de waarde van de implementatienaam die u hebt gekopieerd uit het deelvenster Implementaties van de Azure AI Foundry-portal. Voer vervolgens de volgende opdracht uit:
UPDATE bill_summaries b
SET bill_vector = azure_openai.create_embeddings('{your-deployment-name}', b.bill_text);
Voer de volgende query uit om de insluiting weer te geven die is gegenereerd voor de eerste record in de tabel. U kunt eerst \x uitvoeren als de uitvoer moeilijk te lezen is.
SELECT bill_vector FROM bill_summaries LIMIT 1;
Elke embedding is een vector van decimale getallen. De afstand tussen twee insluitingen in de vectorruimte wordt gecorreleerd met semantische overeenkomsten tussen twee invoerwaarden in de oorspronkelijke indeling.
Een vector-vergelijkingszoekopdracht uitvoeren
Vector-gelijkenis is een methode voor het meten van hoe vergelijkbare twee items zijn door ze als vectoren weer te geven. Vectoren zijn een reeks getallen. Ze worden vaak gebruikt om zoekopdrachten uit te voeren via LLMs.
Vector-overeenkomsten worden meestal berekend via metrische gegevens over afstand, zoals:
- Euclidische afstand: meet de rechte lijnafstand tussen twee vectoren in de n-dimensionale ruimte.
- Cosinus-gelijkenis: meet de cosinus van de hoek tussen twee vectoren.
Efficiënter zoeken via het vector veld mogelijk maken door een index bill_summaries op te maken via cosinusafstand en Hiërarchische Navigable Small World (HNSW). Met HNSW kunt pgvector u de meest recente algoritmen op basis van grafieken gebruiken om query's van dichtstbijzijnde buren bij benadering te gebruiken.
CREATE INDEX ON bill_summaries USING hnsw (bill_vector vector_cosine_ops);
Nu alles klaar is, bent u klaar om een cosine similarity-zoekopdracht uit te voeren in de database.
In de volgende query worden de insluitingen gegenereerd voor een invoervraag en vervolgens gecast naar een vectormatrix (::vector). Met de vectormatrix kan de vraag worden vergeleken met de vectoren die in de bill_summaries tabel zijn opgeslagen.
SELECT bill_id, title FROM bill_summaries
ORDER BY bill_vector <=> azure_openai.create_embeddings('embeddings', 'Show me bills relating to veterans entrepreneurship.')::vector
LIMIT 3;
De query maakt gebruik van de <=>vectoroperator. Deze operator vertegenwoordigt de cosinusafstandsoperator die wordt gebruikt om de afstand tussen twee vectoren in een multidimensionale ruimte te berekenen.
Azure Cognitive Services integreren
De Integraties van Azure AI-services die zijn opgenomen in het azure_cognitive schema van de azure_ai extensie bieden een uitgebreide set AI-taalfuncties die u rechtstreeks vanuit de database kunt openen. De functies omvatten sentimentanalyse, taaldetectie, sleuteltermextractie, entiteitsherkenning en samenvatting van tekst. Toegang tot deze mogelijkheden is ingeschakeld via de Azure AI Language-service.
Zie Azure Database for PostgreSQL integreren met Azure Cognitive Services om de volledige Azure AI-mogelijkheden te bekijken waartoe u toegang hebt via de extensie.
Het azure AI Language-service-eindpunt en -sleutel instellen
Net als bij de functies moet u het eindpunt en een sleutel voor uw Azure AI Language-serviceresource opgeven om met de azure_openai-extensie succesvol oproepen naar Azure AI-services te doen.
Ga in Azure Portal naar uw Taalserviceresource.
Selecteer sleutels en eindpunt in het linkermenu onder Resourcebeheer.
Kopieer uw eindpunt en toegangssleutel. U kunt
KEY1ofKEY2gebruiken.Voer in de
psqlopdrachtprompt de volgende opdrachten uit om uw waarden toe te voegen aan de configuratietabel. Vervang de{endpoint}en{api-key}tokens door de waarden die u hebt opgehaald uit Azure Portal.SELECT azure_ai.set_setting('azure_cognitive.endpoint','{endpoint}'); SELECT azure_ai.set_setting('azure_cognitive.subscription_key', '{api-key}');
Facturen samenvatten
Als u enkele van de mogelijkheden van de azure_cognitive functies van de azure_ai extensie wilt demonstreren, kunt u een samenvatting van elke factuur genereren. Het azure_cognitive schema biedt twee functies voor het samenvatten van tekst:
-
summarize_abstractive: Abstractieve samenvatting produceert een samenvatting die de belangrijkste concepten van invoertekst vastlegt, maar mogelijk geen identieke woorden gebruikt. -
summarize_extractive: Extraherende samenvatting stelt een samenvatting samen door kritieke zinnen uit de invoertekst te extraheren.
Als u de mogelijkheid van de Azure AI Language-service wilt gebruiken om nieuwe, oorspronkelijke inhoud te genereren, gebruikt u de summarize_abstractive functie om een samenvatting van tekstinvoer te maken. Gebruik de \df meta-opdracht opnieuw van psql deze keer om specifiek naar de azure_cognitive.summarize_abstractive functie te kijken:
\df azure_cognitive.summarize_abstractive
De Argument data types eigenschap in de uitvoer van de \df azure_cognitive.summarize_abstractive opdracht toont de lijst met argumenten die door de functie worden verwacht:
| Argumentatie | Soort | Standaard | Beschrijving |
|---|---|---|---|
text |
text |
Voer tekst in die u wilt samenvatten. | |
language |
text |
Tweeletterige ISO 639-1 representatie van de taal waarin de invoertekst is geschreven. Raadpleeg taalondersteuning voor taalfuncties voor toegestane waarden. | |
timeout_ms |
integer |
3600000 |
Time-out in milliseconden, waarna de bewerking wordt gestopt. |
throw_on_error |
boolean |
true |
Vlag die aangeeft of de functie bij een fout een uitzondering moet genereren die resulteert in een terugdraaiactie van de teruglooptransacties. |
sentence_count |
integer |
3 |
Maximum aantal zinnen dat moet worden opgenomen in de gegenereerde samenvatting. |
disable_service_logs |
boolean |
false |
Instelling waarmee taalservicelogboeken worden uitgeschakeld. De Taalservice registreert uw invoertekst gedurende 48 uur om problemen op te lossen. Als u deze eigenschap instelt om invoerlogboekregistratie uit te true schakelen, kan dit de mogelijkheid beperken om problemen te onderzoeken die zich voordoen. Zie de nalevings- en privacyopmerkingen van Cognitive Services en de principes van Microsoft Responsible AI voor meer informatie. |
Voor de summarize_abstractive functie zijn de volgende argumenten vereist: azure_cognitive.summarize_abstractive(text TEXT, language TEXT).
De volgende query voor de bill_summaries tabel maakt gebruik van de summarize_abstractive functie om een nieuwe samenvatting van één zin te genereren voor de tekst van een wetsvoorstel. Hiermee kunt u de kracht van generatieve AI rechtstreeks opnemen in uw query's.
SELECT
bill_id,
azure_cognitive.summarize_abstractive(bill_text, 'en', sentence_count => 1) one_sentence_summary
FROM bill_summaries
WHERE bill_id = '112_hr2873';
U kunt de functie ook gebruiken om gegevens naar uw databasetabellen te schrijven. Wijzig de bill_summaries tabel om een nieuwe kolom toe te voegen voor het opslaan van de samenvattingen van één zin in de database:
ALTER TABLE bill_summaries
ADD COLUMN one_sentence_summary TEXT;
Werk vervolgens de tabel bij met de samenvattingen. De summarize_abstractive functie retourneert een matrix met tekst (text[]). De array_to_string functie converteert de retourwaarde naar de tekenreeksweergave. In de volgende query is het throw_on_error argument ingesteld op false. Met deze instelling kan het samenvattingsproces worden voortgezet als er een fout optreedt.
UPDATE bill_summaries b
SET one_sentence_summary = array_to_string(azure_cognitive.summarize_abstractive(b.bill_text, 'en', throw_on_error => false, sentence_count => 1), ' ', '')
where one_sentence_summary is NULL;
In de uitvoer ziet u mogelijk een waarschuwing over een ongeldig document waarvoor geen geschikte samenvatting kan worden gegenereerd. Deze waarschuwing is het gevolg van het instellen van throw_on_error op false in de voorgaande query. Als u deze vlag op de standaardwaarde truehebt achtergelaten, mislukt de query en worden er geen samenvattingen naar de database geschreven. Voer deze opdracht uit om de record weer te geven die de waarschuwing heeft gegeven:
SELECT bill_id, one_sentence_summary FROM bill_summaries WHERE one_sentence_summary is NULL;
Vervolgens kunt u een query uitvoeren op de bill_summaries tabel om de nieuwe samenvattingen van één zin weer te geven die de azure_ai extensie genereert voor de andere records in de tabel:
SELECT bill_id, one_sentence_summary FROM bill_summaries LIMIT 5;
Conclusie
Gefeliciteerd! U hebt zojuist geleerd hoe u de azure_ai extensie kunt gebruiken om grote taalmodellen en generatieve AI-mogelijkheden in uw database te integreren.
Gerelateerde inhoud
- Extensies toestaan in Azure Database for PostgreSQL
- Meer informatie over het genereren van insluitingen met Azure OpenAI
- Azure OpenAI in Azure AI Foundry-modellen
- Informatie over insluitingen in Azure OpenAI in Azure AI Foundry-modellen
- Wat is Azure AI Language?
- Wat is de Azure OpenAI-service in de Azure AI Foundry-modellen?