Het Azure OpenAI-schema verkennen

Voltooid

Door Azure OpenAI op te nemen in uw PostgreSQL-database, kunt u uiterst schaalbare AI-apps maken. Met deze integratie kunt u de vertrouwde SQL-taal en de flexibiliteit van PostgreSQL gebruiken om intelligente oplossingen in uw databaselaag te bouwen. Of het nu gaat om taalverwerking, aanbevelingssystemen of inhoudsgeneratie, Azure OpenAI versterkt uw toepassingen.

Met azure_openai het schema dat door de azure_ai extensie is geïnstalleerd, kunt u verbinding maken met en communiceren met een Azure OpenAI Service-exemplaar. Dit schema maakt naadloze integratie mogelijk met de Azure OpenAI-service, zodat u krachtige generatieve AI-toepassingen rechtstreeks vanuit uw PostgreSQL-database kunt maken.

Insluitingen maken

Met het azure_openai schema kunt u de create_embeddings() functie aanroepen, waarmee vector-insluitingen worden gegenereerd vanuit de databaselaag. Deze embeddingstechnologieën bieden efficiënte opslag, indexering en het opvragen van high-dimensionale vectoren. De functie kan tekstinvoer of een matrix met tekstwaarden aannemen, afhankelijk van het aantal items dat u in één keer wilt insluiten.

Voor de functie moet u het volgende doen:

  • Geef de naam van de insluitimplementatie op.
  • Geef de invoertekst of matrix met tekst op.
  • Laat de functie de insluitvector retourneren als vector of vector[].

Voorbeeld:

```sql
SELECT azure_openai.create_embeddings(
'{your-deployment-name}',
'Sample text to embed'
);
```

Bij het doorgeven van meerdere invoerwaarden retourneert de functie een matrix van vectoren:

```sql
SELECT azure_openai.create_embeddings(
'{your-deployment-name}',
ARRAY['First text', 'Second text']
);
```

De functie verwerkt intern batchverwerking op basis van het aantal opgegeven items.

Een verbinding met Azure OpenAI configureren

Voordat u de azure_openai functies gebruikt, configureert u de extensie met uw Azure OpenAI-service-eindpunt en -sleutel. De volgende opdracht vertegenwoordigt de query's die u zou gebruiken om het eindpunt en de sleutel in te stellen die nodig zijn om verbinding te maken met uw Azure OpenAI-exemplaar:

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

Vervolgens kunt u de get_setting() functie gebruiken om de instellingen te controleren die zijn geschreven in de azure_ai.settings configuratietabel:

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

Vectorondersteuning met de vectorextensie inschakelen

Met azure_openai.create_embeddings() de functie in de azure_ai extensie kunt u insluitingen genereren voor invoertekst. Als u wilt dat de gegenereerde vectoren naast de rest van uw gegevens in de database worden opgeslagen, moet u de vector extensie ook installeren door de richtlijnen in de enable vector-ondersteuning in uw databasedocumentatie te volgen.

U kunt de vector extensie installeren met de opdracht CREATE EXTENSION .

CREATE EXTENSION IF NOT EXISTS vector;

Vectoren genereren en opslaan

In de door AI aangestuurde aanbevelingstoepassing voor huurwoningen die u ontwikkelt voor Margie's Travel, moet u een nieuwe kolom toevoegen aan de gerichte tabel met behulp van het vector gegevenstype om embeddings op te slaan in die tabel nadat u vectorondersteuning aan de database hebt toegevoegd. Vectoren zijn ingeschakeld in de listings tabel om semantische zoekmogelijkheden toe te staan bij het uitvoeren van query's om te zoeken naar beschikbare eigenschappen. Het text-embedding-ada-002 model produceert vectoren met 1536 dimensies, dus u moet opgeven 1536 als de vectorgrootte.

ALTER TABLE listings
ADD COLUMN description_vector vector(1536);

De listings tabel is nu klaar om insluitingen op te slaan. Met behulp van de azure_openai.create_embeddings() functie maakt u vectoren voor het description veld en voegt u deze in de zojuist gemaakte description_vector kolom in de listings tabel in.

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

Elke insluiting is een vector van getallen met drijvende komma, dus de afstand tussen twee insluitingen in de vectorruimte is gecorreleerd met de semantische gelijkenis tussen twee invoerwaarden in de oorspronkelijke indeling.