생성 데이터 인텔리전스

데이터 경험 재창조: 생성 AI 및 최신 데이터 아키텍처를 사용하여 인사이트 확보 | 아마존 웹 서비스

시간

최신 데이터 아키텍처를 구현하면 서로 다른 소스의 데이터를 통합할 수 있는 확장 가능한 방법이 제공됩니다. 인프라가 아닌 비즈니스 도메인별로 데이터를 구성함으로써 각 도메인은 필요에 맞는 도구를 선택할 수 있습니다. 조직은 지속적으로 혁신하면서 제너레이티브 AI 솔루션을 통해 최신 데이터 아키텍처의 가치를 극대화할 수 있습니다.

자연어 기능을 사용하면 비기술 사용자가 복잡한 SQL이 아닌 대화식 영어를 통해 데이터를 쿼리할 수 있습니다. 그러나 완전한 이점을 실현하려면 몇 가지 문제를 극복해야 합니다. AI 및 언어 모델은 적절한 데이터 소스를 식별하고 효과적인 SQL 쿼리를 생성하며 내장된 결과와 함께 일관된 응답을 대규모로 생성해야 합니다. 또한 자연어 질문을 위한 사용자 인터페이스도 필요합니다.

전반적으로 AWS를 사용하여 최신 데이터 아키텍처 및 생성 AI 기술을 구현하는 것은 엔터프라이즈 규모의 다양하고 광범위한 데이터에서 핵심 통찰력을 수집하고 전파하기 위한 유망한 접근 방식입니다. AWS의 제너레이티브 AI에 대한 최신 오퍼링은 다음과 같습니다. 아마존 기반암는 완전히 관리되는 서비스이며 기초 모델을 사용하여 생성 AI 애플리케이션을 구축하고 확장하는 가장 쉬운 방법입니다. AWS는 또한 다음을 통해 기초 모델을 제공합니다. Amazon SageMaker 점프스타트 as 아마존 세이지 메이커 끝점. Amazon Bedrock이 제공하는 통합 용이성과 확장 가능한 도메인 지향 데이터 인프라를 포함한 대규모 언어 모델(LLM)의 조합은 이를 다양한 분석 데이터베이스 및 데이터 레이크에 저장된 풍부한 정보를 활용하는 지능적인 방법으로 자리매김합니다.

게시물에서는 회사가 법적 데이터와 같은 여러 데이터베이스 및 API에 상주하는 데이터로 최신 데이터 아키텍처를 배포한 시나리오를 보여줍니다. 아마존 단순 스토리지 서비스 (Amazon S3), 인적 자원 Amazon 관계형 데이터베이스 서비스 (Amazon RDS), 판매 및 마케팅 아마존 레드 시프트, 타사 데이터 웨어하우스 솔루션의 금융 시장 데이터 눈송이, 제품 데이터를 API로 제공합니다. 이 구현은 기업의 비즈니스 분석, 제품 소유자 및 비즈니스 도메인 전문가의 생산성을 향상시키는 것을 목표로 합니다. 이 모든 것은 회사가 비즈니스 목표를 보다 효율적으로 달성할 수 있도록 하는 이 도메인 메시 아키텍처에서 생성 AI를 사용하여 달성되었습니다. 이 솔루션에는 JumpStart의 LLM을 SageMaker 엔드포인트 및 타사 모델로 포함하는 옵션이 있습니다. 우리는 기업 사용자에게 데이터 채널에 대한 기본 지식 없이도 사실에 기반한 질문을 할 수 있는 매체를 제공하여 간단한 SQL 쿼리에서 복잡한 SQL 쿼리 작성의 복잡성을 추상화합니다.

솔루션 개요

AWS의 최신 데이터 아키텍처는 인공 지능 및 자연어 처리를 적용하여 여러 분석 데이터베이스를 쿼리합니다. Amazon Redshift, Amazon RDS, Snowflake 등의 서비스를 이용하여 아마존 아테나AWS 접착제, 다양한 소스의 데이터를 통합하는 확장 가능한 솔루션을 만듭니다. 사용 랭체인, Amazon Bedrock 및 JumpStart의 기초 모델을 포함하여 LLM 작업을 위한 강력한 라이브러리 아마존 세이지 메이커 스튜디오 notebooks는 사용자가 자연스러운 영어로 비즈니스 질문을 하고 관련 데이터베이스에서 가져온 데이터로 답변을 받을 수 있는 시스템을 구축합니다.

다음 다이어그램은 아키텍처를 보여줍니다.

하이브리드 아키텍처는 데이터 소스 식별, SQL 생성 및 결과가 포함된 텍스트 생성을 위한 Amazon Bedrock 및 JumpStart의 기반 모델과 함께 여러 데이터베이스 및 LLM을 사용합니다.

다음 다이어그램은 솔루션의 특정 워크플로 단계를 보여줍니다.

단계는 다음과 같습니다.

  1. 비즈니스 사용자가 영어 질문 프롬프트를 제공합니다.
  2. AWS Glue 크롤러는 빈번한 간격으로 실행되어 데이터베이스에서 메타데이터를 추출하고 AWS Glue 데이터 카탈로그. Data Catalog는 Chain Sequence 1에 입력됩니다(이전 다이어그램 참조).
  3. LLM 및 프롬프트 작업 도구인 LangChain은 Studio 노트북에서 사용됩니다. LangChain은 LLM을 정의해야 합니다. Chain Sequence 1의 일부로 프롬프트 및 Data Catalog 메타데이터는 SageMaker 엔드포인트에서 호스팅되는 LLM으로 전달되어 LangChain을 사용하여 관련 데이터베이스 및 테이블을 식별합니다.
  4. 프롬프트 및 식별된 데이터베이스 및 테이블은 Chain Sequence 2로 전달됩니다.
  5. LangChain은 데이터베이스에 대한 연결을 설정하고 SQL 쿼리를 실행하여 결과를 얻습니다.
  6. 결과는 LLM에 전달되어 데이터로 영어 답변을 생성합니다.
  7. 사용자는 다른 데이터베이스에서 데이터를 쿼리하는 프롬프트에 대한 영어 응답을 받습니다.

다음 섹션에서는 관련 코드와 함께 몇 가지 주요 단계를 설명합니다. 여기에 표시된 모든 단계에 대한 솔루션 및 코드에 대해 자세히 알아보려면 다음을 참조하십시오. GitHub 레포. 다음 다이어그램은 따라야 할 단계의 순서를 보여줍니다.

사전 조건

호환되는 모든 데이터베이스를 사용할 수 있습니다. SQLAlchemy LLM 및 LangChain에서 응답을 생성합니다. 그러나 이러한 데이터베이스에는 메타데이터가 AWS Glue 데이터 카탈로그에 등록되어 있어야 합니다. 또한 JumpStart 또는 API 키를 통해 LLM에 액세스할 수 있어야 합니다.

SQLAlchemy를 사용하여 데이터베이스에 연결

LangChain은 SQLAlchemy를 사용하여 SQL 데이터베이스에 연결합니다. 엔진을 생성하고 각 데이터 소스에 대한 연결을 설정하여 LangChain의 SQLDatabase 기능을 초기화합니다. 다음은 에 연결하는 방법의 샘플입니다. Amazon Aurora MySQL 호환 에디션 서버리스 데이터베이스 및 직원 테이블만 포함:

#connect to AWS Aurora MySQL
cluster_arn = <cluster_arn>
secret_arn = <secret_arn>
engine_rds=create_engine('mysql+auroradataapi://:@/employees',echo=True,
  connect_args=dict(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn))
dbrds = SQLDatabase(engine_rds, include_tables=['employees'])

다음으로 사용자 질문을 기반으로 데이터베이스와 테이블 이름을 식별하기 위해 Chain Sequence 1에서 사용하는 프롬프트를 작성합니다.

동적 프롬프트 템플릿 생성

메타데이터 정보를 저장 및 관리하도록 설계된 AWS Glue 데이터 카탈로그를 사용하여 사용자 쿼리에 대한 데이터 소스를 식별하고 다음 단계에 설명된 대로 Chain Sequence 1에 대한 프롬프트를 빌드합니다.

  1. 우리는 다음을 사용하여 여러 데이터 소스의 메타데이터를 통해 크롤링하여 데이터 카탈로그를 구축합니다. JDBC 연결 시연에 사용.
  2. Boto3 라이브러리를 사용하여 여러 데이터 소스에서 Data Catalog의 통합 보기를 구축합니다. 다음은 Aurora MySQL 데이터베이스용 데이터 카탈로그에서 직원 테이블의 메타데이터를 가져오는 방법에 대한 샘플입니다.
 #retrieve metadata from glue data catalog
  glue_tables_rds = glue_client.get_tables(DatabaseName=<database_name>, MaxResults=1000)
    for table in glue_tables_rds['TableList']:
        for column in table['StorageDescriptor']['Columns']:
             columns_str=columns_str+'n'+('rdsmysql|employees|'+table['Name']+"|"+column['Name'])

통합 데이터 카탈로그에는 스키마, 테이블 이름 및 열 이름과 같은 데이터 소스에 대한 세부 정보가 있습니다. 다음은 통합 데이터 카탈로그의 출력 샘플입니다.

database|schema|table|column_names
redshift|tickit|tickit_sales|listid
rdsmysql|employees|employees|emp_no
....
s3|none|claims|policy_id

  1. 통합 데이터 카탈로그를 프롬프트 템플릿에 전달하고 LangChain에서 사용하는 프롬프트를 정의합니다.
prompt_template = """
From the table below, find the database (in column database) which will contain the data (in corresponding column_names) to answer the question {query} n """+glue_catalog +""" Give your answer as database == n Also,give your answer as database.table =="""

체인 시퀀스 1: LangChain 및 LLM을 사용하여 사용자 쿼리에 대한 소스 메타데이터 감지

이전 단계에서 생성된 프롬프트 템플릿을 LangChain 모델에 대한 사용자 쿼리와 함께 프롬프트에 전달하여 질문에 답할 최상의 데이터 소스를 찾습니다. LangChain은 우리가 선택한 LLM 모델을 사용하여 소스 메타데이터를 감지합니다.

다음 코드를 사용하여 JumpStart 또는 타사 모델의 LLM을 사용합니다.

#define your LLM model here
llm = <LLM>
#pass prompt template and user query to the prompt
PROMPT = PromptTemplate(template=prompt_template, input_variables=["query"])
# define llm chain
llm_chain = LLMChain(prompt=PROMPT, llm=llm)
#run the query and save to generated texts
generated_texts = llm_chain.run(query)

생성된 텍스트에는 사용자 쿼리가 실행되는 데이터베이스 및 테이블 이름과 같은 정보가 포함됩니다. 예를 들어 "이번 달에 생일이 있는 모든 직원의 이름을 지정하십시오."라는 사용자 쿼리의 경우 generated_text 정보를 가지고 database == rdsmysqldatabase.table == rdsmysql.employees.

다음으로 인적 자원 도메인, Aurora MySQL 데이터베이스 및 직원 테이블의 세부 정보를 Chain Sequence 2에 전달합니다.

체인 시퀀스 2: 사용자 쿼리에 응답하기 위해 데이터 소스에서 응답 검색

다음으로 LangChain의 SQL 데이터베이스 체인을 실행하여 텍스트를 SQL로 변환하고 생성된 SQL을 데이터베이스에 대해 암시적으로 실행하여 데이터베이스 결과를 간단한 읽기 가능한 언어로 검색합니다.

구문적으로 올바른 방언으로 SQL을 생성한 다음 데이터베이스에 대해 실행하도록 LLM에 지시하는 프롬프트 템플릿을 정의하는 것으로 시작합니다.

_DEFAULT_TEMPLATE = """Given an input question, first create a syntactically correct {dialect} query to run, then look at the results of the query and return the answer.
Only use the following tables:
{table_info}
If someone asks for the sales, they really mean the tickit.sales table.
Question: {input}"""
#define the prompt
PROMPT = PromptTemplate( input_variables=["input", "table_info", "dialect"], template=_DEFAULT_TEMPLATE)

마지막으로 LLM, 데이터베이스 연결 및 프롬프트를 SQL 데이터베이스 체인에 전달하고 SQL 쿼리를 실행합니다.

db_chain = SQLDatabaseChain.from_llm(llm, db, prompt=PROMPT)
response=db_chain.run(query)

예를 들어 "이번 달에 생년월일을 가진 모든 직원의 이름을 지정하십시오"라는 사용자 쿼리의 경우 대답은 다음과 같습니다.

Question: Name all employees with birth date this month SELECT * FROM employees WHERE MONTH(birth_date) = MONTH(CURRENT_DATE()); User Response:
The employees with birthdays this month are:
Christian Koblick
Tzvetan Zielinski

정리

제너레이티브 AI로 최신 데이터 아키텍처를 실행한 후에는 사용하지 않을 리소스를 모두 정리해야 합니다. 사용된 데이터베이스(Amazon Redshift, Amazon RDS, Snowflake)를 종료하고 삭제합니다. 또한 추가 비용이 발생하지 않도록 Amazon S3에서 데이터를 삭제하고 Studio 노트북 인스턴스를 중지하십시오. JumpStart를 사용하여 LLM을 SageMaker 실시간 엔드포인트로 배포한 경우 SageMaker 콘솔 또는 Studio를 통해 엔드포인트를 삭제하십시오.

결론

이 게시물에서는 최신 데이터 아키텍처를 SageMaker 내의 생성 AI 및 LLM과 통합했습니다. 이 솔루션은 타사 모델뿐만 아니라 JumpStart의 다양한 텍스트 대 텍스트 기반 모델을 사용합니다. 이 하이브리드 접근 방식은 데이터 소스를 식별하고, SQL 쿼리를 작성하고, 쿼리 결과로 응답을 생성합니다. Amazon Redshift, Amazon RDS, Snowflake 및 LLM을 사용합니다. 솔루션을 개선하기 위해 더 많은 데이터베이스, 영어 쿼리용 UI, 프롬프트 엔지니어링 및 데이터 도구를 추가할 수 있습니다. 이것은 여러 데이터 저장소에서 통찰력을 얻는 지능적이고 통합된 방법이 될 수 있습니다. 이 게시물에 표시된 솔루션과 코드에 대해 자세히 알아보려면 다음을 확인하세요. GitHub 레포 . 또한 참조 아마존 기반암 생성 AI, 기초 모델 및 대규모 언어 모델에 대한 사용 사례.


충수

예제 프롬프트

도메인 데이터베이스/API 신속한 SQL(LLM에서 생성) 산출
영업 및 마케팅 아마존 레드시프트 얼마나 많은 티켓 판매가 있습니까? SELECT COUNT(*) AS total_sales
FROM tickit.sales;
There are 172,456 ticket sales.
영업 및 마케팅 아마존 레드시프트 2008년 티켓 판매에 대한 총 수수료는 얼마였습니까? SELECT SUM(commission) AS total_commission
FROM tickit.sales
WHERE EXTRACT(YEAR FROM saletime) = 2008
The total commission for ticket sales in the year 2008 was $16,614,814.65.
이용약관 S3 2023년에 얼마나 많은 사기가 발생했습니까? SELECT count(*)
FROM claims
WHERE extract(year from write_time) = 2023 AND fraud = 1;
There were 164 fraud claims in 2023.
이용약관 S3 올해 얼마나 많은 정책이 청구되었습니까? SELECT count(*)
FROM claims;
There were 5000 claims made this year.
인사부 아마존 오로라 MySQL 이번 달 생년월일로 모든 직원 이름 지정 SELECT * FROM employees
WHERE MONTH(birth_date) = MONTH(CURRENT_DATE());
The employees with birthdays this month are:
Christian Koblick
Tzvetan Zielinski
Kazuhito Cappelletti
Yinghua Dredge
인사부 아마존 오로라 MySQL 1990년 이전에 고용된 직원은 몇 명입니까? SELECT COUNT(*) AS 'Number of employees hired before 1990'
FROM employees
WHERE hire_date < '1990-01-01'
29 employees were hired before 1990.
금융 및 투자 눈송이 2013년 XNUMX월 실적이 가장 좋았던 주식과 최악의 주식은 무엇입니까? SELECT name, MAX(close) AS max_close, MIN(close) AS min_close
FROM all_stocks_5yr
WHERE date BETWEEN '2013-05-01' AND '2013-05-31'
GROUP BY name
ORDER BY max_close DESC, min_close ASC
The stock that performed the best in May 2013 was AnySock1 (ASTOCK1) with a maximum closing price of $842.50. The stock that performed the worst was AnySock2 (ASTOCK2) with a minimum closing price of $3.22.
금융 및 투자 눈송이 2013년 XNUMX월에 거래된 주식의 평균 거래량은 얼마입니까? SELECT AVG(volume) AS average_volume
FROM all_stocks_5yr
WHERE date BETWEEN '2013-07-01' AND '2013-07-31'
The average volume of stocks traded in July 2013 was 4,374,177
제품 – 날씨 API 지금 뉴욕 날씨는 화씨로 어떻습니까?

저자에 관하여

나브니트 투테자 Amazon Web Services의 데이터 전문가입니다. AWS에 합류하기 전에 Navneet은 데이터 아키텍처를 현대화하고 포괄적인 AI/ML 솔루션을 구현하려는 조직의 조력자로 일했습니다. 그녀는 Thapar University에서 공학 학위를, Texas A&M University에서 통계학 석사 학위를 받았습니다.

소빅 쿠마르 나트 AWS의 AI/ML 솔루션 아키텍트입니다. 그는 금융, 운영, 마케팅, 의료, 공급망 관리 및 IoT 분야에서 종단간 기계 학습 및 비즈니스 분석 솔루션을 설계한 광범위한 경험을 가지고 있습니다. Sovik은 ML 모델 모니터링에 대한 기사를 발표했으며 특허를 보유하고 있습니다. 그는 University of South Florida와 스위스 Fribourg 대학교에서 이중 석사 학위를, Kharagpur에 있는 Indian Institute of Technology에서 학사 학위를 받았습니다. 업무 외에는 여행, 페리 타기, 영화 감상을 즐깁니다.

spot_img

최신 인텔리전스

spot_img