적용 대상: Microsoft Fabric의 SQL Server 2025(17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL 데이터베이스
이 문서에서는 OpenAI 및 벡터와 같은 AI(인공 지능) 옵션을 사용하여 SQL Server 및 Azure SQL Managed Instance에서 SQL Database 엔진을 사용하여 지능형 애플리케이션을 빌드하는 방법에 대해 간략하게 설명합니다.
Azure SQL Database의 경우 지능형 애플리케이션 및 AI를 검토합니다.
샘플 및 예제는 SQL AI 샘플 리포지토리를 방문하세요.
개요
LLM(대규모 언어 모델)을 사용하면 개발자가 친숙한 사용자 환경을 통해 AI 기반 애플리케이션을 만들 수 있습니다.
애플리케이션에서 LLM을 사용하면 모델이 애플리케이션 데이터베이스에서 적절한 시간에 적절한 데이터에 액세스할 수 있을 때 더 큰 가치와 향상된 사용자 환경이 제공됩니다. 이 프로세스를 RAG(검색 증강 세대)라고 하며 SQL Database 엔진에는 이 새로운 패턴을 지원하는 많은 기능이 있어 지능형 애플리케이션을 빌드하는 데 유용한 데이터베이스입니다.
다음 링크는 지능형 애플리케이션을 빌드하기 위한 다양한 옵션의 샘플 코드를 제공합니다.
| AI 옵션 | Description |
|---|---|
| Azure OpenAI | RAG에 대한 포함을 생성하고 Azure OpenAI에서 지원하는 모든 모델과 통합합니다. |
| 벡터 | 데이터베이스에서 벡터를 저장하고 벡터 함수를 사용하는 방법을 알아봅니다. |
| Azure AI Search | Azure AI Search와 함께 데이터베이스를 사용하여 데이터에 대한 LLM을 학습합니다. |
| 지능형 애플리케이션 | 모든 시나리오에서 복제할 수 있는 일반적인 패턴을 사용하여 엔드 투 엔드 솔루션을 만드는 방법을 알아봅니다. |
Azure OpenAI를 사용하여 RAG를 구현하기 위한 주요 개념
이 섹션에는 SQL Database 엔진에서 Azure OpenAI를 사용하여 RAG를 구현하는 데 중요한 주요 개념이 포함되어 있습니다.
RAG(검색 증강 생성)
RAG는 외부 원본에서 추가 데이터를 검색하여 관련 정보 응답을 생성하는 LLM의 기능을 향상시키는 기술입니다. 예를 들어 RAG는 사용자의 질문 또는 프롬프트와 관련된 도메인별 지식이 포함된 문서 또는 문서를 쿼리할 수 있습니다. 그런 다음 LLM은 응답을 생성할 때 이 검색된 데이터를 참조로 사용할 수 있습니다. 예를 들어 SQL Database 엔진을 사용하는 간단한 RAG 패턴은 다음과 같습니다.
- 테이블에 데이터를 삽입합니다.
- Azure AI Search에 인스턴스를 연결합니다.
- Azure OpenAI GPT4 모델을 만들고 Azure AI Search에 연결합니다.
- 애플리케이션 및 인스턴스의 데이터에서 학습된 Azure OpenAI 모델을 사용하여 데이터에 대해 채팅하고 질문합니다.
프롬프트 엔지니어링을 사용하는 RAG 패턴은 모델에 더 많은 컨텍스트 정보를 제공하여 응답 품질을 향상시키는 용도로 사용됩니다. RAG를 사용하면 관련 외부 원본을 생성 프로세스에 통합하여 더 광범위한 기술 자료를 적용할 수 있으므로 보다 포괄적이고 정보에 입각한 응답이 생성됩니다. 접지 LLM에 대한 자세한 내용은 접지 LLM - Microsoft Community Hub를 참조하세요.
프롬프트 및 프롬프트 엔지니어링
프롬프트는 LLM에 대한 지침 또는 LLM이 빌드할 수 있는 컨텍스트 데이터로 사용되는 특정 텍스트 또는 정보를 참조합니다. 프롬프트는 질문, 문 또는 코드 조각과 같은 다양한 형식을 사용할 수 있습니다.
LLM에서 응답을 생성하는 데 사용할 수 있는 샘플 프롬프트:
- 지침: LLM에 지시문 제공
- 기본 콘텐츠: 처리를 위해 LLM에 정보를 제공합니다.
- 예: 모델을 특정 작업 또는 프로세스로 조건화 도움말
- 신호: LLM의 출력을 올바른 방향으로 전달
- 지원 콘텐츠: LLM이 출력을 생성하는 데 사용할 수 있는 추가 정보를 나타냅니다.
시나리오에 대한 좋은 프롬프트를 만드는 프로세스를 프롬프트 엔지니어링이라고 합니다. 프롬프트 엔지니어링에 대한 프롬프트 및 모범 사례에 대한 자세한 내용은 프롬프트 엔지니어링 기술을 참조하세요.
Tokens
토큰은 입력 텍스트를 더 작은 세그먼트로 분할하여 생성된 작은 텍스트 청크입니다. 이러한 세그먼트는 단어 또는 문자 그룹일 수 있으며 한 문자에서 전체 단어까지 길이가 다를 수 있습니다. 예를 들어 단어 hamburger 는 같은 토큰hambur으로 나뉘며ger, 짧고 일반적인 단어 pear 는 단일 토큰으로 간주됩니다.
Azure OpenAI에서 API에 제공된 입력 텍스트는 토큰(토큰화됨)으로 전환됩니다. 각 API 요청에서 처리되는 토큰 수는 입력, 출력 및 요청 매개 변수의 길이와 같은 요인에 따라 달라집니다. 처리되는 토큰의 수량은 모델의 응답 시간과 처리량에도 영향을 줍니다. 각 모델이 Azure OpenAI의 단일 요청/응답에서 사용할 수 있는 토큰 수에는 제한이 있습니다. 자세한 내용은 Azure AI Foundry 모델 할당량 및 제한에서 Azure OpenAI를 참조하세요.
Vectors
벡터는 일부 데이터에 대한 정보를 나타낼 수 있는 정렬된 숫자 배열(일반적으로 부동 소수)입니다. 예를 들어 이미지를 픽셀 값의 벡터로 표시하거나 텍스트 문자열을 ASCII 값의 벡터로 나타낼 수 있습니다. 데이터를 벡터로 변환하는 프로세스를 벡터화라고 합니다. 자세한 내용은 벡터 예제를 참조하세요.
벡터 데이터 형식 및 벡터 함수를 도입하면 벡터 데이터 작업을 더 쉽게 할 수 있습니다.
임베딩
포함은 데이터의 중요한 기능을 나타내는 벡터입니다. 임베딩은 딥 러닝 모델을 사용하여 학습되는 경우가 많으며, 기계 학습 및 인공지능(AI) 모델은 이를 기능으로 활용합니다. 포함은 유사한 개념 간의 의미 체계 유사성을 캡처할 수도 있습니다. 예를 들어 단어 person 및 human에 대한 포함을 생성할 때 단어가 의미상 유사하므로 해당 포함(벡터 표현)이 값에서 유사할 것으로 예상합니다.
Azure OpenAI는 텍스트 데이터에서 포함을 만들기 위한 모델을 제공합니다. 서비스는 텍스트를 토큰으로 나누고 OpenAI에서 미리 학습한 모델을 사용하여 포함을 생성합니다. 자세한 내용은 Azure AI Foundry 모델의 Azure OpenAI에 포함되는 내용 이해(Understand Embeddings)를 참조하세요.
벡터 검색
벡터 검색은 특정 쿼리 벡터와 의미상 유사한 데이터 세트의 모든 벡터를 찾는 프로세스를 나타냅니다. 따라서 단어 human 에 대한 쿼리 벡터는 전체 사전에서 의미상 유사한 단어를 검색하고 단어를 person 가까운 일치로 찾아야 합니다. 이러한 근접성 또는 거리는 코사인 유사성과 같은 유사성 메트릭을 사용하여 측정됩니다. 벡터가 더 가까울수록 벡터 간의 거리가 작습니다.
수백만 개의 문서에 대해 쿼리를 실행하여 데이터에서 가장 유사한 문서를 찾는 시나리오를 고려합니다. Azure OpenAI를 사용하여 데이터에 대한 포함을 만들고 문서를 쿼리할 수 있습니다. 그런 다음 벡터 검색을 수행하여 데이터 세트에서 가장 유사한 문서를 찾을 수 있습니다. 그러나 몇 가지 예제에서 벡터 검색을 수행하는 것은 간단합니다. 수천 또는 수백만 개의 데이터 요소에서 동일한 검색을 수행하는 것은 어려운 일입니다. 또한 전체 검색과 대기 시간, 처리량, 정확도 및 비용을 비롯한 근사한 인접(ANN) 검색 방법 간의 장차가 있으며, 모두 애플리케이션의 요구 사항에 따라 달라집니다.
SQL Database 엔진의 벡터는 다음 섹션에 설명된 대로 효율적으로 저장 및 쿼리할 수 있으므로 성능이 뛰어난 가장 가까운 인접 항목을 정확하게 검색할 수 있습니다. 정확도와 속도 중에서 결정할 필요가 없습니다. 둘 다 사용할 수 있습니다. 통합 솔루션에 데이터와 함께 벡터 포함을 저장하면 데이터 동기화를 관리할 필요가 최소화되고 AI 애플리케이션 개발을 위한 출시 시간을 가속화할 수 있습니다.
Azure OpenAI
포함은 실제 세계를 데이터로 나타내는 프로세스입니다. 텍스트, 이미지 또는 소리를 포함으로 변환할 수 있습니다. Azure OpenAI 모델은 실제 정보를 포함으로 변환할 수 있습니다. 모델은 REST 엔드포인트로 사용할 수 있으므로 SQL Server 2025(17.x) 및 Always-up-to-date 업데이트 정책으로 구성된 Azure SQL Managed Instance부터 사용할 수 있는 sp_invoke_external_rest_endpoint 시스템 저장 프로시저를 사용하여 SQL Database 엔진에서 쉽게 사용할 수 있습니다.
DECLARE @retval AS INT,
@response AS NVARCHAR (MAX),
@payload AS NVARCHAR (MAX);
SET @payload = JSON_OBJECT('input':@text);
EXECUTE
@retval = sp_invoke_external_rest_endpoint
@url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version = 2023-03-15-preview',
@method = 'POST',
@credential = [https://<openai-url>/openai/deployments/<model-name>],
@payload = @payload,
@response = @response OUTPUT;
DECLARE @e AS VECTOR(1536) = JSON_QUERY(@response, '$.result.data[0].embedding');
REST 서비스에 대한 호출을 사용하여 포함을 가져오는 것은 SQL Managed Instance 및 OpenAI를 사용할 때 사용하는 통합 옵션 중 하나일 뿐입니다. 사용 가능한 모든 모델이 SQL Database 엔진에 저장된 데이터에 액세스하여 다음 예제와 같이 사용자가 데이터와 상호 작용할 수 있는 솔루션을 만들 수 있습니다.
Azure SQL 및 OpenAI 사용에 대한 추가 예제는 SQL Server 및 Azure SQL Managed Instance에도 적용되는 다음 문서를 참조하세요.
벡터 예제
전용 벡터 데이터 형식을 사용하면 벡터 데이터의 효율적이고 최적화된 저장이 가능하며 개발자가 벡터 및 유사성 검색 구현을 간소화하는 데 도움이 되는 함수 집합이 제공됩니다. 새 VECTOR_DISTANCE 함수를 사용하여 코드 한 줄에서 두 벡터 간의 거리를 계산할 수 있습니다. 자세한 내용 및 예제는 SQL Database 엔진에서 벡터 검색 및 벡터 인덱스를 검토하세요.
다음은 그 예입니다.
CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
[article_id] [int] NOT NULL,
[embedding] [vector](1536) NOT NULL,
)
GO
SELECT TOP(10)
*
FROM
[dbo].[wikipedia_articles_embeddings_titles_vector]
ORDER BY
VECTOR_DISTANCE('cosine', @my_reference_vector, embedding)
Azure AI 검색
SQL Database 엔진 및 Azure AI Search를 사용하여 RAG 패턴을 구현합니다. Azure OPENAI 및 SQL Database 엔진과 Azure AI Search가 통합되어 모델을 학습하거나 미세 조정할 필요 없이 SQL Database 엔진에 저장된 데이터에서 지원되는 채팅 모델을 실행할 수 있습니다. 데이터에서 모델을 실행하면 더 높은 정확도와 속도로 데이터를 기반으로 채팅하고 분석할 수 있습니다.
Azure OPENAI 및 SQL Database 엔진과 Azure AI Search의 통합에 대한 자세한 내용은 SQL Server 및 Azure SQL Managed Instance에도 적용되는 다음 문서를 참조하세요.
지능형 애플리케이션
SQL Database 엔진은 다음 다이어그램과 같이 추천 및 RAG(검색 보강 세대)와 같은 AI 기능을 포함하는 지능형 애플리케이션을 빌드하는 데 사용할 수 있습니다.
세션 추상 세션을 샘플 데이터 세트로 사용하여 AI 지원 애플리케이션을 빌드하는 엔드 투 엔드 샘플은 다음을 참조하세요.
비고
LangChain 통합 및 의미 체계 커널 통합은 SQL Server 2025(17.x)부터 사용할 수 있는 벡터 데이터 형식과 Always-up-to-date 업데이트 정책으로 구성된 Azure SQL Managed Instance에 의존합니다.
LangChain 통합
LangChain은 언어 모델을 통해 구동되는 애플리케이션을 개발하기 위한 잘 알려진 프레임워크입니다. LangChain을 사용하여 사용자 고유의 데이터에 챗봇을 만드는 방법을 보여 주는 예제는 다음을 참조하세요.
- langchain-sqlserver PyPI 패키지
LangChain에서 Azure SQL을 사용하는 방법에 대한 몇 가지 샘플:
엔드 투 엔드 예제:
- Azure SQL, Langchain 및 Chainlit를 사용하여 1시간 만에 사용자 고유의 데이터에 챗봇 빌드: UI에 대한 LLM 호출 및 Chainlit를 오케스트레이션하기 위해 Langchain을 사용하여 사용자 고유의 데이터에 RAG 패턴을 사용하여 챗봇을 빌드합니다.
의미 체계 커널 통합
의미 체계 커널은 기존 코드를 호출할 수 있는 에이전트를 쉽게 빌드할 수 있는 오픈 소스 SDK입니다. 확장성이 뛰어난 SDK로서 OpenAI, Azure OpenAI, Hugging Face 등의 모델에서 의미 체계 커널을 사용할 수 있습니다. 기존 C#, Python 및 Java 코드를 이러한 모델과 결합하여 질문에 답변하고 프로세스를 자동화하는 에이전트를 빌드할 수 있습니다.
의미 체계 커널이 AI 지원 솔루션을 빌드하는 데 얼마나 쉽게 도움이 되는지에 대한 예는 다음과 같습니다.
- 궁극적인 챗봇?: 궁극적인 사용자 환경을 위해 NL2SQL 및 RAG 패턴을 모두 사용하여 사용자 고유의 데이터에 챗봇을 빌드합니다.