Создание векторных внедрения в База данных Azure для PostgreSQL — гибкий сервер с локальным развертыванием LLM (предварительная версия)
Необходимые компоненты
Экземпляр гибкого сервера База данных Azure для PostgreSQL, работающий на SKU оптимизированной для памяти виртуальной машины. Дополнительные сведения о оптимизированных для памяти виртуальных машинах Azure: размеры виртуальных машин Azure — память — Azure Виртуальные машины
Возможно, вы хотите включить расширение вектора, так как оно предоставляет функциональные возможности для хранения и эффективного индексирования текста внедрения текста в базу данных.
Включение расширения
Прежде чем включить azure_local_ai на База данных Azure для PostgreSQL гибком экземпляре сервера, необходимо включить список расширенийazure_local_ai
, как описано в разделе "Разрешить расширение".
Внимание
Для размещения языковых моделей в базе данных требуется большой объем памяти. Для поддержки этого требования поддерживается только в номерах SKU виртуальных машин Azure, azure_local_ai
оптимизированных для памяти, не менее 4 виртуальных ядер.
Если вы используете виртуальную машину, которая не соответствует минимальным требованиям, azure_local_ai
расширение не будет отображаться в списке разрешенных значений для azure.extensions
параметра сервера.
После включения расширения можно следовать инструкциям, приведенным в разделе "Создание расширений ", чтобы установить расширение в каждой базе данных, из которой вы хотите использовать его.
Примечание.
Включение Локального искусственного интеллекта Azure развернет модель с многоязычным e5-small в экземпляре гибкого сервера База данных Azure для PostgreSQL. Связанная документация предоставляет условия лицензирования от команды e5. Дополнительные сторонние модели с открытым исходным кодом могут стать доступными для установки на постоянной основе.
При установке расширения создается схемаazure_local_ai
, в которой расширение azure_local_ai
хранит таблицы, функции и любые другие объекты, связанные с SQL, необходимые для реализации и предоставления его функциональных возможностей.
Внимание
Возможно, вы хотите включить расширение вектора, так как оно требуется для хранения вставок текста в базу данных PostgreSQL.
Функции, предоставляемые расширением
Расширение azure_local_ai
предоставляет набор функций. Эти функции позволяют создавать векторные внедрения из текстовых данных, что упрощает разработку создаваемых приложений ИИ. Расширение предлагает функции для создания внедрения, получения параметров и т. д. С помощью этих функций можно упростить процесс разработки и уменьшить задержку, устраняя необходимость дополнительных удаленных вызовов API для моделей внедрения ИИ, размещенных за пределами границы PostgreSQL.
Схема | Имя. | Тип результирующих данных | Типы данных аргументов |
---|---|---|---|
azure_local_ai | create_embeddings | TABLE(внедрение real[]) | model_uri текст, входной текст[], batch_size bigint DEFAULT 128, timeout_ms целочисленное значение DEFAULT 36000000 |
azure_local_ai | create_embeddings | real[] | model_uri текст, входной текст, timeout_ms целочисленное значение DEFAULT 36000000 |
azure_local_ai | get_setting | jsonb | текст ключей[] МАССИВ ПО УМОЛЧАНИЮ[]::text[], timeout_ms целое число DEFAULT 36000000 |
azure_local_ai | get_setting | text | текст ключа, timeout_ms целое число DEFAULT 36000000 |
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. По умолчанию мы максимально увеличим количество потоков внутри операций, так как это повышает общую пропускную способность (все доступные ЦП по умолчанию).inter_op_parallelism
: задает общее количество потоков, используемых для вычислений нескольких операторов параллельно с пулом потоков среды выполнения ONNX. По умолчанию мы устанавливаем минимально возможный поток, равный 1. Увеличение часто повреждает производительность из-за частых переключений контекста между потоками.spin_control
: переключает спиннинг пула потоков среды выполнения ONNX для запросов. При отключении он использует меньше ЦП и, следовательно, приводит к большей задержке. По умолчанию оно имеет значение 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;
Связанный контент
- Интеграция База данных Azure для PostgreSQL — гибкий сервер с Azure Cognitive Services.
- Интеграция База данных Azure для PostgreSQL с службами Машинное обучение Azure.
- Создание векторных внедрения с помощью Azure OpenAI в База данных Azure для PostgreSQL — гибкий сервер.
- Расширение ИИ Azure в База данных Azure для PostgreSQL — гибкий сервер.
- Создание искусственного интеллекта с помощью База данных Azure для PostgreSQL — гибкий сервер.
- Система рекомендаций с База данных Azure для PostgreSQL — гибкий сервер и Azure OpenAI.
- Семантический поиск с помощью База данных Azure для PostgreSQL — гибкий сервер и Azure OpenAI.
- Включите и используйте pgvector в База данных Azure для PostgreSQL — гибкий сервер.