반응형

rag 10

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 - Outro: 회고

Project:HowAbout - Intro에 구현하기로 한 기능을 다 구현하지는 못했으나 4주간의  MVP를 달성했다. 그리고 이 포스트는 4주간의 과정에 대한 회고다. 먼저 처음에 예상했던 구성 사용하기로 한 기술스택들과 실제로 만들어지고 사용된 내용에 대해서 확인해 보자. 프로젝트 구현 전 예상 Software Architecture 예상 기술스택PlatformHuggingfaceFramework: RAGLangChainFramework: APIFastAPIEmbedding ModelKoBart, KcBert, KoBertVector DBFaiss, Chroma, PineconeLLMchatGPT 3.5 Turbo 프로젝트 구현 후 실제로 만들어진 Software Architecture 실제로 사용..

AI/Projects 2024.09.25

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

도대체 FAISS 그리고 Vector Store는 뭘까?

FAISS는 Facebook에서 만든 Facebook AI Similarity Search로 검색에 있어 단순히 Vector 기반 검색이 가능하게 데이터를 전환해 주는 라이브러리라고 생각하면 된다. 그리고 Vector Store의 경우 LangChain의 설명에 따르면 정규화되지 않는 데이터를 저장하고 저장된 데이터 안에서 검색을 돕도록 만들어진 Inteface다 그래서 간단한 Interface의 사용법은 아래와 같다.  vectorstore = MyVectorStore()retriever = vectorstore.as_retriever() 물론 사용하는 Vector Store에 따라 사용방식과 데이터 저장 방식이 다르다. 사용 방식보다 Vector Store에 대하 설명만 진행하겠다. 자세한 사용방식은..

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: 가상환경 설정 및 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

RAG 구현 Step-by-Step: Intro

진행 순서프로젝트에서 사용되기 위한 RAG application은 가장 작지만 모든 기능을 갖춘 MVP RAG 부터 만들고 핵심부분들을 수정해 나가면서 개발할 예정이다. 추후 개발 상황에 따라 구현과정과 요소들이 달라질 수 있다.  RAG 구현 Step-by-Step: Intro가상환경 설정 및 MVP 구현Dataset과 Vector DB 구현Dataset 확보Vector DB 구현Embedding & Searching 구현Generation  구현구현하려는 RAG의 역할챗봇의 형태로 전달 받은 입력 값을 Embedding해서 데이터베이스에서 Generation을 위한 내용들을 Searching 하여 지정된 출력 형태로 생성하여 반환하다. 아래의 표는 사용된 프레임워크와 모델들이다.(많이 바뀔 예정)Pl..

AI/Gen AI 2024.08.19

Why: RAG를 사용 해야 할까?

도대체 RAG는 뭘까? 에서 설명 했듯이 RAG의 경우 일반적인 수준의 LLM을 서비스의 의도에 맞게 결과를 생성하게 만드는 생성방식이다. 그러면 이런 RAG를 사용하는 이유가 뭘까? RAG를 사용해야하는 이유는 아래와 같다.현실적인 문제시간: 프로젝트를 진행하는 목적은 다르겠지만 대부분의 프로젝트는 한정적인 시간을 가지고 있다. 반면에 기존의 LLM을 대체 할 수 있는 수준의 Model을 만드는데는 많은 시간이 든다. 규모: 지금 개인적인 현상황에 있어서 LLM을 만드는건 불가능하다. 기존의 성능을 내기 위한 데이터 확보 부터 구현과 테스트까지의 그 규모는 감당이 되지 않는다.신뢰성위의 문제들이 해결 된다해도 새로운 LLM을 처음부터 만드는 것은 신뢰성에 문제를 일으킨다. 현재 나온 LLM의 신뢰성이 ..

AI/Why? 2024.08.15

도대체 RAG는 뭘까?

Retrieval-Augmented Generation의 약자인 RAG는 모델이기보다는 하나의 생성형 AI를 구성하는 방식이라고 생각된다. 크게는 2개의 단계로 이루어져 있으며 해당 단계를 통해 사용자에게 개발자가 의도한대로 답변이 가도록 한다.물론 2개의 단계 안에서 작은 단위의 단계가 존재한다.  그래서 RAG의 흐름을 Retreival과 Generation 두 단계로 나누었을 때 아래와 같다. RetrievalEmbedding사용자가 입력한 Query를 Vector로 전환한다.SearchingVector로 전환된 내용을 바탕을 DB에서 Generation에 사용될 내용을 찾는다.GenerationQuery + Searched ResultsDB에서 반환된 내용을 Query와 함께 참고하여 생성을 한다..

반응형