Vector embeddings genereren in Azure Database for PostgreSQL - Flexible Server met lokaal geïmplementeerde LLM (preview)
Vereisten
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
U kunt de vectorextensie inschakelen, omdat deze functionaliteit biedt voor het opslaan en efficiënt indexeren van tekst in uw database.
De extensie inschakelen
Voordat u azure_local_ai kunt inschakelen op uw exemplaar van flexibele Azure Database for PostgreSQL-server, moet u de azure_local_ai
extensie toestaan zoals beschreven in een extensie toestaan.
Belangrijk
Voor het hosten van taalmodellen in de database is een grote geheugenvoetafdruk vereist. Ter ondersteuning van deze vereiste wordt azure_local_ai
alleen ondersteund op voor geheugen geoptimaliseerde Azure VM-SKU's met minimaal 4 vCores.
Als u een virtuele machine gebruikt die niet voldoet aan de minimale vereisten, wordt de azure_local_ai
extensie niet weergegeven in de lijst met toegestane waarden voor de azure.extensions
serverparameter.
Zodra de extensie is toegestaan, kunt u de instructies in het maken van extensies volgen om de extensie in elke database te installeren van waaruit u deze wilt gebruiken.
Notitie
Als u Azure Local AI 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.
Als u de extensie azure_local_ai
installeert, wordt een schema gemaakt waarin tabellen, functies en andere SQL-gerelateerde objecten worden opgeslagen azure_local_ai
die nodig zijn om de functionaliteit ervan te implementeren en beschikbaar te maken.
Belangrijk
Mogelijk wilt u de vectorextensie inschakelen, omdat het vereist is om tekst insluitingen op te slaan in uw PostgreSQL-database.
Functies die worden geleverd door de 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 functies kunnen worden weergegeven met behulp van de volgende psql-meta-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, waarbij u de lokaal geïmplementeerde LLM aanroept.
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.
azure_local_ai.get_setting
Wordt gebruikt om de huidige waarden van configuratieopties te verkrijgen.
SELECT azure_local_ai.get_setting(key TEXT)
azure_local_ai
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 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.
Voorbeelden
Insluitingen maken van bestaande teksten
Hieronder volgt een voorbeeld dat in uw eigen omgeving kan worden gebruikt om het genereren van insluiten te testen met het lokaal geïmplementeerde meertalige-e5-model.
-- Create documents table
CREATE TABLE documents(doc_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, doc_contents TEXT NOT NULL, last_update TIMESTAMPTZ DEFAULT now());
--Insert data into the docs table
INSERT INTO documents(doc_contents) 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 documents
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_contents)::vector) STORED; -- TEXT string sent to local model
--View floating point entries in the doc_vector column
SELECT doc_vector FROM documents;
-- Add a single record to the documents table and the vector embedding using azure_local_ai and locally deployed model will be automatically generated
INSERT INTO documents(doc_contents) VALUES
('Semantic Search with Azure Database for PostgreSQL - Flexible Server and Azure OpenAI');
--View all document entries, their contents, embeddings and last time the row was updated
SELECT doc_contents, doc_vector, last_update FROM documents;
-- The following command leverages the overload of azure_local_ai.create_embeddings function which accepts and array of TEXT
-- and produces a table for which each row contains the embedding of one element in the input array
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 genereren bij het invoegen van nieuwe tekst
Hieronder volgt een voorbeeld dat in uw eigen omgeving kan worden gebruikt om het genereren van insluiten te testen met het lokaal geïmplementeerde meertalige-e5-model.
-- Create documents table
CREATE TABLE documents(doc_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, doc_contents TEXT NOT NULL, last_update TIMESTAMPTZ DEFAULT now(), doc_vector vector(384) GENERATED ALWAYS AS (azure_local_ai.create_embeddings('multilingual-e5-small:v1', doc_contents)::vector) STORED);
-- Insert data into the documents table
INSERT INTO documents(doc_contents) 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_documents AS (
SELECT doc_id, doc_contents, doc_vector FROM documents
),
target_documents AS (
SELECT azure_local_ai.create_embeddings('multilingual-e5-small:v1', 'Generate text embeddings in PostgreSQL.') doc_vector
)
SELECT all_documents.doc_id, all_docs.doc_contents , 1 - (all_documents.doc_vector::vector <=> target_documents.doc_vector::vector) AS similarity
FROM target_documents, all_documents
ORDER BY similarity DESC
LIMIT 2;
Gerelateerde inhoud
- Integreer Azure Database for PostgreSQL - Flexible Server met Azure Cognitive Services.
- Integreer Azure Database for PostgreSQL met Azure Machine Learning Services.
- Vector embeddings genereren met Azure OpenAI in Azure Database for PostgreSQL - Flexible Server.
- Azure AI-extensie in Azure Database for PostgreSQL - Flexible Server.
- Generatieve AI met Azure Database for PostgreSQL - Flexible Server.
- Aanbevelingssysteem met Azure Database for PostgreSQL - Flexible Server en Azure OpenAI.
- Semantic Search met Azure Database for PostgreSQL - Flexible Server en Azure OpenAI.
- Schakel pgvector in en gebruik deze in Azure Database for PostgreSQL - Flexible Server.