전체 글 51

[RAG] gemini api error

이전에 google의 gemini model을 활용해 Rag를 구현한 코드가 있는데, 오랜만에 실행시켜보니 에러가 발생해서 원인과 해결과정을 정리해 보았습니다. 오류가 작성한 코드는 아래와 같았습니다. from langchain.chains.query_constructor.base import ( StructuredQueryOutputParser, get_query_constructor_prompt,)from langchain_openai import ChatOpenAIfrom langchain_google_genai import ChatGoogleGenerativeAIllm = ChatGoogleGenerativeAI(temperature=0, model="gemini-1.5-flash") ..

RAG 2025.01.24

[AWS] s3에 이미지 업로드

1. 이미지 추출2. 이미지 업로드3. 이미지 클라이언트에게 전달 이전 포스팅에서 만들었던 s3를 활용해 자취방 이미지들을 s3에 업로드해서 사용해보도록 하겠습니다. 1. 이미지 추출먼저 pdf에서 이미지를 추출해보도록하겠습니다. 전에 upstage의 document parser를 사용해봤었는데 이미지만 추출하는게 아니라 텍스트,이미지 등을 종류별로 추출해서 마크다운, html 형식으로 변환해주다보니 이미지 추출쪽에서는 성능이 부족한 상황을 경험했습니다. 따라서 이번엔 이미지 추출만을 목적으로 하는 라이브러리를 사용해서 성능에 중점을 맞추고 진행해보았습니다. 1 ) PyMuPDFPyMuPDF 는 PDF에 포함된 원본 이미지 파일을 별도의 변환 없이 추출합니다. 변환 과정이 없기 때문에 속도와 품질 모두 ..

CampusMeet 2025.01.03

[AWS] s3

1. s3 용어2. s3 버킷 생성 프로젝트 진행도중 이미지를 저장하고 관리해야할 일이 생겨서 AWS의 s3 시스템을 사용해보도록 하였습니다. 1. s3 용어 1) 버킷객체를 저장하는 공간 2) 객체이미지나 동영상 같은 파일 3) 버킷명유일한 이름 4) 객체 키객체 식별자 (모든 객체가 하나씩 가짐) 2. s3 버킷 생성본격적으로 aws 콘솔에 접속해서 버킷을 생성해보도록 하겠습니다.  s3 서비스는 사용한만큼 요금이 지불되기 때문에 현재 사용중인 프리티어 기준에 맞게 이미지 용량을 사용할 생각입니다. 버킷 이름 규칙에 맞게 이름을 지정하고 넘어가줍니다.  다른 값들은 추가로 건들이지않고 테스트를 위해 태그를 하나 생성해주었습니다. 버킷이 잘 만들어진 모습을 볼 수 있습니다. 이제 버킷을 들어가서 이미지..

AWS 2025.01.03

[Backend] Access Token & Refresh Token

1.  Access Token과 Refresh Token의 필요성2. JWT 인증 체계 설계3. 결론 이전 블로그에서 JWT에 대해서 알아보았습니다. 그렇다면, 이러한 JWT가 일반적으로 많이 사용되는 곳이 어디일까?를 생각해보면 인증 체계였습니다. JWT인 Access Token과 Refresh Token을 만들고 이를 이용해 인증 체계를 구축한 과정에 대해 말씀드리도록 하겠습니다.1.  Access Token과 Refresh Token의 필요성Access Token 하나만 가지고도 인증할 수 있지 않을까? 라는 생각이 들 수 있지만, 실제로는 하나의 토큰으로는 여러 문제점들이 발생할 수 있습니다. Access Token만 사용한다고 가정해보겠습니다. Payload에 사용자 정보를 담아 통신 간에 JW..

Backend 2024.12.12

[Backend] JWT

1. JWT (JSON Web Token)란?2. 쿠키 기반 인증 vs JWT1.  JWT (JSON Web Token)란?JWT는 Header, Payload, Signature로 구성된 토큰 기반 인증 방식입니다. 데이터를 Base64로 인코딩하고, 세 요소를 마침표(.)로 연결하여 하나의 토큰으로 만듭니다. 1 ) JWT 구조(1) Header: 서명 알고리즘과 토큰 타입 정보를 포함.예: {"alg": "HS256", "typ": "JWT"}(2) Payload: 사용자 정보와 클레임(예: 만료 시간 exp, 사용자 ID sub) 등을 포함.예: {"sub": "user123", "exp": 1700000000}(3) Signature: Header + Payload를 서버의 Secret Key로..

Backend 2024.12.11

[CS] 사설 GitLab 서버에서 SSH로 프로젝트 클론하기

1. SSH 키 생성2. GitLab에 SSH 키 등록3. GitLab 레포지토리 클론4. SSH 설정 파일 작성5. 결론 사설 GitLab 서버를 사용하는 프로젝트에서 SSH를 통해 레포지토리 내용을 클론하려면 몇 가지 단계를 거쳐야 합니다. 제가 직접 진행한 과정을 공유합니다. 1. SSH 키 생성먼저, 로컬 환경에서 SSH 키를 생성합니다. 아래 명령어를 실행하면 됩니다: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 이 명령어를 실행하면 기본 경로(~/.ssh/id_rsa) 또는 원하는 경로에 SSH 키가 생성됩니다. 저 같은 경우에는 경로를 따로 지정하지 않았기 때문에 기본 경로에 id_rsa와 id_rsa.pub 두 개의 파일이 생성된 것을 확..

CS 2024.11.29

[AWS] ECR 을 활용한 Docker Image 저장

1. ECR 이란2. ECR Docker Image Push 1. ECR 이란ECR은 Elastic Container Registry 의 약자로 AWS에서 지원하는 관리형 컨테이너 이미지 레지스트리 서비스입니다. IAM 권한을 이용하여 리소스 기반 권한을 가진 프라이빗 레포지토리를 지원하여 EC2 인스턴스가 컨테이너 레포지토리 및 이미지에 접근할 수 있습니다. ECR 구성요소 RegistryECR private registry 하나에 여러개의 레포지토리, 도커 이미지, Open Container Initiative(OCL) 이미지 등을 저장할 수 있습니다. 사용자 권한 토큰클라이언트는 ECR Private registry 에 AWS 사용자 인증후에 이미지 푸시 및 풀이 가능합니다. RepositoryEC..

CampusMeet 2024.10.10

[AWS] VPC EndPoint + CodeCommit을 활용한 Private EC2

1. VPC EndPoint2. CodeCommit3. VPC EndPoint + CodeCommit 이전에 프라이빗 서브넷에 배포된 인스턴스에 연결하는 과정을 경험했고, ALB를 생성해 가비아 도메인과 연결하는 단계까지 완료했습니다. 현재 프라이빗 서브넷의 인스턴스에는 접근이 가능하지만, 내부가 비어 있어 기존 소스코드를 가져와 실행하거나 Docker Hub 또는 ECR에서 이미지를 받아 컨테이너를 실행해야 합니다. 하지만, 프라이빗 서브넷에서는 외부 인터넷에 접근할 수 없기 때문에 git clone 명령어를 통해 외부 레포지토리에서 소스코드를 가져오는 것이 불가능했습니다. 이는 NAT 게이트웨이가 없어 인터넷 접근이 차단되어 있기 때문인데, NAT 게이트웨이는 서울 리전 기준으로 시간당 0.059달러..

CampusMeet 2024.10.09

[AWS] ALB 생성 및 연결

1. ELB2. ALB3. ACM 생성 1. ELB ELB는 Elastic Load Balancing 의 약자로 VPC 에 탑재되며, 사용자의 요청을 받고 VPC 내 리소스(EC2)에 부하 분산합니다. 외부의 요청을 받아들이는 리스너와 요청을 분산할 리소스의 집합인 대상 그룹 으로 구성되며, 하나의 ELB는 다수의 리스너와 대상 그룹을 거느릴 수 있습니다. ELB를 사용하는 이유는 다음과 같습니다. 트래픽 분산- 여러 EC2 인스턴스 또는 컨테이너에 들어오는 트래픽을 자동으로 분산시켜, 과부하를 방지하고 애플리케이션의 성능을 향상시킵니다.고가용성- 최소 2개 이상의 가용영역을 설정해줘야하기 때문에, 하나의 인스턴스나 가용영역에 문제가 생길경우 설정해두었던 다른 가용영역으로 트래픽을 분산하여 서비스의 가용..

CampusMeet 2024.10.07

[AWS] Private 인스턴스 연결

1. SSM2. Bastion Host 보안상의 이유로 인스턴스를 프라이빗 서브넷에 배치했기 때문에 외부에서 인스턴스에 쉽게 접근할 수 없습니다. 하지만 서버를 운영하려면 인스턴스에 접속이 필요하므로, 다양한 방법을 통해 프라이빗 서브넷에 위치한 인스턴스에 연결할 수 있는 방안을 살펴보겠습니다. 1. SSM가장 먼저 IAM 콘솔에서 역할을 생성해줘야합니다.  권한도 추가해줍니다.   역할 생성을 완료했으니 Private subnet에 위치한 Ec2 에서 내가 생성한 역할을 연결 해 줍니다.   IAM 역할을 부여하였으니 다시 인스턴스에 접근해보도록 하겠습니다.  그런데 "SSM 에이전트가 온라인 상태가 아닙니다" 라는 경고가 나오면서 연결할 수가 없었고, Systems Manager를 사용해서 EC2 인..

CampusMeet 2024.10.06