AI 프레임워크를 사용하여 지능형 애플리케이션 개발
프로덕션 지원 AI 애플리케이션을 빌드하려면 AI 기능 이상이 필요합니다. 즉, 실시간 데이터 스트리밍, 자연어 인터페이스, 개발자 생산성 도구 및 클라우드 통합을 포괄하는 접근 방식이 필요합니다. SQL Server 2025 는 온-프레미스 배포에서 클라우드 네이티브 아키텍처로 확장되는 애플리케이션을 개발하기 위한 플랫폼을 제공합니다.
이 통합 접근 방식은 보안, 성능 및 안정성을 위해 엔터프라이즈 기능을 사용하는 동안 도구 및 프레임워크를 사용하여 AI 애플리케이션을 빌드할 수 있습니다. 실시간 추천 엔진, 대화형 AI 도우미 또는 AI 인사이트로 구동되는 분석 대시보드를 빌드하는 경우 SQL Server 2025는 필요한 기반을 제공합니다.
대화형 AI 인터페이스 빌드
자연어 인터페이스를 사용하면 SQL 지식이나 기술 전문 지식 없이도 엔터프라이즈 데이터에 액세스할 수 있습니다.
대화형 쿼리 패턴 디자인
대화형 쿼리 패턴을 사용하면 사용자가 GPT-4와 같은 AI 모델을 사용하여 쿼리를 SQL로 변환하여 자연어로 질문을 하고 데이터 기반 답변을 받을 수 있습니다.
SQL에 자연어 구현(NL2SQL) 기능:
-- Create a stored procedure that interprets natural language queries
CREATE PROCEDURE sp_ConversationalQuery
@user_question NVARCHAR(MAX),
@context NVARCHAR(MAX) OUTPUT,
@sql_query NVARCHAR(MAX) OUTPUT
AS
BEGIN
-- Build a prompt for the AI model to generate SQL
DECLARE @prompt NVARCHAR(MAX) = CONCAT(
'You are a SQL expert. Given the following database schema and user question, generate a SQL query.',
CHAR(10), CHAR(10),
'Schema:', CHAR(10),
'products (product_id INT, product_name NVARCHAR(100), price DECIMAL(10,2), category NVARCHAR(50))',
CHAR(10),
'sales (sale_id INT, product_id INT, quantity INT, sale_date DATE)',
CHAR(10), CHAR(10),
'Question: ', @user_question,
CHAR(10),
'Generate only the SQL query, no explanations.'
);
-- Call GPT-4 to generate SQL
DECLARE @request NVARCHAR(MAX) = JSON_OBJECT(
'messages': JSON_ARRAY(
JSON_OBJECT('role': 'system', 'content': 'You are a SQL query generator.'),
JSON_OBJECT('role': 'user', 'content': @prompt)
),
'max_tokens': 500
);
DECLARE @response NVARCHAR(MAX);
EXEC sp_invoke_external_rest_endpoint
@url = N'https://myopenai.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-02-15-preview',
@method = 'POST',
@credential = [MyAzureOpenAICredential],
@payload = @request,
@response = @response OUTPUT;
-- Extract the generated SQL
SET @sql_query = JSON_VALUE(@response, '$.result.choices[0].message.content');
SET @context = 'Query generated successfully';
END;
이 저장 프로시저 는 GPT-4를 사용하여 자연어 질문을 SQL 쿼리로 변환하여 데이터에 대한 대화형 액세스를 가능하게 합니다.
안전 가드레일 구현
안전 보호책은 AI에서 생성된 SQL 쿼리가 데이터 삭제 또는 수정과 같은 잘못된 작업을 수행하지 못하게 하여 데이터베이스에 대한 읽기 전용 액세스만 보장합니다.
생성된 SQL이 안전한지 확인하기 위한 유효성 검사를 추가합니다.
CREATE PROCEDURE sp_SafeConversationalQuery
@user_question NVARCHAR(MAX),
@results NVARCHAR(MAX) OUTPUT
AS
BEGIN
DECLARE @sql_query NVARCHAR(MAX);
DECLARE @context NVARCHAR(MAX);
-- Generate SQL from natural language
EXEC sp_ConversationalQuery @user_question, @context OUTPUT, @sql_query OUTPUT;
-- Validate the generated SQL
IF @sql_query LIKE '%DROP%'
OR @sql_query LIKE '%DELETE%'
OR @sql_query LIKE '%UPDATE%'
OR @sql_query LIKE '%INSERT%'
OR @sql_query LIKE '%ALTER%'
OR @sql_query LIKE '%CREATE%'
BEGIN
SET @results = JSON_OBJECT('error': 'Generated query contains potentially unsafe operations');
RETURN;
END;
-- Execute the query safely (read-only)
BEGIN TRY
EXEC sp_executesql @sql_query;
END TRY
BEGIN CATCH
SET @results = JSON_OBJECT(
'error': ERROR_MESSAGE(),
'query': @sql_query
);
END CATCH;
END;
이 래퍼는 파괴적인 작업을 방지하기 위해 보안 검사를 추가하여 사용자가 데이터를 쿼리할 수 있지만 수정할 수는 없도록 합니다.
다중 턴 대화 구성하기
다중 턴 대화를 통해 사용자는 대화 기록을 유지하며, 컨텍스트를 반복하지 않고 후속 질문을 할 수 있도록 설정하여 데이터와 자연스럽고 상황에 맞는 대화를 나눌 수 있습니다.
다음 예제에서는 여러 상호 작용 간에 컨텍스트를 유지 관리하는 대화형 AI를 빌드하여 후속 질문과 데이터와의 자연스러운 대화를 가능하게 합니다.
CREATE TABLE conversation_history (
conversation_id UNIQUEIDENTIFIER DEFAULT NEWID(),
user_id NVARCHAR(100),
turn_number INT,
user_message NVARCHAR(MAX),
assistant_message NVARCHAR(MAX),
timestamp DATETIME2 DEFAULT GETDATE(),
PRIMARY KEY (conversation_id, turn_number)
);
CREATE PROCEDURE sp_ConversationalChat
@conversation_id UNIQUEIDENTIFIER,
@user_id NVARCHAR(100),
@user_message NVARCHAR(MAX),
@response NVARCHAR(MAX) OUTPUT
AS
BEGIN
-- Get conversation history
DECLARE @history NVARCHAR(MAX);
SELECT @history = STRING_AGG(
JSON_OBJECT(
'role': CASE WHEN turn_number % 2 = 1 THEN 'user' ELSE 'assistant' END,
'content': CASE WHEN turn_number % 2 = 1 THEN user_message ELSE assistant_message END
),
','
)
FROM conversation_history
WHERE conversation_id = @conversation_id
ORDER BY turn_number;
-- Build messages array with history
DECLARE @messages NVARCHAR(MAX) = CONCAT('[', @history, ',',
JSON_OBJECT('role': 'user', 'content': @user_message), ']');
-- Call GPT-4 with conversation context
DECLARE @chat_request NVARCHAR(MAX) = JSON_OBJECT('messages': @messages);
EXEC sp_invoke_external_rest_endpoint
@url = N'https://myopenai.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-02-15-preview',
@method = 'POST',
@credential = [MyAzureOpenAICredential],
@payload = @chat_request,
@response = @response OUTPUT;
-- Extract and store the response
DECLARE @assistant_response NVARCHAR(MAX) = JSON_VALUE(@response, '$.result.choices[0].message.content');
-- Save to conversation history
DECLARE @next_turn INT = (SELECT ISNULL(MAX(turn_number), 0) + 1 FROM conversation_history WHERE conversation_id = @conversation_id);
INSERT INTO conversation_history (conversation_id, user_id, turn_number, user_message, assistant_message)
VALUES (@conversation_id, @user_id, @next_turn, @user_message, @assistant_response);
SET @response = @assistant_response;
END;
AI 도구를 사용하여 개발자 생산성 향상
SQL Server 2025는 최신 개발 도구와 통합하여 AI 애플리케이션 개발을 가속화합니다.
GitHub Copilot와 함께 Visual Studio Code용 MSSQL 확장 사용
Visual Studio Code용 MSSQL 확장에는 GitHub Copilot 통합이 포함되어 있으며, 데이터베이스 개발을 위한 AI 기반 지원을 제공합니다.
비고
MSSQL 확장과 GitHub Copilot 통합은 현재 미리 보기로 제공됩니다. 기능 및 기능이 변경될 수 있습니다. 최신 정보는 MSSQL 확장 설명서를 참조하세요.
GitHub Copilot 통합은 데이터베이스 개발 작업에 대한 코드 지원을 제공합니다.
- 쿼리 생성: 자연어로 원하는 것을 설명하고 T-SQL 코드를 가져옵니다.
- 쿼리 최적화: 쿼리 성능 향상을 위한 제안 가져오기
- 스키마 탐색: 데이터베이스 스키마에 대한 질문하기
- 마이그레이션 지원: 스키마 변경 및 데이터 마이그레이션을 위한 스크립트 생성
- 설명: AI 생성 설명을 사용하여 복잡한 쿼리 이해
다음 예제에서는 GitHub Copilot 가 자연어 주석에서 전체 저장 프로시저를 생성하는 방법을 보여 줍니다.
-- Type a comment describing what you want
-- Generate a stored procedure that finds products similar to a given product using vector search
-- GitHub Copilot suggests:
CREATE PROCEDURE sp_FindSimilarProducts
@product_id INT,
@top_n INT = 5
AS
BEGIN
DECLARE @query_embedding VECTOR(1536);
-- Get the embedding of the reference product
SELECT @query_embedding = embedding
FROM products
WHERE product_id = @product_id;
-- Find similar products
SELECT TOP (@top_n)
product_id,
product_name,
category,
price,
VECTOR_DISTANCE('cosine', @query_embedding, embedding) AS similarity_score
FROM products
WHERE product_id != @product_id
ORDER BY similarity_score;
END;
AI 기능과 함께 Entity Framework Core 사용
Entity Framework Core 를 사용하여 SQL Server를 사용하여 AI 애플리케이션을 빌드할 수 있습니다. 원시 SQL 쿼리를 사용하여 SQL Server의 VECTOR 데이터 형식 및 AI 함수를 사용할 수 있습니다.
Entity Framework Core는 VECTOR 데이터 형식을 기본적으로 지원하지 않으므로 이 예제에서는 EF Core의 비동기 작업 및 개체 매핑의 이점을 활용하면서 T-SQL을 직접 실행하는 데 사용합니다 FromSqlRaw . 메서드는 쿼리 임베딩을 JSON으로 직렬화하고 VECTOR_DISTANCE을(를) 사용하여 벡터 유사성 검색을 실행한 다음, 유사한 임베딩을 가진 제품을 반환합니다. 이 메서드는 추천 시스템 및 의미 검색에 이상적입니다.
using Microsoft.EntityFrameworkCore;
using System.Text.Json;
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
// Query with vector similarity using raw SQL
public async Task<List<Product>> FindSimilarProducts(float[] queryEmbedding, int topN = 5)
{
var embeddingJson = JsonSerializer.Serialize(queryEmbedding);
var similarProducts = await _context.Products
.FromSqlRaw(@"
SELECT TOP {0}
product_id,
product_name,
description,
price
FROM products
WHERE VECTOR_DISTANCE('cosine', CAST({1} AS VECTOR(1536)), embedding) < 0.5
ORDER BY VECTOR_DISTANCE('cosine', CAST({1} AS VECTOR(1536)), embedding)
", topN, embeddingJson)
.ToListAsync();
return similarProducts;
}
Microsoft Fabric과 통합
Microsoft Fabric 은 SQL Server의 AI 기능을 보완하는 통합 분석 플랫폼을 제공합니다. SQL Server 2025는 Microsoft Fabric에 대한 데이터베이스 미러링을 지원하므로 기존 ETL 파이프라인의 복잡성 없이 운영 데이터를 거의 실시간으로 분석할 수 있습니다.
Microsoft Fabric에 대한 SQL Server 2025 데이터베이스 미러링을 보여 주는 다이어그램 왼쪽에서 SQL Server 2025 데이터베이스는 Microsoft Fabric OneLake에 데이터를 지속적으로 복제합니다. 이 다이어그램은 운영 데이터가 분석 플랫폼으로 흐르는 제로 ETL 아키텍처를 보여 줍니다.
패브릭 미러링 구성
패브릭 미러링이 시각적 인터페이스를 사용하여 Microsoft Fabric 포털을 통해 구성됩니다. 미러링 기능은 델타 레이크 형식의 Fabric의 OneLake 에 데이터를 지속적으로 복제하여 운영 워크로드에 영향을 주지 않고 분석에 사용할 수 있도록 합니다.
비고
단계별 구성 지침은 자습서: SQL Server에서 Microsoft Fabric 미러된 데이터베이스 구성을 참조하세요.
패브릭 미러링의 이점은 다음과 같습니다.
- 근 실시간 분석: 데이터 변경은 최소 대기 시간으로 지속적으로 복제됩니다.
- Zero-ETL 아키텍처: 복잡한 데이터 파이프라인을 빌드하고 유지 관리할 필요가 없습니다.
- 데이터 형식 열기: 광범위한 도구 호환성을 위해 데이터는 OneLake에서 Delta Lake 형식으로 저장됩니다.
- AI 지원 분석: 패브릭의 AI 및 기계 학습 기능과 직접 통합
- SQL 분석 엔드포인트: 친숙한 T-SQL 구문을 사용하여 미러된 데이터 쿼리
- 운영에 영향을 주지 않습니다. 미러링에서 프로덕션 워크로드에 영향을 주지 않고 변경 내용 추적 사용
미러링 성능 최적화
미러링이 구성되면 SQL Server의 리소스 관리자 를 사용하여 운영 워크로드에 미치는 성능 영향을 관리할 수 있습니다.
다음 코드 예제에서는 패브릭 미러링 작업에서 사용하는 CPU 및 메모리 리소스를 제한하는 Resource Governor 구성을 만듭니다.
-- Create resource pool for mirroring
CREATE RESOURCE POOL FabricMirrorPool
WITH (
MIN_CPU_PERCENT = 5,
MAX_CPU_PERCENT = 20,
MIN_MEMORY_PERCENT = 5,
MAX_MEMORY_PERCENT = 20
);
-- Create workload group for mirroring
CREATE WORKLOAD GROUP FabricMirrorGroup
WITH (
IMPORTANCE = MEDIUM
)
USING FabricMirrorPool;
-- Apply classifier function
CREATE FUNCTION dbo.FabricMirrorClassifier()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @workload_group SYSNAME = 'default';
IF APP_NAME() LIKE '%Fabric Mirror%'
SET @workload_group = 'FabricMirrorGroup';
RETURN @workload_group;
END;
-- Enable resource governor
ALTER RESOURCE GOVERNOR
WITH (CLASSIFIER_FUNCTION = dbo.FabricMirrorClassifier);
ALTER RESOURCE GOVERNOR RECONFIGURE;
이 예제에서 리소스 풀 FabricMirrorPool 은 CPU 및 메모리의 5-20% 사이에서 사용하는 미러링을 제한하여 프로덕션 워크로드에 영향을 주지 않도록 합니다. 분류자 함수는 애플리케이션 이름에 따라 미러링 세션을 식별하고 전용 워크로드 그룹으로 라우팅하여 운영 및 분석 워크로드 모두에 대해 일관된 리소스 할당 및 예측 가능한 성능을 보장합니다.
리소스 관리자는 패브릭 미러링이 운영 워크로드에 영향을 주지 않도록 합니다.
AI 애플리케이션 성능 최적화
성능은 프로덕션 AI 애플리케이션에 매우 중요합니다.
벡터 검색 쿼리 최적화
쿼리 힌트 및 인덱스 최적화 사용:
벡터 검색 성능 최적화는 응답 시간이 사용자 환경에 직접적인 영향을 미치는 프로덕션 AI 애플리케이션에 매우 중요합니다.
다음 예제에서는 특정 데이터 하위 집합(예: 제품 범주)을 대상으로 하는 필터링된 벡터 인덱스를 만들고 쿼리 힌트 를 사용하여 실행 동작을 제어하는 두 가지 주요 최적화 기술을 보여 줍니다.
필터링된 인덱 idx_electronics_embedding 스는 관련 벡터만 인덱싱하고 검색 공간을 줄이고 쿼리 속도를 개선하여 Electronics 범주 내에서 검색을 가속화합니다. 이 힌트는 MAXDOP 4 병렬 처리를 4개의 스레드로 제한하며, 벡터 검색이 서버 리소스를 독점하고 다른 워크로드에 영향을 주지 않도록 하는 데 필수적입니다.
-- Create filtered vector index for specific categories
CREATE VECTOR INDEX idx_electronics_embedding
ON products(embedding)
WHERE category = 'Electronics';
-- Use query hints for better performance
DECLARE @query_embedding VECTOR(1536) = AI_GENERATE_EMBEDDINGS(@user_query USE MODEL Ada2Embeddings);
SELECT TOP 10
product_id,
product_name,
VECTOR_DISTANCE('cosine', @query_embedding, embedding) AS score
FROM products WITH (INDEX(idx_electronics_embedding))
WHERE category = 'Electronics'
ORDER BY score
OPTION (MAXDOP 4);
인덱스 및 쿼리 힌트를 사용하여 특정 시나리오에 대한 벡터 검색을 최적화할 수 있습니다.
이러한 사례를 따르고 SQL Server 2025의 AI 기능을 사용하여 보안, 성능 및 안정성에 대한 엔터프라이즈 표준을 유지하면서 실제 비즈니스 가치를 제공하는 프로덕션 지원 애플리케이션을 빌드, 배포 및 운영할 수 있습니다.