Phát triển ứng dụng thông minh với khung AI

Đã hoàn thành

Việc xây dựng các ứng dụng AI sẵn sàng sản xuất không chỉ đòi hỏi khả năng AI mà còn đòi hỏi một cách tiếp cận bao gồm truyền dữ liệu theo thời gian thực, giao diện ngôn ngữ tự nhiên, công cụ năng suất của nhà phát triển và tích hợp đám mây. SQL Server 2025 cung cấp một nền tảng để phát triển các ứng dụng mở rộng quy mô từ triển khai tại chỗ đến kiến trúc gốc đám mây.

Cách tiếp cận tích hợp này có nghĩa là bạn có thể xây dựng các ứng dụng AI bằng cách sử dụng các công cụ và khuôn khổ trong khi sử dụng các tính năng doanh nghiệp để bảo mật, hiệu suất và độ tin cậy. Cho dù bạn đang xây dựng công cụ đề xuất theo thời gian thực, trợ lý AI đàm thoại hay bảng điều khiển phân tích được hỗ trợ bởi thông tin chuyên sâu về AI, SQL Server 2025 cung cấp nền tảng bạn cần.

Xây dựng giao diện AI đàm thoại

Giao diện ngôn ngữ tự nhiên giúp người dùng có thể truy cập dữ liệu doanh nghiệp mà không yêu cầu kiến thức SQL hoặc chuyên môn kỹ thuật.

Thiết kế các mẫu truy vấn hội thoại

Các mẫu truy vấn đàm thoại cho phép người dùng đặt câu hỏi bằng ngôn ngữ tự nhiên và nhận câu trả lời theo hướng dữ liệu bằng cách dịch các truy vấn của họ sang SQL bằng các mô hình AI như GPT-4.

Triển khai ngôn ngữ tự nhiên cho các khả năng 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;

Quy trình lưu trữ này sử dụng GPT-4 để dịch các câu hỏi ngôn ngữ tự nhiên thành các truy vấn SQL, cho phép truy cập đàm thoại vào dữ liệu của bạn.

Thực hiện lan can an toàn

Các biện pháp bảo vệ an toàn ngăn các truy vấn SQL do AI tạo ra thực hiện các thao tác không chính xác như xóa hoặc sửa đổi dữ liệu, đảm bảo chỉ có quyền truy cập chỉ đọc vào cơ sở dữ liệu của bạn.

Thêm xác thực để đảm bảo SQL được tạo an toàn:

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;

Trình bao bọc này bổ sung kiểm tra bảo mật để ngăn chặn các hoạt động phá hoại, đảm bảo người dùng chỉ có thể truy vấn dữ liệu chứ không thể sửa đổi dữ liệu.

Tạo cuộc trò chuyện nhiều lượt

Cuộc trò chuyện nhiều lượt cho phép người dùng có các cuộc đối thoại tự nhiên, theo ngữ cảnh với dữ liệu của bạn bằng cách duy trì lịch sử cuộc trò chuyện, cho phép các câu hỏi tiếp theo mà không cần lặp lại ngữ cảnh.

Ví dụ sau đây xây dựng một AI đàm thoại duy trì ngữ cảnh trên nhiều tương tác, cho phép các câu hỏi tiếp theo và đối thoại tự nhiên với dữ liệu của bạn:

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;

Nâng cao năng suất của nhà phát triển với các công cụ AI

SQL Server 2025 tích hợp với các công cụ phát triển hiện đại để tăng tốc phát triển ứng dụng AI.

Sử dụng tiện ích mở rộng MSSQL cho Visual Studio Code với GitHub Copilot

Tiện ích mở rộng MSSQL cho Visual Studio Code bao gồm tích hợp GitHub Copilot, cung cấp hỗ trợ được hỗ trợ bởi AI để phát triển cơ sở dữ liệu.

Lưu ý

Tích hợp GitHub Copilot với tiện ích mở rộng MSSQL hiện đang ở chế độ xem trước. Các tính năng và chức năng có thể thay đổi. Để biết thông tin mới nhất, hãy xem tài liệu mở rộng MSSQL.

Tích hợp GitHub Copilot cung cấp hỗ trợ mã cho các tác vụ phát triển cơ sở dữ liệu:

  • Tạo truy vấn: Mô tả những gì bạn muốn bằng ngôn ngữ tự nhiên, lấy mã T-SQL
  • Tối ưu hóa truy vấn: Nhận đề xuất để cải thiện hiệu suất truy vấn
  • Khám phá lược đồ: Đặt câu hỏi về lược đồ cơ sở dữ liệu của bạn
  • Hỗ trợ di cư: Tạo tập lệnh để thay đổi lược đồ và di chuyển dữ liệu
  • Lời giải thích: Hiểu các truy vấn phức tạp với các giải thích do AI tạo ra

Ví dụ sau đây minh họa cách GitHub Copilot có thể tạo một thủ tục được lưu trữ hoàn chỉnh từ một nhận xét ngôn ngữ tự nhiên:

-- 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;

Sử dụng Entity Framework Core với các chức năng AI

Entity Framework Core có thể được sử dụng để xây dựng các ứng dụng AI với SQL Server. Bạn có thể sử dụng các truy vấn SQL thô để làm việc với kiểu dữ liệu VECTOR của SQL Server và các hàm AI:

Vì Entity Framework Core không hỗ trợ kiểu dữ liệu VECTOR, ví dụ này sử dụng FromSqlRaw để thực thi T-SQL trực tiếp trong khi hưởng lợi từ các hoạt động không đồng bộ và ánh xạ đối tượng của EF Core. Phương thức này tuần tự hóa việc nhúng truy vấn vào JSON, thực hiện tìm kiếm tương tự vectơ bằng cách sử dụng VECTOR_DISTANCEvà trả về các sản phẩm có nội dung nhúng tương tự—lý tưởng cho hệ thống đề xuất và tìm kiếm ngữ nghĩa.

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;
}

Tích hợp với Microsoft Fabric

Microsoft Fabric cung cấp một nền tảng phân tích hợp nhất bổ sung cho các khả năng AI của SQL Server. SQL Server 2025 hỗ trợ phản chiếu cơ sở dữ liệu sang Microsoft Fabric, cho phép phân tích dữ liệu hoạt động gần như theo thời gian thực mà không phức tạp như các quy trình ETL truyền thống.

Sơ đồ hiển thị phản chiếu cơ sở dữ liệu SQL Server 2025 sang Microsoft Fabric.

Sơ đồ hiển thị phản chiếu cơ sở dữ liệu SQL Server 2025 sang Microsoft Fabric. Ở bên trái, cơ sở dữ liệu SQL Server 2025 liên tục sao chép dữ liệu sang Microsoft Fabric OneLake. Sơ đồ minh họa kiến trúc zero-ETL nơi dữ liệu hoạt động chảy đến nền tảng phân tích.

Định cấu hình Fabric Mirroring

Fabric Mirroring được đặt cấu hình thông qua cổng thông tin Microsoft Fabric bằng giao diện trực quan. Tính năng phản chiếu liên tục sao chép dữ liệu của bạn sang OneLake của Fabric ở định dạng Delta Lake, giúp dữ liệu có sẵn để phân tích mà không ảnh hưởng đến khối lượng công việc hoạt động của bạn.

Lưu ý

Để biết hướng dẫn cấu hình từng bước, hãy xem Hướng dẫn: Đặt cấu hình cơ sở dữ liệu được nhân bản Microsoft Fabric từ SQL Server.

Một số lợi ích của phản chiếu vải là:

  • Phân tích gần thời gian thực: Các thay đổi dữ liệu được sao chép liên tục với độ trễ tối thiểu
  • Zero-ETL kiến trúc: Không cần xây dựng và duy trì quy trình dữ liệu phức tạp
  • Định dạng dữ liệu mở: Dữ liệu được lưu trữ ở định dạng Delta Lake trong OneLake để có khả năng tương thích rộng rãi với công cụ
  • Phân tích sẵn sàng cho AI: Tích hợp trực tiếp với khả năng AI và máy học của Fabric
  • Điểm cuối phân tích SQL: Truy vấn dữ liệu được nhân bản bằng cú pháp T-SQL quen thuộc
  • Không ảnh hưởng đến hoạt động: Phản chiếu sử dụng tính năng theo dõi thay đổi mà không ảnh hưởng đến khối lượng công việc sản xuất

Tối ưu hóa hiệu suất phản chiếu

Sau khi phản chiếu được cấu hình, bạn có thể sử dụng Resource Governor của SQL Server để quản lý hiệu suất của nó đối với khối lượng công việc hoạt động của bạn:

Ví dụ mã sau đây tạo cấu hình Resource Governor giới hạn tài nguyên CPU và bộ nhớ được sử dụng bởi các hoạt động phản chiếu Fabric.

-- 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;

Trong ví dụ, nhóm FabricMirrorPool tài nguyên hạn chế phản chiếu sử dụng từ 5-20% CPU và bộ nhớ, ngăn không cho nó ảnh hưởng đến khối lượng công việc sản xuất. Chức năng phân loại xác định các phiên phản chiếu dựa trên tên ứng dụng và định tuyến chúng đến nhóm khối lượng công việc chuyên dụng, đảm bảo phân bổ tài nguyên nhất quán và hiệu suất có thể dự đoán được cho cả khối lượng công việc vận hành và phân tích.

Resource governor đảm bảo phản chiếu Fabric không ảnh hưởng đến khối lượng công việc hoạt động của bạn.

Tối ưu hiệu suất ứng dụng AI

Hiệu suất rất quan trọng đối với các ứng dụng AI sản xuất.

Tối ưu hóa truy vấn tìm kiếm vectơ

Sử dụng gợi ý truy vấn và tối ưu hóa chỉ mục:

Tối ưu hóa hiệu suất tìm kiếm vectơ là rất quan trọng đối với các ứng dụng AI sản xuất, nơi thời gian phản hồi ảnh hưởng trực tiếp đến trải nghiệm người dùng.

Ví dụ sau đây minh họa hai kỹ thuật tối ưu hóa chính: tạo chỉ mục vectơ được lọc nhắm mục tiêu các tập hợp con dữ liệu cụ thể (như danh mục sản phẩm) và sử dụng gợi ý truy vấn để kiểm soát hành vi thực thi.

Chỉ mục idx_electronics_embedding được lọc tăng tốc tìm kiếm trong danh mục Điện tử bằng cách chỉ lập chỉ mục các vectơ có liên quan, giảm không gian tìm kiếm và cải thiện tốc độ truy vấn. Gợi MAXDOP 4 ý giới hạn xử lý song song ở bốn luồng, cân bằng hiệu suất với mức tiêu thụ tài nguyên—điều cần thiết để ngăn tìm kiếm vectơ độc quyền tài nguyên máy chủ và ảnh hưởng đến khối lượng công việc khác.

-- 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);

Bạn có thể sử dụng chỉ mục và gợi ý truy vấn để tối ưu hóa tìm kiếm vectơ cho các tình huống cụ thể.

Bằng cách làm theo các phương pháp này và sử dụng các chức năng AI của SQL Server 2025, bạn có thể xây dựng, triển khai và vận hành các ứng dụng sẵn sàng sản xuất mang lại giá trị kinh doanh thực sự trong khi vẫn duy trì các tiêu chuẩn doanh nghiệp về bảo mật, hiệu suất và độ tin cậy.