분류 전체보기

1. LCEL(Langchain Expression Language)은 Langchin 프레임워크에서 사용되는언어로, 다양한 장점(9가지)이 있다.  2. LCEL의 형태2.1. LCEL은 파이프 오퍼레이터(“|”)를 통해 짧은 코드만으로 Chain을 구성할 수 있다.2.2. LCEL은 가독성 높은 코드를 바탕으로,  invoke 함수를 통해 LLM의답변을받아볼 수 있다. 2.3. LCEL을 사용하면 Chain의 내장함수인 Stream을 통해 두줄만으로 LLM 답변 스트리밍이 가능하다.  2.4. LCEL을 사용하면 여러 프롬프트를 한꺼번에 실행하는 Batch 처리가 용이합니다.  2.5. LCEL을 사용하면 여러 프롬프트를 한꺼번에 실행하는 Batch 처리가 용이합니다.
1. RAG의 핵심, 문서 검색기 Retriever1.1. Retriever의 기본형, 벡터DB 기반 Retrieverfrom langchain.document_loaders import PyPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_openai import OpenAIEmbeddingsfrom langchain_community.vectorstores import Chromaos.environ["OPENAI_API_KEY"] = "YOUR_API_KEY"#헌법 PDF 파일 로드loader = PyPDFLoader(r"/content/drive/MyDrive/마소캠퍼스/대하..
1. Vector Stores의 개념 elsatic search, redis, mongo db, postgreSQL의 기존 데이터베이스와 달리 chroma, pinecone, faiss 같은 벡터 DB는 고차원적인 벡터 데이터를 다루는 것에 가장 유용하다. 기존 DB는 구조를 가지는 정형화된 반면, 벡터 DB는 비정형적인 db(몽고 DB)같은 DB들이 뜨다가, 벡터 임베딩을 다루는 DB들이 점차 증가하게 되었다.  vector library는 DB로서의 기능(CRUD)은 없다. 이는 벡터 임베딩을 임시적으로 저장하고, 내가 원하는 유사도가 높은 임베딩을 찾아내는 그런 검색에 특화된 라이브러리이다. FAISS는 메타에서 만든 라이브러리인데, 이것만 잘 활용해도 RAG 시스템을 구축하는데 문제가 없다. 다만..
1. Embeddings의 개념 각각의 차원들이 뜻하는 바는 이 문장의 특성을 나타낸다. 단어의 이중적인 의미를 768차원에 담는다.즉, 주어진 문장을 몇차원의 벡터 임베딩에 담아내느냐에 따라 문장이 다르다. 2. Embeddings의 원리대용량의 말뭉치를 통해서 사전학습된 모델을 통해 쉽게 임베딩을 할 수 있다.이 임베딩 모델은 Transformer 아키텍처에서 인코더 모델을 학습시킨 경우가 많다.인코더 모델에 굉장히 많은 양의 데이터를 학습을 시키면 이 모델 자체적으로 문장 내에 이런이런 뜻이 있고, 문법적으로 이런이런 순서와 이런이런 뜻을 갖고 있다는 것을 모델이 파악할 수 있게 해준다. 따라서, 사전 학습된 임베딩 모델을 통해 문장을 바로 숫자로 표현 가능하다. (따로 학습이 필요없다.)임베딩 -..
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. LangChain API  활용하기  Langchain을 활용하면 다양한 모델 API를 일관된 형식으로 불러올 수 있다.  1. 실습은 코렙으로 진행https://colab.research.google.com/ Google Colab colab.research.google.com 코렙의 특징구글에서 무료로 제공하는 딥러닝 환경으로 무료 GPU를 적용할 수 있는 개발 환경Google Drive와 Jupyter Notebook(.ipynb)을 사용하기에 따로 설치하는 과정이 없고, 클라우드 상에서 동작.OpenAI와 Anthropic의 모듈을 활용할 수 있도록 라이브러리 설치코드 설명: 어떠한 모델을 쓰고, 출력 길이는 1024로 설정되며, 어떤 메시지에 대한 내용을 처리할지 메시지를 보낸다. 2. L..
조찬국
'분류 전체보기' 카테고리의 글 목록 (2 Page)