SQL 데이터베이스 워크로드에 대한 포함 생성 및 유지 관리

Completed

Tip

자세한 내용은 텍스트 및 이미지 탭을 참조하세요.

임베딩이 데이터를 나타내는 방식을 설계한 후에는 임베딩을 생성하고 데이터가 변경될 때 이를 동기화 상태로 유지해야 합니다.

SQL Server는 데이터베이스 열에 저장된 텍스트에서 포함을 생성하는 기본 제공 AI 함수를 제공합니다. 포함 생성은 일반적으로 일회성 작업이 아닙니다. 원본 데이터가 변경되면 포함을 다시 생성해야 데이터의 현재 상태를 계속 반영할 수 있습니다.

SQL을 사용하여 임베딩 생성

SQL Server는 AI_GENERATE_EMBEDDINGS 데이터베이스 열에 저장된 텍스트에서 직접 포함을 생성하는 함수를 제공합니다. 이 함수는 외부 모델을 사용하여 텍스트를 저장하고 나중에 비교할 수 있는 벡터로 변환합니다.

일반적인 패턴은 초기 로드 시나 일괄 처리 과정에서 임베딩을 생성하는 것입니다. 결과 벡터는 원본 데이터와 함께 저장되거나 관련 테이블에 저장되므로 효율적으로 쿼리할 수 있습니다.

다음 예제에서는 테이블 정의에서 포함 생성에 이르는 간단한 엔드 투 엔드 패턴을 보여 줍니다.

먼저 원본 텍스트와 해당 임베딩을 저장하는 테이블을 만듭니다.

CREATE TABLE dbo.documents
(
    id INT PRIMARY KEY,
    description NVARCHAR(MAX),
    embedding VECTOR(1536)
);

다음으로, 텍스트에서 임베딩을 생성하고 이를 테이블에 저장합니다.

UPDATE dbo.documents
SET embedding = AI_GENERATE_EMBEDDINGS(description USE MODEL my_embedding_model);

이 예제에서는 각 행의 description 값이 포함 모델로 전송됩니다. 이 함수는 열에 저장된 벡터를 반환합니다 embedding . 이러한 저장된 벡터는 나중에 다시 생성하지 않고 쿼리하거나 비교할 수 있습니다. 포함 디자인에 따라 청크 또는 필터링을 처리하는 추가 논리를 포함할 수 있습니다.

포함 생성은 벡터를 만드는 방법을 결정합니다. 유지 관리 전략은 이러한 벡터를 새로 고쳐야 하는 시기를 결정합니다.

임베딩에 대한 이해

임베딩 유지 관리는 기본 데이터의 변경에 맞춰 저장된 임베딩을 정렬 상태로 유지합니다. 텍스트 값이 삽입, 업데이트 또는 삭제되면 해당 포함이 더 이상 현재 콘텐츠를 반영하지 않을 수 있습니다.

데이터 변경 빈도, 포함을 업데이트해야 하는 빈도 및 포함 생성이 실행되는 위치에 따라 다양한 유지 관리 방법을 사용할 수 있습니다.

임베딩 유지 관리 방법 선택

임베딩은 데이터가 변경될 때 원본 텍스트와 계속 동기화되어야 합니다. 변경 내용을 검색하고 포함을 다시 생성해야 하는 시기를 결정하는 데 몇 가지 옵션을 사용할 수 있습니다. 이러한 옵션은 작업이 발생하는 위치와 변경 내용이 얼마나 빨리 반영되는지에 따라 다릅니다.

  • 테이블 트리거
    트리거는 행을 삽입하거나 업데이트할 때 자동으로 실행됩니다. 임베딩 유지 보수를 위해 트리거는 새 임베딩이 필요한 행을 표시하거나 즉시 재생성을 시작할 수 있습니다. 이 방법은 변경 내용을 빠르게 반영하지만 쓰기 작업에 작업을 추가합니다.

  • 변경 내용 추적
    변경 내용 추적은 지정된 시점 이후 행이 변경된 것을 기록합니다. 백그라운드 프로세스는 이 정보를 사용하여 임베딩을 새로 고쳐야 하는 행을 식별하고 일괄 처리할 수 있습니다. 이 방법은 대기 시간과 성능의 균형을 조정합니다.

  • CDC(변경 데이터 캡처)
    CDC는 이전 및 이후 값을 포함하여 데이터 변경 내용에 대한 자세한 정보를 기록합니다. 임베딩 관리에서는 CDC 테이블을 사용하여 변경된 텍스트 값을 식별하고 임베딩을 비동기적으로 재생성할 수 있습니다. 이 방법은 대량 워크로드에 적합합니다.

  • SQL 트리거 바인딩을 사용하는 Azure Functions
    Azure Functions는 SQL 트리거 바인딩을 사용하여 데이터베이스 변경에 대응할 수 있습니다. 이 기능을 사용하면 데이터 변경에 응답하면서 데이터베이스 엔진 외부에서 포함 생성을 실행할 수 있습니다. 이 방법은 데이터베이스에서 작업을 오프로드하고 독립적으로 확장할 수 있습니다.

  • Azure Logic Apps
    Logic Apps는 워크플로의 일부로 임베딩 업데이트를 조정할 수 있습니다. 예를 들어 논리 앱은 주기적으로 변경된 행을 확인하고 포함 서비스를 호출하여 다른 시스템과 업데이트를 조정할 수 있습니다. 이 방법은 코드가 낮으며 다른 Azure 서비스와 잘 통합됩니다.

  • 이벤트 스트리밍 변경
    CES(변경 이벤트 스트리밍)는 거의 실시간으로 DML 변경 내용을 Azure Event Hubs로 직접 스트리밍합니다. 다운스트림 시스템은 데이터베이스 트랜잭션에 작업을 추가하지 않고 변경이 발생할 때 이러한 이벤트를 사용하고 포함을 다시 생성할 수 있습니다. 이 방법은 데이터베이스에서 포함 생성을 분리하고 동일한 변경 스트림을 처리하는 여러 소비자를 지원합니다.

  • Microsoft Foundry
    Microsoft Foundry를 사용하여 포함을 생성하는 모델을 관리하고 평가할 수 있습니다. 유지 관리 워크플로에서 Foundry는 일반적으로 모델 선택 또는 호스팅을 지원하지만 다른 프로세스는 변경 검색 및 데이터베이스 업데이트를 처리합니다. 이 접근 방식은 데이터 변경에 대응하여 임베딩 생성을 수행하는 동안 모델 관리가 중앙 집중화됩니다.

적절한 유지 관리 방법 선택

임베딩을 유지하는 올바른 방법은 하나도 없습니다. 올바른 방법은 데이터 볼륨, 업데이트 빈도, 대기 시간 요구 사항 및 포함 생성이 전체 솔루션 내에 적합한 위치에 따라 달라집니다.

일부 솔루션은 즉각적인 업데이트를 선호하지만 다른 솔루션은 일괄 처리 또는 외부 처리의 우선 순위를 지정합니다. 이러한 장차를 이해하면 SQL 애플리케이션에 맞는 유지 관리 전략을 선택할 수 있습니다.

주요 내용

임베딩 AI_GENERATE_EMBEDDINGS을(를) 생성하는 것은 첫 번째 단계일 뿐입니다. 원본 데이터가 변경되면 저장된 벡터가 동기화에서 벗어날 수 있으므로 유지 관리 전략이 필요합니다. 비동기 또는 분리된 접근 방식을 위한 트리거 및 변경 내용 추적에서 변경 데이터 캡처, 변경 이벤트 스트리밍 및 Azure Functions에 이르기까지 다양합니다. 올바른 선택은 데이터 볼륨, 대기 시간 요구 사항 및 포함 생성이 전체 아키텍처에 적합한 위치에 따라 달라집니다.