반응형

AI/Gen AI 11

Project HowAbout RAG API - Outro: TPM Back Off 적용

Vector Store에서의 TPM 문제 개선에 이어 이번에는 Generation과 Query Translation파트에서의 개선을 진행해 봤다.Vector Store 생성 파트사용 토큰 수 지정Batch API 사용Embedding Model 변경Query Translation & Generation 파트Tenacity 혹은 Backoff 적용 문제 개선에 대한 동기와 그 선정과정이 궁금하다면 아래의 링크로 가면 된다.Project HowAbout RAG API - Outro: Optimization - TPM 문제 정의 실시간 응답이 필요한 경우 Tenacity나 Backoff를 사용해야 한다. 하지만 여기서 중요한 부분이 있는데 OpenAI에서 이 방식을 추천하나 절대로 장담하지 못한다는 사실이다...

AI/Gen AI 2024.10.03

Project HowAbout RAG API - Outro: TPM Vector Store 개선

이전 포스트에서 TPM 문제에 대한 해결책을 실제로 구현해 보고 비교해 봤다. 먼저 Vector Store를 개선해보려고 한다.Vector Store 생성 파트사용 토큰 수 조정Batch 적용Embedding Model 변경Query Translation & Generation 파트Tenacity 혹은 Backoff 적용 문제 개선에 대한 동기와 그 선정과정이 궁금하다면 아래의 링크로 가면 된다.Project HowAbout RAG API - Outro: Optimization - TPM 문제 정의  사용 토큰 수 조정먼저 토큰이 정확히 얼마나 어디서 쓰이는지 확인하기 위해 진행했다. 그래서 먼저 tiktoken을 활용해서 사용되는 토큰의 규모를 파악했다. 또한 기본적으로 시도할 수 있는 부분이 적절한 ..

AI/Gen AI 2024.10.02

Project HowAbout RAG API - Outro: Optimization - TPM 문제 정의

개선 동기현재 프로젝트를 위해 만든 RAG API의 경우 Retrieval과정에서 들어오는 Query에 대한 Embedding과 Multiple Query Generation 생성과정에서도 외부 Model API를 사용한다.(OpenAI API: text-embedding-3-large & gpt-4o) 그렇다 보니 TPM이라는 에러가 발생할 요소가 있었다. 또한 Vector Store를 만드는 과정이었던 Data Ingestion 파트에서도 일정 수준의 데이터가 들어가면 바로 TPM 문제가 발생할 가능성이 다분했었다. 물론 발생하기 전까지는 그런 문제가 전형 없다고 생각했으나 되려 발생해서 다행이라고 생각했다. 그래서 추후 외부 Model API를 사용할 수 있는 상황을 대비하여 구현된 프로젝트에서 개..

AI/Gen AI 2024.09.28

RAG 구현 Step-by-Step: Generation 및 API 전환

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현 및 API 전환드디어 RAG 구현의 마지막 부분인 Generation과 API 전환 단계로 넘어왔다. Retrieval 파트 구현에 대한 시간 투자로 인해서 이번 포스트에는 간단히 구현동기, 구현과정 그리고 문제상황에 대해서만 간단히 정리해 봤다. 먼저 Generation을 구체화한 부분에 대한 구현동기는 아래와 같다.구현동기챗봇이 아닌 API 요청으로 작동하기 때문에 클라이언트로 반환해야 하는 응답이 일정해야 한다. 특히, 클라이언트로의 응답을 json으로 Restful api를 만들..

AI/Gen AI 2024.09.24

RAG 구현 Step-by-Step Embedding & Searching: Query Translation

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현위의 그림은 LangChain에서 RAG를 필요에 맞춰 수정할 수 있는 부분을 도식화한 그림이다. 위의 그림과 같이 단순히 RAG는 조회와 조회된 결과를 바탕으로 생성하는 간단한 구성이 아니었다. 조회와 생성 그리고 데이터 확보 부분 또한 기획한 서비스 의도에 맞춰 다양하게 변형할 수 있었다.  그래서 이번 Embedding & Searching에서는 Query에 대한 Embedding을 진행하고 그다음 가장 유사한 Vector들을 찾는 유사도 방식에 추가적으로 Query에 대한 분석과 ..

AI/Gen AI 2024.09.20

RAG 구현 Step-by-Step Vector DB 구현 - 2: Faiss with LangChain

RAG 구현 Step-by-Step: Intro 가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation 구현이전의 포스트에 이어 이제는 Faiss를 활용해 Vector Store를 구현했다. 그리고 여기서 먼저 말하고 싶은게 있다. 절대로 ChatGPT를 써서는 안된다. ChatGPT의 경우 구현에 대한 클루와 인사이트를 줄 수 있으나 디테일한 부분에 있어서는 공식문서가 더 확실하다. 그리고 ChatGPT가 정확하다면 모델을 파인튜닝하거나 지금과 같이 RAG 방식을 구현한다는게 의미가 없을 것이다.  FAISS의 구체적인 부분에 있어 아래의 포스트를 참고하면 좋다. 1. 도대체 LangChai..

AI/Gen AI 2024.09.17

RAG 구현 Step-by-Step Vector DB 구현 - 1: Implementation Outline

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현 위의 내용을 바탕으로 현재 크롤러가 잘 작동하고 있는 상황이고 크롤러가 현재 열심히 크롤링을 하고 있다. (인간이 미안해) 현재 크롤러가 크롤링한 내용의 경우 간단한 json의 형태로 저장되고 있다. 그리고 json의 저장된 내용을 Vector DB에 담기 위해서는 아래와 같은 순서로 json을 변환해 주어야 한다.Json을 토큰화를 진행한다.전환된 토큰을 바탕으로 Embedding을 활용해 백터화를 진행한다.백터화된 값을 저장한다.이렇게 간단한 로직을 바탕으로 진행하면 되나 고민해 봐..

AI/Gen AI 2024.09.16

RAG 구현 Step-by-Step Dataset 확보: Selenium을 활용한 Crawler

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현데이터셋의 확보를 위해서 Selenium 크롤러를 구현했다. Beautifulsoup 대신 Seleinum을 사용한 이유는 간단히 자동화와 현재 같이 팀프로젝트를 진행하고 있는 팀원들도 쉽게 사용할 수 있도록 만들기 위해서 였다.  그래서 아래의 기능을 하는 크롤러를 만들었다.서울기준 각 행정구와 행정동의 음식점, 카페, 그리고 가볼만한곳을 검색한다.행정구 행정동의 검색된 장소들을 크롤링해온다.마지막으로 크롤링된 내용을 json으로 전환하여 저장한다. 행정구와 행정동의 카테고리별 장소들을..

AI/Gen AI 2024.09.02

RAG 구현 Step-by-Step Dataset 확보

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현기존의 Datset 및 Vector DB 순으로 진행하려고 했으나 문제가 발생했다. 생각보다 데이터를 확보하는 것이 엄청난 작업이라는 사실을 깨달아 버린것이다. 프로젝트를 위한 RAG이다 보니 프로젝트에서 필요한 Dataset을 확보 해야 했다. 그래서 여러 웹애플리케이션을 사용하려고 시도했으나 자원과 학습 목적(만들 수 있음 만들어보자)에 위배 돼 직접 Dataset을 확보하기로 하였고 이 생각을 했던 1주일 전의 나에게 쌍욕을 하고 싶으나 결론적으로 확보에 성공했다. 그래서 Datas..

AI/Gen AI 2024.08.28

RAG Step-by-Step: 가상환경 설정 및 MVP 구현

RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Embedding & Searching 구현Generation  구현 이전 Intro에 이어 RAG를 위한 가상환경과 RAG의 MVP(Most Viable Product) 선정하여 구현을 진행 했다. MVP 형태의 RAG를 구현한 다음 고도화를 할 수 있는 부분들을 선정하기 위해서였다. 그리고 사실 이단계에서는 RAG에 대한 이해가 높지 않기에 바로 의도한 RAG를 만들 수 없다고 생각했다. 그래서 현재 형태의 RAG는 아래의 사진과 같다. 가상환경의 경우 일반적인 Python 가상 환경으로 진행하였으나 Google Colab을 사용하였기에 문법이 조금은 다르다. 가상환경 설정!apt inst..

AI/Gen AI 2024.08.20
반응형