chatbot

1. FastAPI 기초와 RESTful API 설계1.1. Rest API웹 서비스에서 자원을 요청하고, HTTP 메서드를 활용해 자원에 대한 행동을 표현하는 표준 인터페이스1.2. FAST APIFAST API는 파이썬의 API를 빌드하기 위한 웹 프레임워크이며, NodeJS와 GO와 대등할 정도로 성능이 매우 높다. 현재로서는 사용가능한 파이썬 프레임 워크중에 가장 빠르다. https://fastapi.tiangolo.com/ FastAPIFastAPI framework, high performance, easy to learn, fast to code, ready for productionfastapi.tiangolo.com 1.2. UvicornFastAPI는 Python으로 작성된 고성능 웹 ..
0. Streamlit 이란?Streamlit은 파이썬 코드만으로 웹 앱의 프론트(화면)을 아주 쉽게 만들 수 있게 도와주는 프레임워크이다. 👉 데이터 분석 결과나 머신러닝 모델을 웹으로 바로 보여주고 싶을 때 유용하다.👉 복잡한 HTML/CSS/JS 없이 터미널에  "streamlit run app.py"만 입력하면 프로그램을 실행한다.예시 코드:# app.pyimport streamlit as stst.title("Hello, Streamlit!")st.write("이건 정말 간단한 웹앱입니다.") 1. 필요한 라이브러리 설치 pip install streamlit pip install langchain_openaipip install langchainpip install -U langchain-..
1. 다중 쿼리 생성(Multi-query Retriever) 기법1.1. 기존 RAG의 문제점기존의 RAG는 사용자의 질문이 모호할 경우, 벡터 DB 내 문장들과 매칭되지 않는 경우가 있다.1.2. MultiQueryRetriever 원리MultiQueryRetriever는 사용자 질문의 의도를 LLM이 이해하여 이를 여러 질문으로 재생성합니다. 1.3. 1.3. Chroma DB에 문서 벡터 저장from langchain.document_loaders import PyPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_openai import OpenAIEmbeddingsfrom langcha..
1. LCEL로 기본 체인 구성하기from langchain_core.output_parsers import StrOutputParser # LLM의 답변만 잘라서 가지고 오는 것from langchain_core.prompts import ChatPromptTemplate # 프롬프트 from langchain_openai import ChatOpenAI # OPEN AI#프롬프트 템플릿 설정prompt = ChatPromptTemplate.from_template("tell me a short joke about {topic}")#LLM 호출model = ChatOpenAI(model="gpt-4o-mini")#출력 파서 설정output_parser = StrOutputParser()#LCEL로 프롬..
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 아키텍처에서 인코더 모델을 학습시킨 경우가 많다.인코더 모델에 굉장히 많은 양의 데이터를 학습을 시키면 이 모델 자체적으로 문장 내에 이런이런 뜻이 있고, 문법적으로 이런이런 순서와 이런이런 뜻을 갖고 있다는 것을 모델이 파악할 수 있게 해준다. 따라서, 사전 학습된 임베딩 모델을 통해 문장을 바로 숫자로 표현 가능하다. (따로 학습이 필요없다.)임베딩 -..
조찬국
'chatbot' 태그의 글 목록