Generování vektorových vkládání pomocí azure_local_ai na flexibilním serveru Azure Database for PostgreSQL (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
Povolte následující rozšíření:
azure_local_ai
Další informace o povolení rozšíření na flexibilním serveru Azure Database for PostgreSQL najdete v tématu Povolení rozšíření ve službě Azure Database for PostgreSQL.
Poznámka:
Povolením verze Azure Local AI Preview 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.
Funkce poskytované rozšířením azure_local_ai
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 |
Ty se dají zobrazit pomocí příkazu 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.
Použití azure_local_ai a místně nasazeného vícejazyčného modelu e5-small k vytvoření vložených objektů a jejich uložení jako vektorů
Níže jsou uvedené příklady, 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 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.']);
Aktualizace vkládání při vložení
Níže jsou uvedené příklady, 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.
-- 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;
Konfigurace modulu runtime ONNX
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)
Rozšíření 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 pro následující key
hodnoty:
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í.