Statistics
  • 현재 접속자 234 명
  • 오늘 방문자 3,682 명
  • 어제 방문자 3,609 명
  • 최대 방문자 11,031 명
  • 전체 방문자 908,714 명
  • 전체 회원수 57 명
  • 전체 게시물 2,153 개
  • 전체 댓글수 4 개
AI강의사이트

[Track 1-4] RAG 아키텍처 – 개념부터 구현까지, Amazon Bedrock Knowledge base로 구현하는 RAG(검색 증강 생성)

작성자 정보

  • 작성자 bryanai
  • 작성일

컨텐츠 정보

  • 조회 1,797

본문

[Track 1-4] RAG 아키텍처 – 개념부터 구현까지

1. Embedding, VectorDB, RAG 기본 개념 소개 2. VectorDB로 사용할 수 있는 서비스들 소개 (Pgvector, OpenSearch, MemoryDB, etc) 3. Vector Search와 Text Search 비교 4. RAG 구현 패턴 (LLM & VectorDB, LLM & Text Search, LLM & VectorDB & TextSearch) 5. Vector Search 사용 시 고려해야 할 점 6. RAG & Stable Diffusion 모델 확장 아키텍처 

[Track 1-4] RAG 아키텍처 – 개념부터 구현까지 - YouTube

이 동영상에서는 RAG(Retrieval-Augmented Generation) 아키텍처를 사용하여 생성적 AI 모델을 사용자 지정하는 방법과 AWS에서의 구현에 대해 설명합니다.

데이터가 벡터로 저장되는 방법, 의미 검색 및 임베딩 사용을 포함하여 RAG의 기본 개념을 설명합니다.

이 동영상에서는 AWS 서비스 사용 개요, 특히 AWS 벡터 데이터베이스를 사용하여 벡터 데이터를 저장하고 쿼리하는 방법을 제공합니다.

오픈 소스 모델을 배포하고 미세 조정하기 위해 Amazon SageMaker JumpStart 및 Amazon Bedrock과 같은 AWS 서비스를 소개하고 사용 편의성과 자동화 기능을 강조합니다.

서비스 액세스부터 모델 배포 및 미세 조정까지 Amazon SageMaker JumpStart 사용에 대한 단계별 데모가 제공되어 AWS에서 AI 모델을 설정하고 관리하는 단순성을 강조합니다.



Amazon Bedrock Knowledge base로 구현하는 RAG(검색 증강 생성)




LLM(Large Language Models)에 최신 혹은 세부적인 내용에 대해 질문하면, 제대로 된 답변을 받지 못하는 경우가 있습니다. 그 이유는 LLM이 사전에 학습된 데이터를 기반으로 작동하기 때문인데요. 모델이 학습한 시점 이후의 최신 정보나, 학습 데이터에 포함되지 않은 세부적인 정보에 대해서는 정확한 답변을 받지 못할 수 있습니다.

RAG(Retriever-Augmented Generation, 검색 증강 생성, 이하 RAG)는 이러한 문제를 해결하기 위해 개발된 모델 중 하나인데요. RAG는 기존의 언어 모델에 정보 검색(retrieval) 기능을 추가해, 모델이 학습한 데이터 범위를 넘어서는 정보에 대해서도 답변할 수 있도록 도와줍니다.

Amazon Bedrock Knowledge base를 사용하면, Amazon Bedrock의 파운데이션 모델(Foundation Model, 대규모 딥 러닝 신경망, 이하 FM)을 추가적인 데이터와 안전하게 연결해 RAG를 지원할 수 있습니다. 이를 통해 FM을 다시 훈련할 필요 없이 관련성과 정확도가 높은 답변을 제공받을 수 있습니다.

이번 글에서는 기존 Bedrock Foundation Model의 답변과 Amazon Bedrock Knowledge base를 사용한 답변을 비교해 RAG의 기능 향상 여부를 확인해 보겠습니다.

AWS 기반 서버리스 검색 증강 생성(RAG)



Transcript:
(00:05) 안녕하세요 저는 aws 솔루션 아키텍트 김성이라고 합니다네 이번 시간에는 어 생성형 AI 모델을 커스터마이징 하는 방법 중에 하나인 그 리트리벌 오그 제너레이션 하는 그 약 약어로 레그라 하는데요이 레그에 개념화 그다음에 실제로 이러한 레그를 aws 어떻게 구현할 수 있는지 그런 구현 아키텍처에 대해서 설명드리겠습니다 이번 시간에 할 내용을 좀 더 살펴보면 먼저 aws 내에서 생성형 AI 어떻게 사용할 수 있는지 저희가 설명을 드릴 거고요 그리고 이제 레그의 기본적인 개념들 그다음에 이제 리그에서는 이제 주로 그 어 데이터를 벡터 형태로 저장을 하고 그리고 이제 그 벡타 터로 저장된 데이터를 이제 시멘틱 서치라이트 임베딩이란 개념이 있는데 이런 개념들 아고 그다음에 실제 이제 벡터를 저장하고 조회할 수 있는 벡터 데이터베이스를 aws 어떻게 사용할 수 있는지 이제 그런 부분에 소개를 드릴 겁니다 그다음 마지막으로는 이런
(01:08) 레그가 실제로 여러분들이 이제 구현을 하다 보면 상당히 어려운 부분들이 많은데 이런 부분들을 자동화할 수 있는 aws 서비스가 있는데 그 서비스에 대해서도 간략하게 소개해 드리겠습니다 먼저 이제 생성용 AI 대해서 간단하게 살펴보자면 아마 대부분 생성형 AI 대해서 이제는 익숙하실 거예요 이렇게 이제 텍스트를 입력을 한다든가 아니면은 그 텍스를 입력했을 때 이렇게 답변을 준다든가 아니면 텍스를 입력했을 때 이렇게 이미지를 생성해 주는 이런 유에 이제 AI 모델을 생성형 AI 모델이라고 얘기를 하는데 이런 생성형 AI 같은 경우는 동작하는 방식이 그 파운데이션이 모델을 사용을 해 가지고 기본적으로 텍스트라는 아니면 이미지 같은 거를 줬을 때 텍스트를 생성을 해 낸다든가 아니면 이제 코드라는 아니면 이미지 또는 이제 영상까지도 이렇게 생성을 해내는 이런에 새로운 컨텐츠를 만드는 이런 그 AI 모델을 생성형 AI 모델이라고 많이 얘기를 하는데요이 생성형 AI 모델에서 사용하는이 파운데이션 모델이라는 거는 어 여러 가지 다양한 종류의 데이터를 미리
(02:10) 학습을 시켜서 그리고이 하나의 모델을 가지고 또 다양한 종류의 일을 그 할 수 있는 그런 형태의 이제 그 머신 러닝 모델 중에 하난데요 어이 파운데이션 모델이 전통적인 이제 머신 러닝 모델하고 좀 차이점이 있다면 어 파운데이션 모델이 나오기 전에의 머신 러닝 가지고 어떤 문제를 푼다고 했을 때는 그 풀려고 하는 문제마다 모델을 하나씩 만드는 이런 구조로 많이 작업을 했는데 생성형 AI에 사용되는 이제 파운데이션 모델이라 개념이 나와 나올 때부터는 이제 하나의 모델을 만들고이 모델 하나 가지고 오히려 다양한 모델을 아 다양한 작업을 할 수 있게끔 저렇게 이제 미리 큰 모델을 만드는 그런 형태로 좀 많이 발전 했거든요 그래서 정리를 하자면 생성형 AI 있는 이제 이런 파운데이션 모델을 가지고 어 새로운 컨텐츠를 만드는 이런 유의 이제 어 모델이다 이렇게 생각하시면 되고요 이제 그렇다면 이런 생성형 AI 사용하는 파운데이션 모델이라 이런 것들을 aws 그래는 어떻게 어 사용할 수가 있을까 이제 크게 이제 두 가지 방법이 있는데요 그 첫 번째
(03:12) 방법은 아마존 세이지 메이커 점프 스타트라고 하는 서비스를 활용하는 방법이 있고요 두 번째는 아마존 베드 라이로 하는 또 서비스가 있거든요 그래서 하나씩 살펴보면 그니까 세이지 메이크 전프 스타트부터 먼저 볼 건데요 세이즈 메이커 점프 스타트를 한마디로 얘기해 보자면 세이지 메이커 사용자들을 위한 모델 허브라고 생각하시면 돼요 이제 여기 개발자분들이 많으실 텐데 개발자분들은 대부분 이제 기터브 같은 거 많이 사용을 하시잖아요 마찬가지로 이제 머신 러닝 모델 같은 경우도 기터브 럼 모델을 이렇게 공개를 해 가지고 올려 놓은 그런 사이트 같은게 있거든요 이제 허깅 페이스라는 파이토치 허브라는 아니면 이제 텐서플로 허브 이제 이런 것들이 있는데 마찬가지로 이런 것들의 오픈소스 모델을 AW S 내에서 쉽게 사용할 수 있도록 저희가 세이지 메이크 그 어 점프 스타트라 걸 만들어 놨고이 세이지 메이커 점프 스타트 안에는 400개가 넘는 어떤 오픈 소스 모델이라는 그다음에 빌트인 알고리즘들을 다 제공을 하고 있습니다 그래서 이렇게 세이지 메이크 점프
(04:12) 스타트에서 여러분들이 어떤 모델을 사용하고 싶으시면 이렇게 검색을 하시면 되거든요 검색을 하면 이렇게 모델 목록이 나오고 여기에서 이제 만약에 어 검색한 모델을 가지고 여러분들이 이제 추론 서버로 디플로이 하고 싶다 예 그렇다면은 그 모델을 클릭을 하시고 모델을 클릭하시면 이렇게 이제 디플로이 할할 때 그 사용할 인스턴스 타입 하고 그다음에 이제 시큐리티 관련된 그런 설정만 해 주신 다음에 그다음에 이제 디플로이 버튼을 누르시면 자동으로 추론 서버가 생성이 되고 여러분들이 바로 사용하실 수가 있습니다 그렇다면 이제 오픈 소스 모델 가지고 파인 튜닝을 하고 싶다 즉 여러분들의 데이터를 가지고 모델을 좀 튜닝을 하고 싶다데 이런 경우에는 여러분들의 데이터를 S3 위치 어 저장을 해 놓고 그 S3 위치 설정을 하시고 그다음에 이제 트레이닝에 사용할 인스턴스 타입을 설정을 하신 다음에 몇 가지 이제 하이퍼 파라미터가 트닝 하실 필요가 있다면 그런 분들을 설정한 다음에 그냥 트레닝 버튼만 눌러 주면 세이지 메이커 내에서 자동으로 그 여러분들이
(05:12) 선택한 그 오픈 소스 모델을 가지고 파인 튜닝을 하실 수가 있습니다 그래서 사실 이렇게 말만 들으면 잘 이해가 안 가실 텐데요 그래서 실제로 어떻게 사용하는지 그 간단하게 제가 데모로 보여 드릴 텐데 먼저 세이지 메이커 점프 스타트를 사용하시려면 이렇게 세이지 메이커로 그 들어오신 다음에 세이지 메이커에서이 도메인을 클릭하시면 이제 여러분들 생성한 도메인 어 생성한 도메인이 있다면 그 세이지 메이커 스튜디오 도메인 그 바로 보이실 거고 없 없다면 이렇게 크리에이트 도메인이라는 그 어 버튼을 눌러 가지고 도메인을 생생해 주시면 되거든요 그 도메인을 생산할 때 기본 그 디폴트 유저를 설정을 하시게 되는데 이렇게 디폴트 유저가 생기고 그러면 디폴트 유저에서 이렇게 론치 버튼을 클릭하시면 어 이런 모양의 세이지 메커 스튜디오가 보이거든요 그래서 여기에서 그 그 세이지메이커 점프 스타트 메뉴를 클릭하시면 이렇게 지금 보시는 것처럼 여러 가지 모델들을 기본으로 보실 수가 있고 여기에서 제가 만약에 특정 모델을 하나 선택을 한 다음에 디플로이 하고 싶다고 한다면
(06:12) 아까 설명드린 것처럼 그냥 디플로이 버튼을 누르면 자동으로 이렇게 디플로이 되고 이거 인서비스 상태로 되면 어 밑에 있는 이제 그 샘플 노트북 같은게 있거든요 그거를 이렇게 바로 띄우 가지고 실제로 그 론 서버가 어떻게 그 추론 서버에 실제 그 리퀘스트 보고 그 결과도 이렇게 받아보실 수가 있습니다 그래 지금 그 예제를 보여 드린 거고요 근데 이런 식으로 그러면은 그 파운데이션 모델들 특히나 이제 생성형 AI 모델 같은 것들을 세이지 메이커 점프 스타트의 저런 그 콘솔 같은 화면에서만 그 확인할 수가 있냐 그런 건 아니고요 세이지 메이커에 들어가시면 저렇게 이제 점프 스타트 밑에 파운데이션 모델이라고 하는 메뉴가 있거든요 여기를 이렇게 클릭을 하시면 어 파운데이션 모델을 이렇게 또 보실 수가 있어요 그리고 여기에서 이제 파운데이션 모델을 하나 선택하신 다음에 여기 보시면 이제 플레이그라운드 하는 메뉴가 있거든요 이걸 클릭을 하시면이 파운데이션 모델에서 사용할 수 있는 어떤 태스크에 대한 샘플들을 직접 이렇게 배포하지 않으시고 해 보실 수가
(07:14) 있어요 지금 여기 같은 경우는 이제 q& 같은 그런 샘플을 하마 돌려보고 그다음에 예 이런 식으로 이제 결과가 나올 거고요 그리고 이제 이런 식으로 해서 세이즈 메이커 점프 스타트에서 여러분들이 파운데이션 모델이라는 생성형 AI 모델을 사용하실 수가 있고 그다음에 두 번째 방법으로는 아마존 그 베드락이라고 하는 서비스가 있어요 베드락이라는 서비스를 한마디로 정의를 하자면 어 파운데이션 모델이 있으면 그 파운데이션을 모델을 쓸 수 있는 API 여러분한테 직접 제공을 해 드리는 거예요 그렇기 때문에 여러분들은 뭐 별도로 API 서버를 만들 필요도 없고 그냥 파운데이션 모델을 쓸 수 있는 그 API 바로 호출 해 가지고 여러분들이 원하는 작업을 하실 수가 있거든요 그래서 실제로 베드락 ES 제공하는 이제 모델들은 지금 보시는 그림처럼 어 요새 이제 되게 유명한 그런 그 생성형 AI 모델을 만드는 회사들의 어 모델들을 대부분 제공하고 있고요 예 라마라 그가 그다음에 엔트로픽 모델 같은 것들 예 그다음에 그 미스트 같은 거라든가 스테이블 디퓨전
(08:18) 이런 모델들을 다 제공을 하고 있고 그리고 앞서 얘기 드린 것처럼 아마존 베드락 그래는 생성형 AI 모델이라 이런 파운데이션 모델을 API 형태로 접근을 한다 그랬잖아요 그래서 아마존 베드락 그래는 인보크 모델이라고 하는 API 하나를 제공을 하거든요 그래서이 API 사용하시면 텍스트를 넣었을 때 텍스트를 출력을 한다든가 아니면 텍스트를 넣었을 때 이미지를 출력한다는 아니면 이미지를 넣었을 때 이미지를 생산하는 이런 이유의 작업들을 하실 수가 있고 마찬가지로 파인 튜닝이 필요하신 경우에도 동일한 그 API 써 가지고 하실 수가 있어요 그래서 실제로 인보크 모델이라는 API 사용하실 때는 어떤 식으로 사용하시면 파라미터가 여러 개 있는데이 중에 가장 중요한 한 거는 그 모델 아이디라고 하는 파라미터 든요 그래서 아마존 베드락 ES 제공하고 있는 파운데이션 모델의 아이디 값을 적에 넣고 그다음에 바디라고 하는 부분에다가 그 파운데이션 모델마다 필요한 파라미터들이 있거든요 그런 파라미터들을 넣으신 다음에 저 API 호출 하시면 바로 결과를 얻어 보실
(09:18) 수가 있습니다 근데 이제 어 생성용 AI 가지고 이제 어떤 어플리케이션 만들다 보면 가장 많이 만드는 어플리케이션 중에 하나가 이제 체포 같은 거잖아요 근데 체포 같은 것 을 만들때 생각을 해 보시면 어 사람이 어떤 질문을 하게 되면 만약에 긴 답변이라고 한다고 하더라도 그 긴 답변을 한 번에 주는게 아니라 이렇게 한 문장씩 준다든가 실제로 대화하듯이 이렇게 스트리밍 방식으로 아마 답변을 주는게 훨씬 더 이제 어 사용자들 테는 더 좋은 그를 제공할 거예요 그래서 마찬가지로 그 인보크 모델이라는 그 API 같은 경우는 어 아웃풋을 한 번에 전달을 해 주는데 만약에 긴 아웃풋이 있다고 했을 때이 긴 아웃풋을 이렇게 스티밍 방식으로 이렇게 잘라 가지고 쭉 연속적으로 전달을 해 주고 싶다 이럴 때는 어 인보크 모델 위드 리스 어 스팀이라는이 API 사용하시면 되고요 그래서 이제 어 아마존 베드락 ES 제공하는 모든 어 파운데이션 모델에서 저 API 활용할 수 있는 건 아니지만 대부분의 모델에서는 다 활용이 가능하시고 그다음에 자세한
(10:21) 내용은 저희들 이제 디벨로퍼 가이드에 잘 설명이 돼 있기 때문에 한번 사용하시기 전에는 한번 검 디벨로퍼 가이드를 한번 보시고 이제 선택적으로 사용하시면 좋을 것 같습니다 그래서 실제로 저희가 인보크 모델이라는 걸 갖고이 API 가지고 실제 쓰는 그 코드를 잠깐 살펴보면 앞서 설명드린 것처럼 모델 아이디라는 파라미터가 제일 중요하다고 했잖아요 그래서 저 모델 아이디라는 파라미터에 어 엔트로픽 모델을 쓰고 싶다 한다면 엔트로픽 모델 아이디를 저렇게 입력을 해 주고 그다음에 엔트로픽 모델을 쓸 때 저희가 그 파라미터를 줄 수가 있거든요 거기에 이제 엔트로픽 모델에서 정의한 저런 파라미터를 바디라는 파라미터에 넣어 가지고 이렇게 한 다음에 어 인보크 모델을 호출을 하게 되면 결과를 얻으실 수가 있고요 그다음에 이제 또 한 가지 재밌는 모델 같은 것 중에 하나가 이제 문장 같은 것들을 주면 이렇게 숫자 형태 벡터로 만들어 주는 이런 임베딩 모델 같은 것도 있는데 가장 대표적인게 어 아마존에 타이탄 임베딩이란 모델이 있고요 마찬가지로 이것도 이렇게 모델 아이디를 바꿔
(11:20) 주시고 인보크 모델이라는 API 호출하시면 이렇게 바로 사용하실 수가 있습니다 그리고 이제 여러분들한테 또 좋은 소식 하나는 뭐냐면 이렇게 제 아마존 베드락 같은 경우에 aws skk man 써 가지고 구현을 할 수 수 있는게 아니라 어 랭 체인이라고 하는 오픈 소스 이런 프레임웍이 있거든요이 프레임에서도 아마존 베드락 그에 대한 클래스가 있기 때문에 여러분들이 체인을 사용하신다면 저렇게 랭 체인에서 제공하는 베드락 그 클래스라 아니면 베드락 임베딩 클래스 같은 거를 쓰셔 가지고 바로 이제 베드락에디션 모드를 사용하실 수가 있습니다 그리고 그리고 이제 파운데이션 모델을 사용하실 때 한 가지 주의하실 점은 여러분들이 파운데이션 모델을 쓰고 싶다고 바로 쓰실 수 있는 건 아니고 어 파운데이션 모델 어떤 걸 쓰겠다고 하는 여러분들이 이제 설정을 해 주셔야 돼요이 설정은 어 아마존 베드락 그 웹 콘솔에 들어가시면 모델 엑스라고 하는 메뉴가 있거든요이 메뉴에 들어가셔서 원하는 파운데이션 모델을 찾으신 다음에이 부분에서 이제
(12:24) 엑세스를 하겠다고 저 상태를 바꿔 주시면 돼요 이렇게 이렇게 상태를 바꾸신 다음에 바로 API 호출해서 쓰실 수가 있고요 그래서 이제 지금까지 어 파운데이션 모델을 사용할 수 있는 두 가지 방법 세이즈 메이커 점프 스타트하고 그다음에 아마존 베드락 이렇게 두 가지에 대해서 설명을 드렸는데 그렇다면 이제 내가 어떤 어떤 방식으로 사용하는게 좋을까 이런 고민이 있으실 거예요 그래서 간단하게 설명을 드리자면 어 세이지 메이커 점프 스타트 같은 경우는 그 생성형 AI 모델 외에도 다른 종류 다양한 어 오픈 소스 모델을 다 사용하실 수가 있어요 그다음에 또 한 가지는 여러분들 이 직접 인스턴스 타입이라 그가 이런 부분들을 설정하실 수가 있기 때문에 그 그런 부분에서는 좀 자유도가 높거든요 하지만은 이제 반대로 생각을 해 보면 여러분들이 인프라 자체를 다 구성을 하셔야 되기 때문에 어 이렇게 머신 러닝에 대한 지식이 조금 이제 부족한가 아니면 머신러닝 엔지니어가 없는 고객사 같은 경우에는 어 저렇게 이제 인프라부 구축해 가지고 쓰기가 좀 어려우실
(13:21) 수도 있어요 이제 이런 경우에는 만약에 어플리케이션 개발에 집중을 하겠다 그리고 특히나 생성형 AI 어플리케이션을 만드는데 집중을 하겠다 그렇다면은 그냥 API 형태로 제공하는 베드락 바로 쓰실 쓰면은 어 훨씬 더 쉽게 개발을 하실 수가 있고요 인프라 자체를 여러분들이 관리하실 필요가 없이 저희가 서버리스트 형태로 제공을 하기 때문에 사용하신만큼만 비용을 이제 지불하시면 된다는 그건 또 장점이 있습니다 그래서 이제이 두 가지는 여러분의 상황에 따라서 선택적으로 사용하시면 예 좋을 것 같습니다 근데 이제 여기까지 들어보면 아 우리 이제 파운데이션 모델도 있고 그러면 우리는 이제 생성형 AI 어플리케이션을 쉽게 만들 수 있겠다 이제 이런 생각이 드실 때 데 근데 이제 생성용 AI 그 모델들을 사용하시다 보면 이런 유의 어떤 좀 이상한 답변들을 많이 보셨을 거예요 이제 그 대표적인 예로 예를 들어서 뭐 세종 대항이 맥북 프로를 던진 사건이 있었다는데 뭐 그거에 대해서 설명을 해 달라던가 아니면은 오늘 날짜의 주가에 대해서 어 얘기를 해
(14:19) 달라던가 아니면은 어떤 특정 기업에 대한 기업 내부 정보에 대한 어떤 그 질문을 했을 때 답변들 이제 이런 부분들에 있어서 어 생성형 AI 에서 사용하는 그런 파운데이션 모델들이 답변을 잘 못 하는 경우가 많거든요 아니면은 대계 답변 자체는 어 그럴 싸이 보이지만 사실은 그런 일이 발생할 수 없는 그런 상황도 많이 있죠 예를 들어서 그 세종 대양 맥북 던짐 사건 같은 경우에 그래서 이제 이렇듯이 어 여러분들이 파운데이션 모델을 가지고 있다고 그래 가지고 여러분들의 그 파운데이션 모델만 가지고 여러분들이 원하는 태스크를 다 이렇게 구현하실 수는 없 없고 대체로는 저런 파운데이션 모델을 커스터마이징해서 쓰셔야 되거든요 근데 저렇게 커스터마이징에서 쓸 수밖에 없는 이유가 파운데이션 모델 자체가 만들어진 과정을 생각해 보면 파운데이션 모델에서 사용하는 데이터 자체는 오픈된 공개적으로 오픈된 데이터들이 그요 뭐 위키피디아 같은 그런 데이터라 그가 아니면 인터넷에서 크롤링이 가능한 그런 데이터들이 이제 그런 걸로 했기 때문에 기업의 내부 정보 같은 즉 도메인에 특화된 어떤
(15:20) 정보 같은 것들은 파운데이션 모델을 이미 학습이 안 돼 있기 때문에 답변을 잘 못 주고 그다음에 이렇게 크롤링 해 가지고 또 학습을 오랜 기간 동안 학습을 하다 보니까 실제 학습에 사용된 모델 자체가 상당히 오래된 데이터라 최진 데이터가 업데이트 안 된 경우가 많아요 그리고 이제 파운데이션 모델이 답변을 줄 때는 이게 문법적으로 이게 문장이 이상하지 않다 이런 경우에는 그냥 답변을 내거든요 그렇기 때문에 약간은 이런 환각 현상 같은 것도 만들어 낼 수 있어요 사실 뭐 세종 대항 시대 때 맥북 프로가 나올 리가 없지만 뭐 세 세종 대항 웹프 프로를 던졌다는 문장 자체는 어 이상한 문장이 아니거든요 문법적으로는 그래서 그런 것 때문에 커스터마이징이 필요하고 그러면 이제 이렇게 커스터마이징 하는 방법 중에 하나가 이제 프롬프트 엔지니어링 방법이 있거든요 그러니까 프롬프트 엔지니어란 것은 여러분들이 이제 검색 같은 걸 하다 보면 처음에 키워드를 하나 놓고 검색 결과가 잘 나오지 않으면 뭐 여러 가지 검색 연산자를 쓴다든가 아니면 키워드를 더
(16:19) 추가를 해 가지고 원하는 결과를 그 얻는 경우가 많잖아요 마찬가지로 어 이렇게 파운데이션 모델에 우리가 원하는 응답을 얻기 위해서 결과를 얻기 위해서 여러분들이 넣는 입력의 텍스트를 이게 바꿔 주는 거예요 그런 작업들을 저희가 프롬프트 엔지니어라고 하고 사실 이제 프롬프트는 거는 이런 그 파운데이션 모델의 입력으로 들어가는 텍스트를 저희가 보통 프롬프트 얘기를 하고요 그래서 지금 예제 지금 보시는 것처럼 단순하게 내가 원하는 작업에 대한 질문만 하는게 아니라이 작업에 대한 어 예제라 그니까이 작업을 수행할 때 어떤 식으로 수행한다는 그런 예제를 준다든가 아니면 명확하게 이런 식으로 수행해라 하는 어떤 인스트 준다든가 이런 식으로 그 질문하고 이런 예제 같은 걸 같이 넣어 주면 실제 파운데이션 모델에서 응답을 줄 때 여러분들이 원하는 결과를 좀 더 빨리 줄 확률이 높거든요 그렇다면은 마찬가지로 저희가 예를 들어서 뭐 세종대학 맥북 던짐 사건 같은 경우에 대해서 좀 더 올바른 답변을 얻고 싶다 그렇다면은 저렇게 프롬프트를 넣은 상태에서 이제 프롬프트고 함께
(17:22) 넣어 줄게 뭐 맥북 프로가 언제 나온 제품이고 세종 대항은 언제 때 살았던 어떤 인물이다 이런 정보를 같이 넣어 주면 실제로 이렇게 어 그 파운데이션 모델들 즉 생성형 AI 모델들에서 나온 답변들이 엉뚱한 답변이 아니라 저런 사건이 일어날 수 없다 뭐 이런 식으로 답변을 줄 거예요 근데 이제 여기서 문제가 뭐냐면 그러면 저런 그 컨텍스트를 외번 사람이 어 찾아 가지고 넣어 줘야 되냐 상당히 번거로운 작업이고 여러분들이 그걸 계속 하는 거 자체도 어려우실 거예요 그래서 이거를 어떻게 하면 자동화할 수 있을까 이제 그렇게 자동화하는 방법으로 나온게 이제 리트리벌 오그 션이는 방법이거든요 그래서 어 원리 자체는 상당히 간단한데요 저렇게 여러분들이 프프 하고 같이 포함을 시켜 줄 그 맥락에 대한 정보들을 별도의 DV 다 저장을 해 놓고 사용자가 프프로 입력을 하면 그 프롬프트를 가지고 그 난리지 소스에서 그 맥락들을 찾고 그다음에 그 맥락고 그 프롬프트를 합쳐 가지고 이렇게 파운데이션 모델에 입력으로 넣은 다음에 결과를 얻어오는 이런 방식이죠
(18:26) 그러니까 실제로 여러분들이 넣어야 될 컨텍스트를 검색이라는 방법을 사용을 해 가지고 자동으로 채워 주는 거예요 그래서 간단하게 예를 살펴보면 만약에 이런 식으로 어떤 사용자가 HDL 그 콜레스트롤이 어떤 거야 하고 이렇게 물어봤을 때 어 만약에 저걸 그냥 l&m 모델 같은 거 즉 생상 AI 모델에 바로 그 요청을 하는게 아니라 어떤 의학 정보 같은 비가 있다면 그쪽에 이제 검색을 해 보는 거죠 그러면 어떤 콜레스테롤에 대한 정의라는 이런 정보들이 나올 거고 그럼 그 정보하나 사용자가 넣은 그 프롬프트를 합쳐 가지고 그 LM 모델 넣었을 때 이제 결과가 좀 더 좋게 나온다는 거죠 그러면 이제 저랬을 때 그 가장 중요하다고 생각되는 부분은 결국에는 사용자가 이렇게 입력한 프롬프트에서 그거를 이제 어떻게 하면 잘 검색을 해 가지고 좋은 결과를 얻을까 이제 그런게 고민이 될 거예요 예를 들어서 어 세종 대양 맥북 던짐 사건 프프로 본다면 뭐 세종 대왕이라 그가 아니면 이제 조선 시대에 살았다가 이런 식의 키워드로 이렇게 검색을 할 거거든요 근데 이렇게
(19:26) 검색을 한 결과를 잘 보시면 앞에 두 개 보다 맨 아래쪽에 있는 세 번째가 좀 더 좋은 검색 그 결과 든요 그니까 세종 대항에 대한 시대라 뭐 조선 왕조 실력이라는 이런 내용들이 좀 들어가 있어요 그 그러면 이걸 기계적으로 만약에 프롬프트에 추가를 한다고 한다면 이렇게 맨 뒤에 나와 있는 결과보다는 앞에 있는 결과를 먼저 이렇게 프프 추가할 확률이 높겠지요 그 그렇다면 만약에 검색을 했을 때도 이렇게 검색한 결과에서 그이 프롬프트 하고 연관성이 높은 결과가 이렇게 상위의 랭크가 되도록 그니까 이런 식으로 으로 검색 결과의 품질을 올려 주는게 좋거든요 그래서 다른 예로 잘 이렇게 보자면 만약에 저희가 이제 어 브라이트 컬러 골프 슈즈라 이런 식의 키워드를 넣었을 때 잘 보시면 이렇게 오른쪽에 보시면 상당히 저 키워드라고 맞는 검색 결과들 나와요 이게 신발도 나오고 대부분의 신발 색깔들이 밝은색 계열이 아아 근데 오른쪽을 보시면 사실 골프 슈즈라 키워드는 나오긴 하지만 그 연관성은 좀 적 적어 보이잖아요
(20:29) 그래서 이런 식으로 오른쪽처럼 좀 더 연관성 있는 검색 결과가 많이 나오고 상의에 나오도록 그 이런 작업을 해 줘야 되는데 그렇게 하려면 실제로 어떤 검색 키워드라 그다음에 검색 키워드가 검색하는 문서들 즉 단어들 사이에 어떤 의미적인 연관 관계를 컴퓨터가 이해를 할 수 있도록 저희가 만들어 줘야 되거든요 그 뭐 예를 들자면 지금 보이시는 것처럼 뭐 킹하 그 어 퀸은 그다음에 맨하 우몽 같은 경우는 남자냐 여성이냐 이제 이런 식의 관계를 갖고 있는 거고 그 한국하고 서울 그다음에 일본하고 도쿄 이런 거는 이제 국가하수도 아는 이런 관계를 그 내포를 하고 있는 거잖아요 그니까 이런 관계를 과연 컴퓨터 즉 기계가 어떻게 이거를 이해할 수 있게 만들 것이냐 이제 이게 중요한 부분인데 그니까 이렇게 컴퓨터가 어떤 단어들이 그가 이렇게 문장들 간의 의미적인 관계를 쉽게 파악할 수 있도록 이제 머신러닝 하시는 분들이 생각한 방법이 어떤 가냐면 만약에 어떤 단어들을 를 이런 공간 좌표에이 위치를 시키는 거예요 근데 위치를
(21:32) 시킬 때 어떤 조건을 거냐면 만약에 단어와 단어 사이에 의미가 되게 유사하다 그렇다면 그 단어와 단어 사이를 가깝게 이제 위치를 시키는 거죠 근데 그렇게 하려면 첫 번째로는 이런 문장이라 그가 단어가 들어왔을 때는 이렇게 숫자로 바꿔 줘야 되고 그다음에이 숫자로 바꿔 준 단어들을 이렇게 공간 좌표에 이렇게 배치를 시켰을 때는 의미가 같은 것들은 좀 가깝게 배치시키고 이렇게 이렇게 만들어 주면 되지 않을까 이렇게 생각을 한 거죠 그래서 그래서 이런 식으로 문장이라 그가 단어를 이렇게 숫자 형태 벡터로 만드는 그 형태의 표현을 저희가 벡터 임베딩이 하고 그리고 이런 벡터 임베딩은 사실상 머신 러닝에서 거의 대부분 많이 활용을 되고 있고요 그리고 이제 실제 이런 벡터 임베딩을 썼을 때 장점은 뭐냐면 그 벡터들 즉 단어와 단어 사이의 의미 관계를 벡터와 벡터 사이에 얼마나 가까이 위치 돼 있냐 즉 거리만 계산을 해 가지고도 이렇게 단어와 단어 사이에 의미 관계를 쉽게 파악할 수가 있고이 부분이 왜 중요하냐면 컴퓨터 같은 경우는 사람이 이해하는 것처럼 어떤 단어의 의미를
(22:33) 쉽게 이해하지 못하거든요 할 수 있는 거는 사치 연산이라 이런 것밖에 못 해요 그런데 저렇게 그 단어 자체를 벡터로 바꾸고 그다음에 그 벡터와 벡터를 위치를 시킬 때 의미적으로 가까운 벡터는 아 의미적으로 단어가 그 어 의미적으로 관계가 많으면 벡터가 그 가까운 위치에 위치시키도록 이렇게 만들었기 때문에 컴퓨터가 그냥 연 그 이렇게 층 연상 같은 걸 이용해서 즉 베타 산를 이용해 가지고 유사 쉽게 계산해 수 있다는 거죠 그래서 이제 보통 그 벡터 서치를 할 때 그 사용하는 유사도 계산 방법으로는 이제 유클리디안 그 거리를 계산한다 아니면 두 벡터 사이의 각을 계산하는 코사인 시티 아니면 두 벡터 사이의 내적을 계산하는 다 프로덕트이 세 가지 방법 중에 하나를 선택해서 많이 사용을 하고요 그리고 이렇게 어 그 단어라 그 외에 텍스트 외에 이제 오디오라 아니면 이미지 같은 경우도 이렇게 숫자 형태 벡터로 표현할 수가 있기 때 때문에 이렇게 그 다 텍스트가 아닌 다른 어떤 멀티미디어 데이터에 대해서도 저희가 쉽게 검색을 할 수가
(23:37) 있어요 그리고 이제 이때 이렇게 멀티미디어 데이터라 라든가 아니면 텍스트 같은 경우로 이렇게 벡터 형태로 바꾸는 머신 러닝 모델을 저희가 이제 임베딩 모델이라고 하고요 그래서 이렇게 임베딩 모델을 사용을 해 가지고 벡터로 만들고 그다음에 이렇게 벡터로 만든 거를 이제 벡터 데이터베이스라고 하는 곳에 저장을 해 가지고이 검색을 해서 이제 사용할 수가 있는 거죠 그래서 그래서 만약에 어 레그에 저희가 그 난리지 소스를 저장하는 곳에 벡터 데이터베이스를 사용을 한다면 전체적인 아키텍처가 이제 이런 식으로 바뀌게 될 거예요 그래서 먼저 난리지 베이스에 있는 문서라 그가 이런 것들을 임베딩 모델을 이용을 해 가지고 벡터로 바꾸고 그 벡터를 벡터 DB 이제 저장을 한 다음에 이제 사용자들이 그 프롬프트로 입력을 하면 그 프롬프트를 가지고 이제 벡터 디비에서 검색을 해서 컨텍스트를 찾은 다음에 그 컨텍스트를 합쳐 가지고 그 그 l&m 모델이라 생상 AI 모델에 전달하는 거죠 그때 이때 제 그 아까 설명드렸던 임베딩 모델을 사용해 가지고 어떤 입력을 벡타 형태로
(24:38) 바꾸게 되고요 그래서 이런 임베딩 모델의 대표적인 얘가 앞서 설명드렸던 아마존 베드락 사용하실 수 있는 이런 타이탄 임베딩 같은 모델을 바로 사용하실 수가 있고요 그리고 이때 중요한 부분이 어떤 부분이 있냐면 저는 임베딩 모델 같은 경우에 그 임베딩 모델에 인풋으로 들어갈 수 있는 그 텍스트의 길이가 제한적이에요 예를 들어서 뭐 500 단어까지 넣을 수 있다든가 이런 식의 제한이 있거든요 그렇기 때문에 만약에 긴 문서가 있다 예를 들어서 책 한 권에 있는 책 한 권의 내용을 가지고 뭔가 이렇게 벡터 디비를 만들겠다 이렇게 했을 때 그 책 한 권의 내용을 저런 임베딩 모델에 바로 인풋으로 넣을 수가 없고 그 책 이렇게 책한고 내용을 잘게 쫙 쪼개는 거예요 이게 문서 하나를 잘게 쪼갠 다음에 저 임베딩 모델의 인풋으로 넣을 수 있는 사이즈만큼 쪼개서 그걸 인풋으로 넣고 각각을 벡터로 만들거든요 그래서 저렇게 어 데이터를 쪼개는 작업 즉 문서를 쪼개는 거를 저희가 다큐먼트 청킹이라고 얘기를 하고이 청킹 하는 방법이 실제로 어떤 레그의 그 품질을
(25:40) 올리는 상당히 중요한 역할을 하거든요 그게 왜 그러냐면 저 이렇게 쪼개진 문장 문장 하나가 나중에 프롬프트의 컨텍스트로 들어가기 때문에 컨텍스트가 좋을수록 결과가 좋거든요 그러니까 저렇게 잘 쪼개 가지고 내가 원하는 어떤 결과를 잘 찾을 수 있는 형태로 만들어 주는게 중요하고 그래서 그게 보면은 세 가지 방법을 사용할 수가 있는데 첫 번째는 아예 그냥 문장 단위로 즉 마침표 단위로 이제 쪼개는 방법 두 번째는 이제 그 문장을 한 문장 단위로 쪼개는게 아니라 여러 문장 단위로 쪼개는 방법이 있고요 세 번째는 쪼갠 문장길이 약간 오버래핑을 하는 방법이 있어요 그래서 이렇게 세 가지 방법 중에 하나를 선택해서 많이 사용을 하시고 그래서 저렇게 그 문서를 갖다가 벡터로 만들고 그럼 그 벡터를 이제 저장할 벡터 데이터베이스가 필요할 텐데 aws 벡터 데이터베이스로 사용하실 수 있는 대표적인 예로는 오픈서치 서비스가 있고요 그다음에 두 번째로는 이제 오로라 포스트 그레스 큐에 그다음에 세 번째로는 메모리 DB 그다음에 다큐먼트 DB 이런 위에 이제 벡터
(26:41) 데이터베이스를 사용하실 수가 있고 그러면 이제 벡터 데이터베이스 외에 또 사용할 수 있는 방법이 어떤게 있냐면 앞서 맨 처음에 제가 레그를 설명할 때 이제 프롬프트에 있는 내용을 가지고 검색을 한 다음에 그다음에 그 검색한 결과를 컨텍스트로 넣어 준다고 했잖아요 그렇기 때문에 만약에 어떤 그 프롬프트를 가지고 우리가 텍스트 검색을 할 수가 있다 그렇다면은 그런 것도 일종의 어 난리지 베이스로 이제 사용할 수가 있거든요 그래서 대표적인 예로 어 aws n 캔드라 하는 관리형 서버리스 검색 서비스가 있거든요 그래서 이런 서비스를 활용하실 수가 있고 그다음에 오픈서치 같은 경우는 검색 엔진이기 때문에 마찬가지로 저렇게 풀텍스트 검색 형태로 이제 레그에 사용하실 수가 있습니다 그리고 이제 여기서 중요한 점이 오픈 서치 같은 경우는 벡터 검색도 가능하고 그다음에 또 풀텍스트 검색도 가능하거든요 그렇기 때문에 사실상 오픈 서치를 사용하시면이 두 가지 방식을 혼합해도 사용하실 수가 있어요 그래서 어 전체적으로 사용할 수 있는 벡터 데이트 베이스라 그가
(27:43) 검색 엔진 같은 경우는 이런 것들이 있고 그다음에 이제 검색하는 방식에 따라서 이렇게 세 가지 방식으로 저 여러분들이 사용할 수가 있는 거예요 그래서 지금까지 얘기 드렸던 이런 벡터 데이터베이스라는 검색 엔진을 가지고 만약에 어 레그를 구현한다 그러면 이제 어떤 식으로 구현할 수 있을지 그걸 간단하게 보여 드리자면 이제 레그는 이제 이런 모양일 거잖아요 여기서 중요한 부분이 벡터 데이터베이스를 쓰는 부분이 저렇게 난리지 소스를 저장하는 부분이거든요 그래서 저 난리지 소스를 저장하는 부분에서 만약에 내가 기본적으로 그 풀텍스트 검색 엔진을 사용을 하겠다 그러면 어 캔드라 오픈 처스 서비스 같은 걸 사용할 수가 있고 그렇게 되면 이제 그 이렇게 오픈 검색 엔진을 사용하실 때는 벡터 데이터베이스를 사용하는 것과 다르게 어 여러분들이 문서를 청킹 한다든가 벡터로 만들 필요가 없어요 그래서 그냥 문서 자체를 검색 엔진에 넣고 검색할 수 있는 형태로 만들어 주면 되거든요 그렇기 때문에 별도로 임베딩 하는 모델은 사용하지 않고 실제로 텍스트만 생성해내는 그 모델만
(28:41) 필요하고요 그리고 이제 난리지 소스만 이렇게 어 그 검색 엔진 같은 거 넣어 주시면 되고 여기서는 이제 캔드라 사용했는데 저 캔드라 자리에 만약에 오픈서치 서비스를 사용하신다면 이제 이런 모양이 될 거예요 그리고 이제 이번에는 그러면 이제 만약에 벡터 서치가 가능한 벡터 데이터베이스를 사용한다 그럼 이제 어떤 형태가 될 거냐면 어 벡터 데이터베이스를 사용하시려면 일단은 난리지 소스에 있는 문서나 데이터 같은 경우를 벡터로 만든 다음에 넣어야 되거든요 그렇기 때문에 벡터로 만들 수 있는 저런 임베딩 모델이 필요하고 또 이렇게 벡터로 만드는 과정에서 이렇게 문서 자체를 청킹 하는 작업들이 필요한 거예요 그리고 그렇기 때문에 이런 식의 데이터를 인젝션 하는 이런 워크플로우를 여러분들이 좀 직접 구현하실 필요가 있고요 마찬가지로 저렇게 그러면 이제 벡터 서치를 그 보셨는데 그 이번에는 벡터 서치도 가능하고 그다음에 풀텍스트 검색도 가능한 오픈 서치 서비스를 사용할 때는 어떤 형태로 쓰실 수가 있냐면 아키텍처 자체는 그 벡터 서치를 사용한 아키텍처가
(29:40) 유사해요 왜 그러냐면 벡터 임베딩 넣어야 저장을 해야 되고 그다음에 풀 텍스트도 저장을 해야 되기 때문에 사실상 아키텍처 자체는 동일한데 어 여기서 이제 주목할 부분은 앞서도 설명하신 것처럼 두 가지 검색 방식을 동시에 사용을 하실 수가 있기 때문에 여러분들이 이제 벡터 서치를 할 때 좀 더 더 정확한 하게 여러분들이 원하는 결과를 얻을 수가 있어요 예를 들어서 벡터 서치를 한 결과에서 이제 풀텍스 기능을 사용을 해 가지고 결과를 필터링 한다든가 아니면 풀텍스 서치를 한 스코어 값이랑 벡터 서치에서 한 스코어 값을 합쳐 가지고 새로운 스코어를 만들어서 여러분들이 원하는 형태의 어떤 결과를 얻는다 이런 작업이 가능한 거죠 그래서 지금까지는 난리지 소스를 어디에 저장하느라 아키텍처가 바뀐 거를 봤고 그렇다면 이번에는 저렇게 텍스트를 생성해 주는 LM 엔드포인트를 어떤 걸 사용하냐에 따라서 아키텍처가 어떻게 바뀌는지 간략하게 살펴보면요 어 먼저 이제 저희가 파운데이션 모델이라는 그건 생성형 AI 모델을 사용할 수 있는 방법이 aws 두 가지라고 말씀을
(30:42) 드렸잖아요 하나는 세이지메이커 점프스타 두 번째는 아마존 베드락 있데 어 세이지 메이커 점프 스타하고 아마존 베드락 그 동시에 쓰실 수가 있기 때문에 아마저 베드락 썼던 그 자리에 세이즈 메이커 점프 스타트로 다 교체가 가능해요 를 들어서 캔드라 어 아마존 베드락 사용한 부분이라면 마찬가지로 이렇게 텍스를 생성하는 부분에 세이지 메이커 점프 타트를 써 가지고 사용을 하실 수가 있고요 마찬가지로 어 벡터 서치를 사용하 부분에서 이제 임베딩 모델이라 그다음 텍스트를 생산하는 모델 여기에 어 세이지 메이커 점프스타트를 사용하실 수가 있어요 예 이렇게 하이브리드 서치 역시도 마찬가지 방법으로 하실 수가 있고요 그러면 이제 실제로 저렇게 어 레그를 어떻게 구현하는지 그 간단하게 예를 살펴보자면 어 이게 상당히 간단한 방법인데 앞서 얘기한 것처럼 어 만약에 벡터 임베딩 같은 것들이 번거롭고 그래서 텍스트 서치 기반으로 하겠다 그 그렇다면 캔드라 데이터를 놓고 그다음에 어 우리는 좀 더 오픈 소스 모델을 사용하고 싶 사용하고
(31:46) 싶다 그렇다면 이제 아마존 세이지메이커 점프 타트를 이용을 해 가지고 텍스를 생산하는 모델을 배포해서 이런 형태의 레그를 구성해 볼 수가 있고요 그래서 데모로 잠깐 살펴보면 먼저 어 텍스트 제너레이션 하는 모델을 배포를 해야 되기 때문에 세이지 메이커 점프 스타트에서 저렇게 검색을 해 가지고 저 모델을 이제 배포를 합니다 그래서 저렇게 배포를 하고 나면 그다음에 이제 캔드라 문서를 세인을 해야 될 거예요 그래서 문서를 지금 이미 색인된 상태고요 저거는 어떤 식으로 했냐면 저희가 캔드라 어 클라우드 포메이션으로 배포를 할 때 이제 왜 크롤링을 바로 할 수 있도록 저렇게 어 크롤링할 그 위아래 주소들을 넣고 이제 캔드라 구성을 했고요 그렇게 되면 캔드라 자동으로 문서가 세인이 됩니다 이제 이번에는 저렇게 만들어진 레그 어플리케이션을 커맨드 라인으로 한번 실행을 해 보면네 이런 식으로 동작을 하고 그래서 제가 이렇게 질문을 넣고 그러면 이렇게 간단히 답변이 나오고 그다음에 그 답변의 그 컨텍스트로 사용했던 소스가 어떤 건지도 이런 식으로 저희가
(32:48) 링크로 출력을 해서 확인해 보실 수가 있습니다 예 마찬가지로 다른 질문을 넣었을 때 그럼 이제 또 그 소스 데이터가 좀 달라지 죠 예 이런 식으로 확인을 해 보실 수가 있고요 그래서 지금까지 이제 파운데이션 모델이라 그가 그다음에 레그를 어떻게 구성할 수 있을지 뭐 이런 부분들에서 이렇게 쭉 설명을 드렸는데 막상 여러분들이 제가 이렇게 소개해 드는 그 아키텍처를 직접 구현한다고 했을 때 여러 가지 어려움들이 있으시거든요 첫 번째는 어떤 부분이냐 저렇게 다양한 데이터 소스를 이제 저런 벡터 데이터베이스라는 아니면 풀텍스트 검색 엔진에 넣어야 되는 문제가 있고 특히나 이제 벡터 데이터베이스 같은 거 쓰신다고 했을 때 문서가 업데이트되거나 계속 추가가 될 거잖아요 이제 그런 부분도 관리를 하셔야 되고 또 많은 양의 문서라고 한다면 많은 양의 그 벡터 임베딩이 나오고 그거를 이제 업데이트 할 수 있는 방법 이런 것도 다 직접 구현을 하셔야 되거든요 그러니까 코딩도 하셔야 되고 또 그다음에 저런 것들을 트래픽이 많이 들어왔을 때 어 오토 스케링 자동으로 돼 가지고 처리할 수
(33:50) 있도록 그런 식으로 시스템을 구성을 하셔야 돼요 그래서 이런 부분들이 실제로 구현할 때는 좀 어렵게 다가올 수가 있거든요 그래서 이런 부분들을 여러분들의 부담을 좀 덜어 주기 위해서 aws 만든 서비스가 난리지 베이스 4 아마존 베드락이라는 서비스예요 그래서 어 난리지 베이스 4 아마존 베드락이라는 서비스는 이제 aws 베드락 제공하는 파운데이션 모델하고 그다음에 aws 제공하는 벡터 데이터베이스를 내부적으로 연결을 한 다음에 여러분들이 저 난리지 베이스에서 제공하는 API 사용을 해 가지고 그 두가 그 어떤 텍스트를 생산해야 된다든가 아니면 프롬프트에 관련된 컨텍스트를 검색을 한다든가 이런 것들을 다 수행을 하실 수가 있어요 그래서 어 벡터 어 레그를 저 여러분들이 레그를 만들어 가지고 사용을 할 때 전체적인게 동작 방식이라든가 워크플로우를 저렇게 잘 살펴보시면 먼저 난리지 소스에서 저걸 벡터로 만든 다음에 벡터 디에 놓고 그다음에 실제로 나중에 프란 푸트가 들어오면 그 프란 푸트 역시도 벡터 형태로 바꾼 다음에 벡터 검색을 하고
(34:54) 거기서 나온 컨텍스트를 이제 프롬프트에 붙여 가지고 LM 모델에 어 요청을 하고 그 응답을 쓰는 형태군요 그러면 이제 밑에 있는 저런 데이터를 넣어 주는 작업이 작업이 생각보다 번거로울 수 있는데 어 그 이런 식으로 청킹 해야 되고 그다음에 임베딩 모드를 통해서 벡터를 만들어야 되는 저런 작업들이 있는데 저거를 날리지 베이스에서는 자동으로 해 준다는 거죠 그래서 실제로 어떻게 동작을 하냐면 여러분들이 날 그 벡터 DB 넣을 데이터를 S3 저장을 하고 그다음에 어 그 저 문서들을 어떤 방식으로 쪼갤 건지 즉 청킹 스트레치를 설정을 하신 다음에 그다음에 그렇게 설 그 청킹 된 문서들을 어떤 임베딩 모델을 써 가지고 벡터로 만들 건지 임베딩 모델을 선택하시고 그다음 세종 쪽으로 만들어진 벡터를 어떤 벡터 데이터베이스에 넣을 건지를 선택하신 다음에 그냥 클릭만 하시면 자동으로 문서를 이제 벡터 DB 아지 넣어 주십니다 이렇게 그렇게 할 수 있기 때문에 여러분들이 저런 어 그 데이터를 넣어 주는 작업을 직접 코딩할 필요가 없는 거죠 그래서 실제
(35:58) 로 그 난리지 베이스를 사용하시게 되면 저 난리지 베이스를 통해 가지고 벡터 데이터베이스에 이제 접근을 할 수 있기 때문에 어 컨텍스트를 그니까 프롬프트에 맞는 컨텍스트를 검색을 한다든가 그다음에 그걸로 llm 어떤 응답을 얻어오는 작업도 상당히 쉬워지는데요 그니까 첫 번째로 난리지 베이스에서는 그 컨텍스트를 가져오고 그다음에 그 컨텍스트를 가지고 어떤 텍스트를 생성해내는 작업이 두 가지 작업을 동시에 할 수 있는 어 리브 앤 제이라 하는 API 제공을 하고 있어요 그렇기 때문에 여러분들은 그냥 자연어로 그냥 텍스트로 어떤 프롬프트만 작성을 해 주면 그걸 갖고 그 난리지 베이스에서 자동으로 그 프롬프트에 대한 벡타 임베딩을 만들고 그걸로 벡터 데이터베이스에서 검색을 한 다음에 그래서 검색된 내용하고 프롬프트고 합쳐 가지고 컨텍스트를 만 그 새로운 프롬프트를 만들고 그걸로 llm 이제 요청을 해 가지고 최종 응답을 저 API 하나로 다 받아오는 거죠 그 상당히 번거로운 작업들을 하나의 API 처리를 할 수가 있고
(37:02) 또 한 가지는 만약에 여러분들이 그냥 어 난리지 소스에 있는 데이터만 내가 검색을 하고 싶다 그럴 때는 이제 리트리브 하는 API 사용하시면 어 난리지 베이스에서 벡터 DB 자동으로 검색을 해 가지고 그 결과를 이렇게 어 보내 줍니다 그래서 난리지 베이스를 사용하시게 되면 지금 보이시는 거 같은 이런 형태에 만약에 그 오픈서치 서비스 서버 저 벡터 데이터베이스를 사용하실 때는 저런 모양의 아키텍처가 될 텐데 저걸 난리지 베이스로 사용하시게 되면이 부분이 이제 아주 간소해지고 이런 형태로 난리지 베이스로 다 바뀌어지고 여러분들 어플리케이션은 어 벡터 DB 또는 이제 그 텍스트를 제너레이션 하는 LM 모델에 직접 ap 호출할 필요가 없어져요 그래서 이런 식으로 사용하실 수가 있고 그래서 실제로 난리지 베이스 쓰는 법을 간단하게 보면 난리지 베이스를 쓰시려면 이제 베드락 메뉴에 들어가신 다음에 난리지 베이스를 이렇게 생성을 해야 되거든요 그래서 크리에이트 난리지 베이스를 생성을 누르시면 저렇게 난리지 베이스 이름을 적게하고 그다음에 이제 난리지
(38:08) 베이스가 S3 있는 데이터를 접근을 해야 되고 또 벡터 DB 데이터를 쓸 수 있어야 되기 때문에 그 두 가지 권한이 있는 im 로를 만들어 주셔야 돼요 그래서 그거를 자동으로 만들거나 아니면 직접 만들거나 해서이 설정을 해 주신 다음에 그다음에 제 실제 그 텍스트 파일이 있는 S3 위치를 이렇게 설정을 하고 그 S 3에 대한 그 네이밍을 해 준 다음에 그다음에 이제 텍스트를 그니까데 도큐먼트를 청킹 해야 되잖아요 그 청킹 하는 것을 이렇게 설정을 해 주시면 됩니다 그래서 크게 세 가지 옵션을 제공을 하고 있고 그 디폴트 옵션 다른 거는 이제 픽스 사이즈 정킹 아니면 아예 청킹 안 하겠다 이렇게 세 가지 옵션을 제공하는데 대체로는 이렇게 픽스드 청킹 선택하신 다음에 그 토큰 사이즈 즉 한 번에 입력할 수 있는 문장의 길이를 저렇게 선택하시고 그다음에 오버랩 하는 비율을 어느 정도로 할지 이렇게 선택하신 다음에 그리고 이제 임베딩 할 모델을이 이렇게 보여주는 그 세 가지 중에 하나를 선택하신 다음에 사용할 수 있어요 그래서 이렇게 타이탄 임베딩

관련자료

댓글 0
등록된 댓글이 없습니다.
Member Rank