在 適用於 PostgreSQL 的 Azure 資料庫 中產生向量內嵌 - 具有本機部署 LLM 的彈性伺服器 (預覽)
必要條件
在記憶體最佳化的 VM SKU 上執行的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。 在這裡深入了解 Azure 記憶體最佳化 VM:Azure VM 大小 - 記憶體 - Azure 虛擬機器
您可能會想要啟用 向量 延伸模組,因為它提供功能來儲存和有效率地為資料庫中的文字內嵌編製索引。
啟用 延伸模組
在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例上啟用azure_local_ai之前,您必須先允許列出azure_local_ai
延伸模組,如允許擴充功能中所述。
重要
在資料庫裝載語言模型,需要大量磁碟使用量。 為了支援這項需求,azure_local_ai
只有記憶體優化的 Azure VM SKU 支援至少 4 個虛擬核心。
如果您使用不符合最低需求的 VM, azure_local_ai
擴充功能將不會出現在伺服器參數的允許值 azure.extensions
清單中。
一旦允許加入擴充功能清單,您可以依照建立延伸模組中提供的指示,在您想要使用它的每個資料庫中安裝延伸模組。
注意
啟用 Azure Local AI 會將多語系 e5 小型模型部署到您的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 連結的文件提供 e5 小組的授權條款。 其他第三方開放原始碼模型可能持續可供安裝。
安裝延伸模組 azure_local_ai
會建立稱為 azure_local_ai
的架構,此架構會儲存數據表、函式,以及它需要實作並公開其功能的任何其他 SQL 相關物件。
重要
您可能想要啟用 向量延伸模組,因為您必須在PostgreSQL資料庫中儲存文字內嵌。
延伸模組所提供的函式
延伸 azure_local_ai
模組提供一組函式。 這些函式可讓您從文字資料建立向量內嵌,讓您更輕鬆地開發生成式 AI 應用程式。 此延伸模組提供用來建立內嵌、取得設定等功能的函式。 藉由使用這些函式,您可以簡化開發流程,並不需要對裝載於 PostgreSQL 界限外的 AI 內嵌模型進行額外的遠端 API 呼叫,以減少延遲。
結構描述 | 名稱 | 結果資料類型 | 引數資料類型 |
---|---|---|---|
azure_local_ai | create_embeddings | TABLE (內嵌 real[]) | model_uri 文字、輸入文字[]、batch_size bigint DEFAULT 128、timeout_ms 整數 DEFAULT 3600000 |
azure_local_ai | create_embeddings | real[] | model_uri 文字、輸入文字、timeout_ms 整數 DEFAULT 3600000 |
azure_local_ai | get_setting | jsonb | keys text[] DEFAULT ARRAY[]:: text[], timeout_ms 整數 DEFAULT 36000000 |
azure_local_ai | get_setting | text | 索引鍵文字,timeout_ms 整數 DEFAULT 3600000 |
azure_local_ai | model_metadata | jsonb | model_uri 文字 |
您可以使用下列 psql 中繼命令來顯示這些函式:
\df azure_local_ai.*
azure_local_ai.create_embeddings
延伸 azure_local_ai
模組可讓您建立及更新純量和批次格式的內嵌,並叫用本機部署的 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);
引數
model_uri
叫用文字內嵌模型 text
名稱,以建立內嵌。
input
text
或 text[]
單一文字或文字陣列,視用來建立內嵌的函式多載而定。
batch_size
一次要處理的 bigint DEFAULT 128
記錄數目 (僅適用於參數 input
屬於 text[]
型別之函式的多載)。
timeout_ms
作業停止之前的 integer DEFAULT 3600000
逾時 (以毫秒為單位)。
azure_local_ai.get_setting
用來取得設定選項目前的值。
SELECT azure_local_ai.get_setting(key TEXT)
azure_local_ai
支援在 ONNX 執行時間服務內檢閱 ONNX 運行時間線程集區的組態參數。 目前不允許變更。 請參閱 ONNX 執行階段效能微調。
引數
機碼
有效值為:
intra_op_parallelism
:設定 ONNX Runtime 執行階段執行緒集區用於平行處理單一運算子的執行緒總數。 根據預設,我們會儘可能將內部作業執行緒數目最大化,以大幅改善整體輸送量 (預設所有可用的 CPU)。inter_op_parallelism
:設定 ONNX 執行階段執行緒集區平行計算多個運算子所使用的執行緒總數。 根據預設,我們會將它設定為可能的執行緒最小值,也就是 1。 增加這個值通常會因為執行緒之間頻繁的環境切換而造成效能降低。spin_control
:為要求切換 ONNX 執行階段執行緒集區旋轉。 停用時,它使用的 CPU 減少,因而造成進一步延遲。 根據預設,它會設定為 true (已啟用)。
傳回類型
TEXT
代表所選設定目前的值。
範例
從現有文字建立內嵌
以下是一個範例,可用於您自己的環境中,以使用本機部署的多語-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.']);
在插入新文字時產生內嵌
以下是一個範例,可用於您自己的環境中,以使用本機部署的多語-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;
相關內容
- 整合 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器與 Azure 認知服務。
- 整合 適用於 PostgreSQL 的 Azure 資料庫 與 Azure 機器學習 Services。
- 在 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中使用 Azure OpenAI 產生向量內嵌。
- 適用於 PostgreSQL 的 Azure 資料庫 中的 Azure AI 擴充功能 - 彈性伺服器。
- 具有 適用於 PostgreSQL 的 Azure 資料庫 的 Generative AI - 彈性伺服器。
- 具有 適用於 PostgreSQL 的 Azure 資料庫 的建議系統 - 彈性伺服器和 Azure OpenAI。
- 具有 適用於 PostgreSQL 的 Azure 資料庫 的語意搜尋 - 彈性伺服器和 Azure OpenAI。
- 在 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中啟用及使用 pgvector。