Share via


Vector embeddings genereren met azure_local_ai op Azure Database for PostgreSQL Flexible Server (preview)

Vereisten

  1. Een Azure Database for PostgreSQL Flexible Server-exemplaar dat wordt uitgevoerd op een vm-SKU die is geoptimaliseerd voor geheugen. Meer informatie over vm's die zijn geoptimaliseerd voor Azure-geheugen vindt u hier: Azure VM-grootten - Geheugen - Virtuele Azure-machines

  2. Schakel de volgende extensies in.

    1. Vector

    2. azure_local_ai

Zie Extensies inschakelen in Azure Database for PostgreSQL – Flexible Server voor meer informatie over het inschakelen van extensies in Azure Database for PostgreSQL.

Notitie

Als u Azure Local AI Preview inschakelt, wordt het meertalige e5-kleine model geïmplementeerd in uw Azure Database for PostgreSQL Flexible Server-exemplaar. De gekoppelde documentatie bevat licentievoorwaarden van het e5-team. Er kunnen doorlopend extra opensource-modellen van derden beschikbaar komen voor installatie.

Functies die worden geleverd door de azure_local_ai-extensie

De azure_local_ai-extensie biedt een set functies. Met deze functies kunt u vector-insluitingen maken op basis van tekstgegevens, zodat u eenvoudiger generatieve AI-toepassingen kunt ontwikkelen. De extensie biedt functies voor het maken van insluitingen, het ophalen van instellingen en meer. Door deze functies te gebruiken, kunt u het ontwikkelingsproces vereenvoudigen en latentie verminderen door extra externe API-aanroepen naar AI-insluitingsmodellen die buiten de grens van PostgreSQL worden gehost, te elimineren.

Schema Naam Resultaatgegevenstype Argumentgegevenstypen
azure_local_ai create_embeddings TABLE(insluiten van real[]) model_uri tekst, invoertekst[], batch_size bigint DEFAULT 128, timeout_ms geheel getal DEFAULT 3600000
azure_local_ai create_embeddings real[] model_uri tekst, invoertekst, timeout_ms geheel getal DEFAULT 3600000
azure_local_ai get_setting jsonb toetsentekst[] STANDAARDMATRIX[]::text[], timeout_ms geheel getal STANDAARD 36000000
azure_local_ai get_setting sms verzenden sleuteltekst, timeout_ms geheel getal DEFAULT 3600000
azure_local_ai model_metadata jsonb tekst model_uri

Deze kunnen worden weergegeven via de PSQL-opdracht,

\df azure_local_ai.*

azure_local_ai.create_embeddings

Met de azure_local_ai-extensie kunt u insluitingen maken en bijwerken, zowel in scalaire als batch-indeling, waardoor de lokaal geïmplementeerde LLM wordt aangeroepen.

azure_local_ai.create_embeddings(model_uri text, input text, batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);
azure_local_ai.create_embeddings(model_uri text, array[inputs [text]], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000);

Argumenten

model_uri

text naam van het insluitmodel voor tekst dat is aangeroepen om het insluiten te maken.

input

text of text[] één tekst of matrix van teksten, afhankelijk van de overbelasting van de gebruikte functie, waarvoor insluitingen worden gemaakt.

batch_size

bigint DEFAULT 128 aantal records dat tegelijk moet worden verwerkt (alleen beschikbaar voor de overbelasting van de functie waarvoor de parameter input van het type text[]is).

timeout_ms

integer DEFAULT 3600000 time-out in milliseconden waarna de bewerking is gestopt.

Gebruik azure_local_ai en het lokaal geïmplementeerde meertalige e5-kleine model om insluitingen te maken en op te slaan als vectoren

Hieronder vindt u voorbeelden die in uw eigen omgeving kunnen worden gebruikt om het genereren van insluiten te testen met het lokaal geïmplementeerde meertalige e5-model.

--Create docs table
CREATE TABLE docs(doc_id int generated always as identity primary key, doc text not null, embedding float4[], last_update timestamptz default now());

--Insert data into the docs table
INSERT INTO docs(doc) VALUES ('Create in-database embeddings with azure_local_ai extension.'),
                             ('Enable RAG patterns with in-database embeddings and vectors on Azure Database for PostgreSQL - Flexible server.'),
                             ('Generate vector embeddings in PostgreSQL with azure_local_ai extension.'),
                             ('Generate text embeddings in PostgreSQL for retrieval augmented generation (RAG) patterns with azure_local_ai extension and locally deployed LLM.'),
                             ('Use vector indexes and Azure OpenAI embeddings in PostgreSQL for retrieval augmented generation.');


-- Add a vector column and generate vector embeddings from locally deployed model
ALTER TABLE docs
ADD COLUMN doc_vector vector(384) -- multilingual-e5 embeddings are 384 dimensions
GENERATED ALWAYS AS (azure_local_ai.create_embeddings('multilingual-e5-small:v1', doc)::vector) STORED; -- TEXT string sent to local model

--View floating point entries in the doc_vector column
select doc_vector from docs;

-- Add a single record to the docs table and the vector embedding using azure_local_ai and locally deployed model will be automatically generated
INSERT INTO docs(doc) VALUES ('Semantic Search with Azure Database for PostgreSQL - Flexible Server and Azure OpenAI');

--View all doc entries and their doc_vector column
select doc, doc_vector, last_update from docs;

-- Simple array embedding
SELECT azure_local_ai.create_embeddings('multilingual-e5-small:v1', array['Recommendation System with Azure Database for PostgreSQL - Flexible Server and Azure OpenAI.', 'Generative AI with Azure Database for PostgreSQL - Flexible Server.']);

Insluitingen bijwerken bij invoeging

Hieronder vindt u voorbeelden die in uw eigen omgeving kunnen worden gebruikt om het genereren van insluiten te testen met het lokaal geïmplementeerde meertalige e5-model.

-- Update embeddings upon insertion

-- create table
create table docs(doc_id int generated always as identity primary key, doc text not null, last_update timestamptz default now(), embedding float4[] 
	GENERATED ALWAYS AS (azure_local_ai.create_embeddings('multilingual-e5-small:v1', doc)) STORED);

--Insert data into the docs table
INSERT INTO docs(doc) VALUES ('Create in-database embeddings with azure_local_ai extension.'),
                             ('Enable RAG patterns with in-database embeddings and vectors on Azure Database for PostgreSQL - Flexible server.'),
                             ('Generate vector embeddings in PostgreSQL with azure_local_ai extension.'),
                             ('Generate text embeddings in PostgreSQL for retrieval augmented generation (RAG) patterns with azure_local_ai extension and locally deployed LLM.'),
                             ('Use vector indexes and Azure OpenAI embeddings in PostgreSQL for retrieval augmented generation.');


--Query embedding text, list results by descending similarity score
with all_docs as (
 select doc_id, doc, embedding
  from docs
), target_doc as (
 select azure_local_ai.create_embeddings('multilingual-e5-small:v1', 'Generate text embeddings in PostgreSQL.') embedding
)
select all_docs.doc_id, all_docs.doc , 1 - (all_docs.embedding::vector <=> target_doc.embedding::vector) as similarity
 from target_doc, all_docs
 order by similarity desc
 limit 2;

ONNX Runtime-configuratie

azure_local_ai.get_setting

Wordt gebruikt om de huidige waarden van configuratieopties te verkrijgen.

SELECT azure_local_ai.get_setting(key TEXT)

De azure_local_ai-extensie ondersteunt het controleren van de configuratieparameters van ONNX Runtime-threadpool binnen de ONNX Runtime-service. Wijzigingen zijn op dit moment niet toegestaan. Zie PRESTATIES van ONNX Runtime afstemmen.

Argumenten

Sleutel

Geldige waarden voor de key volgende zijn:

  • intra_op_parallelism: Hiermee stelt u het totale aantal threads in dat wordt gebruikt voor het parallelliseren van één operator door ONNX Runtime-thread-pool. Standaard maximaliseren we het aantal intra-ops-threads zoveel mogelijk, omdat de totale doorvoer veel wordt verbeterd (standaard alle beschikbare CPU's).
  • inter_op_parallelism: Hiermee stelt u het totale aantal threads in dat wordt gebruikt voor het parallel berekenen van meerdere operators door ONNX Runtime-thread-pool. Standaard stellen we deze in op minimaal mogelijke threads, namelijk 1. Het verhogen doet vaak pijn aan de prestaties als gevolg van frequente contextswitches tussen threads.
  • spin_control: schakelt ONNX Runtime thread-pool draaien voor aanvragen. Wanneer deze optie is uitgeschakeld, wordt minder cpu gebruikt en wordt er dus meer latentie veroorzaakt. Deze is standaard ingesteld op true (ingeschakeld).

Retourtype

TEXT de huidige waarde van de geselecteerde instelling weergeven.