Vector embeddings genereren met azure_local_ai op Azure Database for PostgreSQL Flexible Server (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
Schakel de volgende extensies in.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor