Generowanie osadzania wektorów w usłudze Azure Database for PostgreSQL — serwer elastyczny z lokalnie wdrożonym rozwiązaniem LLM (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
Możesz włączyć rozszerzenie wektora, ponieważ zapewnia funkcje przechowywania i efektywnego indeksowania osadzania tekstu w bazie danych.
Włączanie rozszerzenia
Aby włączyć azure_local_ai w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL, musisz zezwolić na listę azure_local_ai
rozszerzeń zgodnie z opisem w artykule Zezwalaj na rozszerzenie.
Ważne
Hostowanie modeli językowych w bazie danych wymaga dużego zużycia pamięci. Aby zapewnić obsługę tego wymagania, azure_local_ai
jest obsługiwana tylko w jednostkach SKU maszyn wirtualnych platformy Azure zoptymalizowanych pod kątem pamięci z co najmniej 4 rdzeniami wirtualnymi.
Jeśli używasz maszyny wirtualnej, która nie spełnia minimalnych wymagań, azure_local_ai
rozszerzenie nie będzie wyświetlane na liście dozwolonych wartości parametru azure.extensions
serwera.
Po udostępnieniu rozszerzenia możesz postępować zgodnie z instrukcjami podanymi w artykule tworzenie rozszerzeń , aby zainstalować rozszerzenie w każdej bazie danych, z której ma być używany.
Uwaga
Włączenie lokalnej sztucznej inteligencji platformy Azure 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.
Zainstalowanie rozszerzenia azure_local_ai
tworzy schemat o nazwie azure_local_ai
, w którym rozszerzenie przechowuje tabele, funkcje i wszelkie inne obiekty związane z programem SQL, których wymaga zaimplementowania i uwidocznienia jego funkcjonalności.
Ważne
Możesz włączyć rozszerzenie wektora, ponieważ jest wymagane do przechowywania osadzania tekstu w bazie danych PostgreSQL.
Funkcje udostępniane przez rozszerzenie
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 |
Te funkcje można wyświetlić przy użyciu następującego polecenia psql meta-command:
\df azure_local_ai.*
azure_local_ai.create_embeddings
azure_local_ai
Rozszerzenie umożliwia tworzenie i aktualizowanie osadzania zarówno w formacie skalarnym, jak i wsadowym, wywołując lokalnie wdrożone rozwiązanie 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.
azure_local_ai.get_setting
Służy do uzyskiwania bieżących wartości opcji konfiguracji.
SELECT azure_local_ai.get_setting(key TEXT)
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 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.
Przykłady
Tworzenie osadzania na podstawie istniejących tekstów
Poniżej przedstawiono przykład, który może być używany we własnym środowisku do testowania generowania osadzania przy użyciu lokalnie wdrożonego wielojęzycznego modelu e5.
-- 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.']);
Generowanie osadzania podczas wstawiania nowego tekstu
Poniżej przedstawiono przykład, który może być używany we własnym środowisku do testowania generowania osadzania przy użyciu lokalnie wdrożonego wielojęzycznego modelu e5.
-- 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;
Powiązana zawartość
- Integracja usługi Azure Database for PostgreSQL — serwer elastyczny z usługami Azure Cognitive Services.
- Integracja usługi Azure Database for PostgreSQL z usługami Azure Machine Learning Services.
- Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Rozszerzenie usługi Azure AI w usłudze Azure Database for PostgreSQL — serwer elastyczny.
- Generowanie sztucznej inteligencji za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny.
- System rekomendacji z usługą Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Wyszukiwanie semantyczne za pomocą usługi Azure Database for PostgreSQL — serwer elastyczny i usługa Azure OpenAI.
- Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL — serwer elastyczny.