python 59

[GPT] Stuff LCEL Chain

RetrievalQA 대신 LangChain Expression Language을 이용하여 RAG(Retrieval-Augmented Generation) 검색처리 해당 단계는 데이토 로드. 텍스트 분할, 인텍싱, 검색, 생성 1. 데이터 로드 RAG에 사용할 데이터를 불러오는 단계 외부 데이터 소스에서 정보를 수집하고, 필요한 형식으로 변환하여 시스템에 로드 langchain.document_loaders 모듈에서 UnstructuredFileLoader 클래스를 이용하여 데이터를 호출하고 있음 2. 텍스트 분할(Text Split) 불러온 데이터를 작은 크기의 단위(chunk)로 분할하는 과정 자연어 처리(NLP) 기술을 활용하여 큰 문서를 처리가 쉽도록 문단, 문장 또는 구 단위로 나누는 작업 검색..

python 2024.04.04

[GPT] RetrievalQA

RetrievalQA 문서검색 LLMChain을 이용하여 검색이 가능하지만 이는 Legacy 이므로 LCEL 형태로 검색하는것을 추천 검색방식 Stuff[문서 전체 요약]: 단순히 모든 문서를 단일 프롬프트로 "넣는" 방식입니다. 이는 가장 간단한 접근 방식입니다. Map-reduce[문서 분할-병합 요약]: 각 문서를 "map" 단계에서 개별적으로 요약한 다음, "reduce" 단계에서 요약본들을 최종 요약본으로 합치는 방식입니다. Refine[문서 분할-병합 요약]: 입력 문서를 순회하며 반복적으로 답변을 업데이트하여 응답을 구성합니다. 각 문서에 대해, 모든 비문서 입력, 현재 문서, 그리고 최신 중간 답변을 LLM chain에 전달하여 새로운 답변을 얻습니다. Map-ReRank:각 맵 리랭크 문..

python 2024.04.04

[GPT] Vector Store

OpenAIEmbeddings 임베딩 모델로는 "text-embedding-3-large"를 사용 이 모델은 OpenAI에서 제공하는 대규모 텍스트 임베딩 모델 중 하나 생성된 embeddings 객체는 텍스트를 벡터로 변환하는 데 사용 [결과] [-0.03629460018406378, -0.007184663262302321, -0.03371515688153162, -0.028660489003748433, -0.02683663892458552, 0.03460102723929279, -0.012421715775472752, -0.007764386917723339, 0.0019410967294308348, -0.002639696151225509, 0.024739212823664366, -0.002437770..

python 2024.04.03

[GPT] Vectors

Embedding 사람이 읽는 텍스트를 컴퓨터가 이해할 수 있는 숫자들로 변환하는 작업 벡터 vectorization[벡터화] 작업을 의미 문서마다 각각의 벡터를 만듬 openAI의 embedding 모델은 최소 1000 차원의 벡터를 제공 예 남성성 | 여성성 | 왕족성 왕 | 0.9 | 0.1 | 1.0 여왕 | 0.1 | 0.9 | 1.0 남자 | 0.9 | 0.1 | 0.0 여자 | 0.1 | 0.9 | 0.0 단어를 차원으로 표현할때의 장점 다른 단어를 얻기 위해 가진 차원을 더하거나 빼서 새로운 단어를 만들 수 있다. 예를들어 왕 - 남자 = 0.0 | 0.0 | 1.0 = 왕족 왕족 + 여자 = 0.1 | 0.9 | 1.0 = 여왕 이처럼 벡터에 대한 검색작업을 할수 있으며 이는 유사성을 찾..

python 2024.04.03

[GPT] Data Loaders and Splitters

RAG "Retrieval-Augmented Generation"의 약자로, "검색-증강 생성"이라는 의미 개인으로부터 제공된 data를 사용하거나 탐색함으로써 language Model의 능력을 확장 Retrieval[검색] langchain 모델 소스[여러가지 데이터] => Load =>Transform[변환 및 분할]=>Embed[텍스트의 숫자화] => store[저장]=>Retrieval[검색] 문서를 읽어들이는 방법 1. TextLoader PDF를 읽기위한 PyPDFLoader 등등이 있음 이처럼 각각의 파일마다 다른 class를 호출하다는 대신 UnstructuredFileLoader를 이용하는것이 효율적임 UnstructuredFileLoader 패키지를 사용하여 다양한 유형의 파일을 로드..

python 2024.04.02

[GPT] LCEL Based Memory

메모리를 수동으로 관리하는 방법 으로 커스트마이징하기 쉬움 RunnablePassthrough RunnablePassthrough를 사용하면 입력을 그대로 전달하거나 추가 키를 추가하여 전달할 수 있음 Runnable Passthrough()는 자체적으로 호출되며, 입력을 받아 전달하기만 하면됨 RunnablePassthrough는 assign(RunnablePassthrough.assign(키=값)형태로 호출 [결과] content='Hello Hong! How can I assist you today?' [결과] content='Your name is Hong. How can I assist you today, Hong?'

python 2024.03.30