Sdílet prostřednictvím


Generování vektorových vkládání pomocí azure_local_ai na flexibilním serveru Azure Database for PostgreSQL (Preview)

Požadavky

  1. 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

  2. Povolte následující rozšíření:

    1. vektor

    2. 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í.