1. Text Splitter의 개념1.1 Text Splitter는 문서를 여러개의 Chunk로 분할하는 것1.1.1. RAG는 Document Loader로 불러온 문서를 벡터 임베딩으로 변환하여 벡터DB에 저장하고, 이를 활용1.1.2. LLM에게 문서를 그대로 입력하여 답변하도록 하면 입력값 길이 제한으로 인해 오류가 발생할 수 있다.예를 들어, GPT-4O모델의 경우에는 12만 8천 토큰, Claude 3.5 sonnect의 경우에는 20만 토큰까지 입려가능하다. 다만 , 한글과 영어에 토큰 개수 차이가 존재한다. 한글 문서를 LLM에게 넘겨줬을때 영어 토큰보다 빨리달고, 한글문서로 따지면 몇장 안되어 에러가 발생한다. 1.1.3. 문서를 여러개의 조각(Chunk)로 분할하여 벡터DB에 저장하고..
1. Document Loader의 대한 개념: 주어진 무서를 Rag에서 활용하기 용이한 형태(Document 객체)로 변환하는 역할을 하는게 LangChain의 Document Loader라고 할 수 있다.Document 객체는 문서의 내용을 담은 Page_content와 메타데이터로 이뤄진 Dictionary이다. 1.1. Page_contentPdf 데이터에 들어있는 텍스트들이 전부 여기에 들어간다.1.2. metadataPDF 파일에 대한 정보이다. 예를들어 쪽별로 분할했을시 이러한 정보에 관한 내용이 들어간다. 2. 실습2.1. PyPDF Loader쪽별로 Page_content확인 쪽별로 메타 데이터 확인 전체 page에 대한 정보 2.2 OCR 기능 활용하여 이미지-텍스트 혼합 페이지 내..
1. Prompt와 PromptTemplate1.1. Prompt: 모델에 대한 입력을 의미한다. 실제 LLM 서비스들 의경우, 사용자가 전부 입력하도록 만들지 않고 Back 단에서 여러 구성 요소를 통해 편리한 입력을 지원하도록 한다.1.2. PromptTemplate: 이러한 편리한 입력 지원을 위한 모듈이다. Langchain은 프롬프트를 쉽게 구성하고 작업할 수 있도록 여러클래스와 함수를 제공한다. 위의 Day1, Day2, Day3 에서 반복적으로 물어보게 했는데, 이를 템플릿 화 해서 공통질문으로 자동으로 물어보게 할 수 있다. 2. PromptTemplate의 종류2.1. PromptTemplate한 프롬프트에 매개 변수를 지정한다.2.2. ChatPromptTemplate위와 달리 ..
1. RAG의 필요성1.1. LLM의 한계 딥러닝모델은긴길이의문장을입력받거나출력하는데에어려움이있다.또한 학습된 데이터이외의것을만들어내는것에취약하다는한계점이 있다.1.1.1 환각 현상딥러닝모델은학습된데이터이외의정보에취약하다. 오픈 AI의최신모델인GPT-4o는2023년9월까지, Claude Sonnet 3.5는2024년4월까지의데이터 로학습되어, 이 이후의정보는 알지 못한다.예를 들어, 스프링 시큐리티 6.1 버전이 23년 5월에 출시 되었는데 이에 대해 gpt는 제대로 알지 못한다.1.1.2 기억 불가LLM은 사전 학습시에 받아들인 정보 외의 것은배우지 못한다. 따라서 오늘 나와 대화하고 있는 LLM은 어제 나와 대화했던 내용을 기억하지 못한다.1.1.3 토큰 제한LLM은 입력값의 길이가 길어지면 계산량이..