Generowanie osadzania wektorów przy użyciu azure_local_ai na serwerze elastycznym usługi Azure Database for PostgreSQL (wersja zapoznawcza)
Wymagania wstępne
Wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL uruchomione na jednostce SKU maszyny wirtualnej zoptymalizowanej pod kątem pamięci. Dowiedz się więcej o maszynach wirtualnych zoptymalizowanych pod kątem pamięci platformy Azure tutaj: Rozmiary maszyn wirtualnych platformy Azure — Pamięć — Azure Virtual Machines
Włącz następujące rozszerzenia,
azure_local_ai
Aby uzyskać więcej informacji na temat włączania rozszerzeń w usłudze Azure Database for PostgreSQL — serwer elastyczny, zobacz How to enable extensions in Azure Database for PostgreSQL (Jak włączyć rozszerzenia w usłudze Azure Database for PostgreSQL).
Uwaga
Włączenie lokalnej sztucznej inteligencji platformy Azure w wersji zapoznawczej spowoduje wdrożenie wielojęzycznego modelu e5-small w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL. Połączona dokumentacja zawiera postanowienia licencyjne od zespołu e5. Dodatkowe modele typu open source innych firm mogą być dostępne do ciągłej instalacji.
Funkcje udostępniane przez rozszerzenie azure_local_ai
Rozszerzenie azure_local_ai udostępnia zestaw funkcji. Te funkcje umożliwiają tworzenie wektorowych osadzeń na podstawie danych tekstowych, co ułatwia opracowywanie aplikacji generujących sztuczną inteligencję. Rozszerzenie oferuje funkcje służące do tworzenia osadzania, pobierania ustawień i nie tylko. Korzystając z tych funkcji, można uprościć proces programowania i zmniejszyć opóźnienie, eliminując konieczność dodatkowych zdalnych wywołań interfejsu API do modeli osadzania sztucznej inteligencji hostowanych poza granicą bazy danych PostgreSQL.
Schemat | Nazwisko | Typ danych wyników | Typy danych argumentów |
---|---|---|---|
azure_local_ai |
create_embeddings | TABLE(osadzanie rzeczywiste[]) | model_uri tekst, tekst wejściowy[], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000 |
azure_local_ai |
create_embeddings | real[] | model_uri tekst, tekst wejściowy, timeout_ms liczba całkowita DEFAULT 3600000 |
azure_local_ai |
get_setting | jsonb | keys text[] DEFAULT ARRAY[]:text[], timeout_ms integer DEFAULT 3600000 |
azure_local_ai |
get_setting | text | tekst klucza, timeout_ms liczba całkowita DEFAULT 3600000 |
azure_local_ai |
model_metadata | jsonb | tekst model_uri |
Można je wyświetlić za pomocą polecenia PSQL,
\df azure_local_ai.*
azure_local_ai.create_embeddings
Rozszerzenie azure_local_ai umożliwia tworzenie i aktualizowanie osadzania zarówno w formacie skalarnym, jak i wsadowym, wywołując lokalnie wdrożony moduł LLM.
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);
Argumenty
model_uri
text
nazwa wywoływanego modelu osadzania tekstu w celu utworzenia osadzania.
input
text
lub text[]
pojedynczy tekst lub tablica tekstów, w zależności od przeciążenia używanej funkcji, dla której są tworzone osadzanie.
batch_size
bigint DEFAULT 128
liczba rekordów do przetworzenia w danym momencie (dostępna tylko dla przeciążenia funkcji, dla której parametr input
jest typu text[]
).
timeout_ms
integer DEFAULT 3600000
limit czasu w milisekundach, po którym operacja jest zatrzymana.
Użyj azure_local_ai i lokalnie wdrożonego wielojęzycznego modelu e5-small, aby utworzyć osadzanie i zapisać je jako wektory
Poniżej przedstawiono przykłady, których można używać we własnym środowisku do testowania generowania osadzania przy użyciu lokalnie wdrożonego wielojęzycznego modelu e5.
--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.']);
Aktualizowanie osadzania podczas wstawiania
Poniżej przedstawiono przykłady, których można używać we własnym środowisku do testowania generowania osadzania przy użyciu lokalnie wdrożonego wielojęzycznego modelu e5.
-- 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;
Konfiguracja środowiska uruchomieniowego ONNX
azure_local_ai.get_setting
Służy do uzyskiwania bieżących wartości opcji konfiguracji.
SELECT azure_local_ai.get_setting(key TEXT)
Rozszerzenie azure_local_ai obsługuje przeglądanie parametrów konfiguracji puli wątków środowiska uruchomieniowego ONNX w usłudze środowiska uruchomieniowego ONNX. Zmiany nie są obecnie dozwolone. Zobacz Dostrajanie wydajności środowiska uruchomieniowego ONNX.
Argumenty
Klucz
Prawidłowe wartości dla elementu key
to:
intra_op_parallelism
: Ustawia łączną liczbę wątków używanych do równoległości pojedynczego operatora przez pulę wątków środowiska uruchomieniowego ONNX. Domyślnie maksymalizujemy liczbę wątków wewnątrzoperacyjnie, jak to możliwe, ponieważ poprawia ogólną przepływność (domyślnie wszystkie dostępne procesory).inter_op_parallelism
: Ustawia łączną liczbę wątków używanych do przetwarzania wielu operatorów równolegle przez pulę wątków środowiska uruchomieniowego ONNX. Domyślnie ustawiliśmy minimalny możliwy wątek, czyli 1. Zwiększenie często boli wydajność ze względu na częste przełączanie kontekstu między wątkami.spin_control
: przełącza pulę wątków środowiska uruchomieniowego ONNX na potrzeby żądań. Gdy jest wyłączona, zużywa mniej procesora CPU, co powoduje większe opóźnienie. Domyślnie jest ustawiona wartość true (włączona).
Typ zwracany
TEXT
reprezentująca bieżącą wartość wybranego ustawienia.