Generieren von Vektoreinbettungen in Azure Database for PostgreSQL – Flexibler Server mit lokal bereitgestelltem LLM (Vorschau)
Voraussetzungen
Eine Instanz von Azure Database for PostgreSQL – Flexibler Server auf einer arbeitsspeicheroptimierten VM-SKU. Hier erfahren Sie mehr über arbeitsspeicheroptimierte Azure-VMs: Azure-VM-Größen – Arbeitsspeicher – Azure Virtual Machines
Möglicherweise möchten Sie die Vektorerweiterung aktivieren, da sie Funktionen zum Speichern und effizienten Indizieren von Texteinbettungen in Ihrer Datenbank ermöglicht.
Aktivieren der Erweiterung:
Bevor Sie azure_local_ai auf Ihrer flexiblen Serverinstanz in Azure Database for PostgreSQL aktivieren können, müssen Sie die Erweiterung azure_local_ai
zulassen, wie unter Zulassen einer Erweiterung beschrieben.
Wichtig
Das Hosten von Sprachmodellen in der Datenbank erfordert einen großen Speicherbedarf. Um diese Anforderung zu erfüllen, wird azure_local_ai
nur für speicheroptimierte Azure-VM-SKUs mit mindestens 4 vCores unterstützt.
Wenn Sie einen virtuellen Computer verwenden, der die Mindestanforderungen nicht erfüllt, wird die Erweiterung azure_local_ai
nicht in der Liste der erlaubten Werte für die azure.extensions
-Serverparameter angezeigt.
Sobald die Erweiterung zugelassen wurde, können Sie die Anweisungen unter Erstellen von Erweiterungen befolgen, um die Erweiterung in jeder Datenbank zu installieren, von wo aus Sie sie verwenden möchten.
Hinweis
Durch Aktivieren der KI von Azure Local wird das Modell multilingual-e5-small in Ihrer Instanz von Azure Database for PostgreSQL – Flexibler Server bereitgestellt. Die verknüpfte Dokumentation enthält Lizenzbedingungen des e5-Teams. Möglicherweise werden kontinuierlich zusätzliche Open-Source-Modelle von Drittanbietern für die Installation zur Verfügung gestellt.
Durch die Installation der Erweiterung azure_local_ai
wird das Schema azure_local_ai
erstellt, in dem die Erweiterung Tabellen, Funktionen und alle anderen SQL-bezogenen Objekte speichert, die zum Implementieren und Verfügbarmachen ihrer Funktionalität erforderlich sind.
Wichtig
Sie sollten die Vektorerweiterung aktivieren, da sie zum Speichern von Texteinbettungen in Ihrer PostgreSQL-Datenbank erforderlich ist.
Von der Erweiterung bereitgestellte Funktionen
Die Erweiterung azure_local_ai
stellt eine Reihe von Funktionen bereit. Mit diesen Funktionen können Sie Vektoreinbettungen aus Textdaten erstellen und dadurch die Entwicklung generativer KI-Anwendungen vereinfachen. Die Erweiterung bietet Funktionen zum Erstellen von Einbettungen, zum Abrufen von Einstellungen und vieles mehr. Mithilfe dieser Funktionen können Sie den Entwicklungsprozess vereinfachen und die Wartezeit reduzieren, da keine zusätzlichen Remote-API-Aufrufe von KI-Einbettungsmodellen mehr erforderlich sind, die außerhalb der PostgreSQL-Grenze gehostet werden.
Schema | Name | Ergebnisdatentyp | Argumentdatentypen |
---|---|---|---|
azure_local_ai | create_embeddings | TABLE(embedding real[]) | model_uri text, inputs text[], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | create_embeddings | real[] | model_uri text, input text, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | get_setting | jsonb | keys text[] DEFAULT ARRAY[]::text[], timeout_ms integer DEFAULT 3600000 |
azure_local_ai | get_setting | Text | key text, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | model_metadata | jsonb | model_uri text |
Diese Funktionen können mithilfe des folgenden psql meta-Befehls angezeigt werden:
\df azure_local_ai.*
azure_local_ai.create_embeddings
Mit der Erweiterung azure_local_ai
können Sie Einbettungen sowohl im Skalar- als auch im Batchformat erstellen und aktualisieren und so das lokal bereitgestellte LLM aufrufen.
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);
Argumente
model_uri
text
: Name des Texteinbettungsmodells, das zum Erstellen der Einbettung aufgerufen wird.
input
text
oder text[]
einzelner Text oder ein Array von Texten, abhängig von der Überladung der verwendeten Funktion, für die Einbettungen erstellt werden.
batch_size
bigint DEFAULT 128
Anzahl der Datensätze, die gleichzeitig verarbeitet werden sollen (nur für die Überladung der Funktion verfügbar, für die der Parameter input
vom Typ text[]
ist).
timeout_ms
integer DEFAULT 3600000
Timeout in Millisekunden, nach dem der Vorgang beendet wird.
azure_local_ai.get_setting
Wird verwendet, um aktuelle Werte von Konfigurationsoptionen abzurufen.
SELECT azure_local_ai.get_setting(key TEXT)
azure_local_ai
unterstützt die Überprüfung der Konfigurationsparameter des ONNX-Laufzeitthreadpools innerhalb des ONNX-Laufzeitdiensts. Änderungen sind zu diesem Zeitpunkt nicht zulässig. Siehe Optimierung der ONNX-Laufzeitleistung.
Argumente
Schlüssel
Gültige Werte sind:
intra_op_parallelism
: Legt die Gesamtanzahl der Threads fest, die für die Parallelisierung des einzelnen Operators durch den ONNX-Laufzeitthreadpool verwendet werden. Standardmäßig maximieren wir die Anzahl der internen Vorgangsthreads so weit wie möglich, da dies den Gesamtdurchsatz erheblich verbessert (standardmäßig alle verfügbaren CPUs).inter_op_parallelism
: Legt die Gesamtanzahl der Threads fest, die für das Berechnen mehrerer Operatoren parallel von ONNX-Runtime-Threadpool verwendet werden. Standardmäßig legen wir ihn auf den minimal möglichen Thread fest, d. h. 1. Die Erhöhung dieses Werts beeinträchtigt aufgrund häufiger Kontextwechsel zwischen Threads häufig die Leistung.spin_control
: Schaltet Spinvorgänge des ONNX-Laufzeitthreadpools für Anforderungen um. Wenn diese Option deaktiviert ist, verwendet sie weniger CPU und verursacht daher eine höhere Wartezeit. Sie ist standardmäßig auf „true“ (aktiviert) festgelegt.
Rückgabetyp
TEXT
stellt den aktuellen Wert der ausgewählten Einstellung dar.
Beispiele
Erstellen von Einbettungen aus vorhandenen Texten
Im Folgenden finden Sie ein Beispiel, das in Ihrer eigenen Umgebung verwendet werden kann, um die Einbettungsgenerierung mit dem lokal bereitgestellten multilingual-e5-Modell zu testen.
-- 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.']);
Erstellen von Einbettungen beim Einfügen von neuem Text
Im Folgenden finden Sie ein Beispiel, das in Ihrer eigenen Umgebung verwendet werden kann, um die Einbettungsgenerierung mit dem lokal bereitgestellten multilingual-e5-Modell zu testen.
-- 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;
Zugehöriger Inhalt
- Integrieren der Azure Database for PostgreSQL – Flexible Server in Azure Cognitive Services.
- Integrieren von Azure Database for PostgreSQL mit Azure Machine Learning Services.
- Generieren von Vektoreinbettungen mit Azure OpenAI in Azure Database for PostgreSQL – Flexible Server.
- Azure KI-Erweiterungen in Azure Database for PostgreSQL – Flexible Server.
- Generative KI mit Azure Database for PostgreSQL – Flexibler Server.
- Empfehlungssystem bei Azure Database for PostgreSQL – Flexibler Server und Azure OpenAI.
- Semantische Suche mit Azure Database for PostgreSQL – Flexibler Server und Azure OpenAI.
- Aktivieren und Verwenden von pgvector in Azure Database for PostgreSQL – Flexibler Server.