전체 글

개발자가 되기위해 매일매일 체득하며 배우는 학생입니다.
· CS스터디
1. 복잡도1.1. 시간 복잡도1.1.1. 빅오 표기법시간 복잡도란 "입력 크기에 대해 어떠한 알고리즘이 실행되는 데 걸리는 시간"을 의미한다.빅오 표기법은 입력 범위 n을 기준으로 실행되는데 가장 오래 걸리는 시간(최악의 경우)을 의미한다. O(n**2) 1.1.2. 시간 복잡도의 존재 이유효율적인 코드로 개선하기 위해 알고리즘의 수행시간을 측정하여 비교하기 위함이다. 1.2. 공간 복잡도공간 복잡도는 프로그램을 실행시켰을 때 필요로하는 메모리 공간의 양을 의미한다. int a[1004]; int는 4byte를 차지하는데, 이때 배열 크기인 1004*4byte가 필요하게 된다. 1.2.1. C언어의 자료형1.2.2. JAVA의 자료형 2. 선형 자료 구조선형 자료 구조란 요소가 일렬로 나열되어있는 자료..
· CS스터디
1. 운영체제와 컴퓨터1.1. 운영 체제의 역할과 구조1.1.1. 운영 체제의 역할1. CPU 스케줄링과 프로세스 관리: 프로세서에 CPU 할당 및 반환, 프로세서 생성 및 삭제2. 메모리 관리: 프로세서에 메모리 할당 관리3. 디스크 파일 관리: 보관 방법 관리4. I/O 디바이스 관리: 마우스, 키보드와 컴퓨터 간 데이터 송수신 관리  드라이버: 하드웨어를 제어하는 소프트웨어 시스템콜 : 운영체제가 커널에 접근하기 위한 인터페이스이다.유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할때 사용된다.   메모리상에서 프로세스나 스레드가 운영체제로 어떠한 요청을 할 때 시스템 콜이라는 인터페이스와 커널을 거쳐 운영체제로 전달 한다. 시스템 콜은 추상화 계층으로 불리우는데, 네트워크나 DB와 ..
· CS스터디
1. 네트워크의 기초1.1. 네트워크란?네트워크는 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어이자네트워크란 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있지 않은 집합체를 의미한다. 노드: 서버, 라우터, 스위치 등 네트워크 장치를 의미.링크: 노드간 연결된 유선 또는 무선을 의미1.2. 처리량과 지연 시간처리량: 링크를 통해 전달되는 단위 시간당 데이터 양을 말한다. 단위로는 bps(bits per second) 처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 1. 대역폭, 네트워  크 중간에 발생하는 2.에러, 장치의 3. 하드웨어 스펙에 영향을 받는다. +a) 용어정리대역폭: 주어진 시간 동안 네트워크 연결을 통해 흐를 ..
1. RAG의 기초RAG(Retrieval Augmented Generation,검색 증강 생성): 환각 증상 해결을 위해 고안 LLM에게 어떤 질문을 할 때, 이에 힌트가 될만한 문장을 함께 넣어 줌으로써, 환각 현상 방지 RAG는 문서를 숫자로 변환하여 저장하는 인덱싱, 검색하고 답변을 생성하는 검색/생성 두가지 구조로 나뉜다. 2. RAG 고급 기법2.1. 다중 재정렬, MultiQueryRetriever=사용자 질문의 의도를 LLM이 이해하여 이를 여러 질문으로 재생성2.2 컨텍스트 재정렬, Long-Context ReorderLLM의 컨텍스트 사이즈가 늘어나며, 긴 입력이 가능해졌지만 중간 문서는 잘 찾지 못하는 문제가 있다.문장의 앞, 뒤에 따라서도 정확도(Accuracy)가 달라진다. 2.3..
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로 프롬..
조찬국
changuk.log