Generování vektorových vkládání do flexibilního serveru Azure Database for PostgreSQL s místně nasazeným LLM (Preview)
Požadavky
Instance flexibilního serveru Azure Database for PostgreSQL spuštěná na skladové poště optimalizované pro paměť virtuálního počítače. Další informace o virtuálních počítačích optimalizovaných pro paměť Azure najdete tady: Velikosti virtuálních počítačů Azure – Paměť – Azure Virtual Machines
Rozšíření vektoru můžete chtít povolit, protože poskytuje funkce pro ukládání a efektivní indexování vkládání textu do databáze.
Povolení rozšíření
Než budete moct povolit azure_local_ai na instanci flexibilního serveru Azure Database for PostgreSQL, musíte povolit seznam azure_local_ai
povolených rozšíření, jak je popsáno v tématu povolení rozšíření.
Důležité
Hostování jazykových modelů v databázi vyžaduje velké nároky na paměť. Pro podporu tohoto požadavku azure_local_ai
se podporuje pouze u skladových položek virtuálních počítačů Azure optimalizovaných pro paměť s minimálně 4 virtuálními jádry.
Pokud používáte virtuální počítač, který nesplňuje minimální požadavky, azure_local_ai
rozšíření se nezobrazí v seznamu povolených hodnot pro azure.extensions
parametr serveru.
Jakmile je rozšíření na seznamu povolených, můžete postupovat podle pokynů uvedených v tématu vytvoření rozšíření a nainstalovat rozšíření do každé databáze, ze které ho chcete použít.
Poznámka:
Povolením místní umělé inteligence Azure nasadíte do instance flexibilního serveru Azure Database for PostgreSQL vícejazyčný model e5-small . Propojená dokumentace poskytuje licenční podmínky od týmu e5. Další opensourcové modely třetích stran se můžou průběžně zpřístupnit pro instalaci.
Instalace rozšíření azure_local_ai
vytvoří schéma, azure_local_ai
ve kterém rozšíření ukládá tabulky, funkce a všechny ostatní objekty související s SQL, které vyžaduje k implementaci a zveřejnění jeho funkcí.
Důležité
Možná budete chtít povolit vektorové rozšíření, protože je potřeba ukládat vkládání textu do databáze PostgreSQL.
Funkce poskytované rozšířením
Rozšíření azure_local_ai
poskytuje sadu funkcí. Tyto funkce umožňují vytvářet vektorové vkládání z textových dat, což usnadňuje vývoj generovaných aplikací umělé inteligence. Rozšíření nabízí funkce pro vytváření vkládání, získávání nastavení a další funkce. Pomocí těchto funkcí můžete zjednodušit proces vývoje a snížit latenci tím, že eliminujete potřebu dalších vzdálených volání rozhraní API pro modely vkládání AI hostované mimo hranice PostgreSQL.
Schéma | Název | Datový typ výsledku | Datové typy argumentů |
---|---|---|---|
azure_local_ai | create_embeddings | TABLE(embedding real[]) | model_uri text, vstupy[], batch_size bigint DEFAULT 128, timeout_ms celé číslo DEFAULT 3600000 |
azure_local_ai | create_embeddings | real[] | model_uri text, vstupní text, timeout_ms celé číslo VÝCHOZÍ 36000000 |
azure_local_ai | get_setting | jsonb | key text[] DEFAULT ARRAY[]::text[], timeout_ms celé číslo DEFAULT 36000000 |
azure_local_ai | get_setting | text | text klíče, timeout_ms celé číslo DEFAULT 36000000 |
azure_local_ai | model_metadata | jsonb | model_uri text |
Tyto funkce se dají zobrazit pomocí následujícího příkazu meta-command psql:
\df azure_local_ai.*
azure_local_ai.create_embeddings
Rozšíření azure_local_ai
umožňuje vytvářet a aktualizovat vkládání jak ve skalárním, tak dávkovém formátu a vyvolat místně nasazený 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
název modelu vkládání textu vyvolaného k vytvoření vkládání
input
text
nebo text[]
jeden text nebo pole textu v závislosti na přetížení použité funkce, pro kterou se vytvářejí vkládání.
batch_size
bigint DEFAULT 128
počet záznamů, které se mají zpracovat najednou (k dispozici pouze pro přetížení funkce, pro kterou je parametr input
typu text[]
).
timeout_ms
integer DEFAULT 3600000
časový limit v milisekundách, po kterém je operace zastavena.
azure_local_ai.get_setting
Slouží k získání aktuálních hodnot možností konfigurace.
SELECT azure_local_ai.get_setting(key TEXT)
azure_local_ai
podporuje kontrolu parametrů konfigurace fondu vláken modulu runtime ONNX ve službě ONNX Runtime. Změny nejsou v tuto chvíli povoleny. Viz ladění výkonu modulu runtime ONNX.
Argumenty
Klíč
Platné hodnoty jsou:
intra_op_parallelism
: Nastaví celkový počet vláken používaných pro paralelizaci jednoho operátoru podle fondu vláken modulu runtime ONNX. Ve výchozím nastavení maximalizujeme co nejvíce počtu vláken uvnitř operací, protože zvyšuje celkovou propustnost (ve výchozím nastavení všechny dostupné procesory).inter_op_parallelism
: Nastaví celkový počet vláken používaných pro paralelní výpočty více operátorů pomocí fondu vláken modulu runtime ONNX. Ve výchozím nastavení jsme ho nastavili na minimální možné vlákno, což je 1. Zvýšení často snižuje výkon kvůli častým přepínání kontextu mezi vlákny.spin_control
: Pro požadavky se přepíná do fondu vláken modulu runtime ONNX. Pokud je tato možnost zakázaná, využívá méně procesoru a tím způsobí větší latenci. Ve výchozím nastavení je nastavená na true (povoleno).
Návratový typ
TEXT
představuje aktuální hodnotu vybraného nastavení.
Příklady
Vytváření vkládání z existujících textů
Následuje příklad, který můžete použít ve vlastním prostředí k otestování generování vkládání pomocí místně nasazeného modelu vícejazyčného 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.']);
Generování vkládání při vložení nového textu
Následuje příklad, který můžete použít ve vlastním prostředí k otestování generování vkládání pomocí místně nasazeného modelu vícejazyčného 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;
Související obsah
- Integrace flexibilního serveru Azure Database for PostgreSQL s Azure Cognitive Services
- Integrace Azure Database for PostgreSQL se službami Azure Machine Learning Services
- Generování vektorových vkládání pomocí Azure OpenAI na flexibilním serveru Azure Database for PostgreSQL
- Rozšíření Azure AI na flexibilním serveru Azure Database for PostgreSQL
- Generování umělé inteligence s flexibilním serverem Azure Database for PostgreSQL
- Systém doporučení s flexibilním serverem Azure Database for PostgreSQL a Azure OpenAI
- Sémantické vyhledávání s využitím flexibilního serveru Azure Database for PostgreSQL a Azure OpenAI
- Povolení a používání nástroje pgvector na flexibilním serveru Azure Database for PostgreSQL