로컬로 배포된 LLM을 사용하여 Azure Database for PostgreSQL - 유연한 서버에서 벡터 포함 생성(미리 보기)
필수 조건
메모리 최적화 VM SKU에서 실행되는 Azure Database for PostgreSQL 유연한 서버 인스턴스입니다. Azure 메모리 최적화 VM에 대한 자세한 내용은 Azure VM 크기 - 메모리 - Azure Virtual Machines를 참조하세요.
데이터베이스에 텍스트 포함을 저장하고 효율적으로 인덱싱하는 기능을 제공하므로 벡터 확장을 사용하도록 설정할 수 있습니다.
확장 사용
Azure Database for PostgreSQL 유연한 서버 인스턴스에서 azure_local_ai 사용하도록 설정하려면 확장 허용에 설명된 대로 확장을 허용 목록에 azure_local_ai
추가해야 합니다.
Important
데이터베이스에 언어 모델을 호스트하려면 메모리 공간이 많이 필요합니다. 이 요구 사항을 azure_local_ai
지원하기 위해 최소 4개의 vCore를 사용하는 메모리 최적화 Azure VM SKU에서만 지원됩니다.
최소 요구 사항을 azure_local_ai
충족하지 않는 VM을 사용하는 경우 서버 매개 변수에 허용되는 값 목록에 확장이 azure.extensions
표시되지 않습니다.
확장이 허용 목록에 추가되면 확장 만들기에 제공된 지침에 따라 확장을 사용하려는 각 데이터베이스에 확장을 설치할 수 있습니다.
참고 항목
Azure 로컬 AI를 사용하도록 설정하면 Azure Database for PostgreSQL 유연한 서버 인스턴스에 다국어-e5-small 모델이 배포됩니다. 연결된 설명서에는 e5 팀의 라이선스 조건이 나와 있습니다. 추가 타사 오픈 소스 모델을 지속적으로 설치할 수 있게 될 수 있습니다.
확장을 설치하면 확장 azure_local_ai
에서 해당 기능을 구현하고 노출하는 데 필요한 테이블, 함수 및 기타 SQL 관련 개체를 저장하는 스키마가 생성 azure_local_ai
됩니다.
Important
PostgreSQL 데이터베이스에 텍스트 포함을 저장하는 데 필요하므로 벡터 확장을 사용하도록 설정할 수 있습니다.
확장에서 제공하는 함수
확장은 azure_local_ai
함수 집합을 제공합니다. 이러한 함수를 사용하면 텍스트 데이터에서 벡터 포함을 만들 수 있으므로 생성형 AI 애플리케이션을 더 쉽게 개발할 수 있습니다. 확장은 포함 만들기, 설정 가져오기 등을 위한 함수를 제공합니다. 이러한 함수를 사용하면 PostgreSQL 경계 외부에서 호스트되는 AI 포함 모델에 대한 추가 원격 API 호출의 필요성을 제거하여 개발 프로세스를 간소화하고 대기 시간을 줄일 수 있습니다.
스키마 | 속성 | 결과 데이터 형식 | 인수 데이터 형식 |
---|---|---|---|
azure_local_ai | create_embeddings | TABLE(embedding real[]) | model_uri text, inputs text[], batch_size bigint DEFAULT 128, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | create_embeddings | real[] | model_uri text, input text, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | get_setting | jsonb | keys text[] DEFAULT ARRAY[]::text[], timeout_ms integer DEFAULT 3600000 |
azure_local_ai | get_setting | text | key text, timeout_ms integer DEFAULT 3600000 |
azure_local_ai | model_metadata | jsonb | model_uri text |
이러한 함수는 다음 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 런타임 스레드 풀에서 단일 연산자를 병렬화하는 데 사용되는 총 스레드 수를 설정합니다. 기본적으로 전체 처리량(기본적으로 사용 가능한 모든 cpu)을 향상할 수 있도록 가능한 한 인트라 ops 스레드 수를 최대화합니다.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;
관련 콘텐츠
- Azure Database for PostgreSQL - 유연한 서버를 Azure Cognitive Services와 통합합니다.
- Azure Database for PostgreSQL을 Azure Machine Learning Services와 통합합니다.
- Azure Database for PostgreSQL - 유연한 서버에서 Azure OpenAI를 사용하여 벡터 포함을 생성합니다.
- Azure Database for PostgreSQL - 유연한 서버의 Azure AI 확장
- Azure Database for PostgreSQL - 유연한 서버를 사용하는 생성 AI.
- Azure Database for PostgreSQL - 유연한 서버 및 Azure OpenAI를 사용하는 권장 사항 시스템입니다.
- Azure Database for PostgreSQL - 유연한 서버 및 Azure OpenAI를 사용한 의미 체계 검색
- Azure Database for PostgreSQL - 유연한 서버에서 pgvector를 사용하도록 설정하고 사용합니다.