대규모 언어모델(LLM)의 활용이 일반화되고, 서비스가 점점 더 고도화되는 과정에서 단순한 질의응답을 넘어서 복잡한 멀티스텝 reasoning이 요구되기 시작하고 있다.예를 들어 사용자의 질문을 해석하고, 적절한 모듈을 선택해 API를 호출하며, 호출이 실패할 경우 재시도하거나 추가 질문을 던지고, 결과를 가공해 다시 사용자에게 전달하는 일련의 과정은 단순한 LLM의 순차적 토큰 생성 기능만으로는 한계가 있다. 이런 과정을 효율적으로 처리하려면 구조적이고 체계적인 기술적 방안이 필수적이다.LLM 기반 서비스를 처음 개발할 당시에는 LangChain을 활용해 서비스 플로우를 구성하려는 시도가 활발히 이루어졌다. LangChain은 LLM과 각종 툴, 프롬프트, 메모리 등 여러 구성 요소를 연결해 간단한 체..
전체 글
사이버보안전공 | 보안 개발 인프라AWS SAA 시험에서는 시나리오 기반 문제를 통해 다양한 AWS 서비스의 연계 방식을 평가한다.특히, 네트워크 트래픽 로그를 수집하고 분석하는 문제는 자주 등장하며 VPC Flow Logs, CloudWatch Logs, Kinesis Data Firehose, OpenSearch Service 간의 연결 구조를 정확히 이해하는 것이 중요하다고 생각해서 정리해보고자 한다. 문제요약한 기업의 애플리케이션은 NLB, Auto Scaling Group, EC2 인스턴스, 데이터베이스 등으로 구성되어 있으며 Amazon VPC 내에 배포되어 있다. 해당 기업은 VPC 내 네트워크 인터페이스에서 발생하는 트래픽 정보를 거의 실시간으로 수집하고이를 Amazon OpenSearch Service로 전송하여 분석하..
Text-to-SQL 서비스를 만든다면, 왜 RAG를 알아야 할까?Text-to-SQL 기반의 서비스를 개발할 때는 LLM의 활용이 사실상 필수다. 특히 사용자의 자연어 질문을 정확한 SQL 쿼리로 바꾸려면 단순히 생성 능력만으로는 부족하고 정확하고 신뢰할 수 있는 정보가 함께 작동해야 한다.이런 이유로 요즘 특히 주목받는 기술이 바로 RAG이다. RAG는 LLM이 가진 생성 능력을 그대로 살리면서도 외부에서 필요한 정보를 검색해와 문맥처럼 자연스럽게 보강하고, 근거 있는 답변을 생성하는 구조를 뜻한다.이번 글에서는 RAG의 개념과 도입 배경 그리고 이를 구현하기 위한 핵심 구성요소인 Vector Database에 대해 정리해본다.1. RAG란 무엇인가?RAG는 이름 그대로 Retrieval, Augme..
개발을 하다 보면 아무 생각없이 import org.apache.logging.log4j; 이것처럼 오픈소스를 많이 썼다. 하지만 오픈소스는 공개된 코드이기 때문에 CVE가 발견될 경우 공격자가 악용할 위험이 있다. 특히 요즘 supply chain attack 사례가 늘어나면서 체계적인 관리 필요성을 느꼈다.그래서 회사에선, Software Composition Analysis 기반 취약점 점검을 통헤 위험 요소를 사전에 제거하는 것에 중점을 두고 있었다. 그렇다면 SCA 진단 서비스 단계를 알아보자.1. 현황 파악: 소스코드나 바이너리 안에 포함된 오픈소스 라이브러리를 식별2. 취약점 분석: 식별된 오픈소스 라이브러리에 대해 CVE 취약점을 매핑하여 위험성 평가3. 조치 및 이행 관리: 위험한 라..
예전에는 윈도우나 주된 OS 기반이 공격 대상이었지만, 요즘 해커들은 서버/클라우드와 같은 인프라까지 노리고 있다.리눅스용 악성코드도 꾸준히 증가하는 것을 볼 수 있었다. (웹쉘 공격, 트로이 목마 등..) 왜 리눅스가 백신이 필요한지 조사해보았다. 2016년 이전 대부분의 Unix계열의 서버의 경우 별도의 백신이 필요하지 않다고 여겨졌다. 그러나 현재까지 리눅스 시스템을 대상으로 한 3만 가지 이상의 멀웨어가 발견되었으며 그 또한 매년 증가하고 있다. 리눅스 서버를 가장 많이 사용하고 있는 곳은 고객과의 접점이 많은 Web서버이며 전세계 Web서버의 60%이상이 Linux 운영체제를 사용하고 있다. 이 서버들은 운영체제 취약점인 커널 등 사용하고 있는 각종 어플리케이션의 취약점이 공개되어 있음에도 ..
넓고 넓은 S3의 개념,,덤프와 함께 관련 개념을 정리해보고자 한다. #21 문제 정리1. 매일 한 가지 상품만 판매 -> 데이터베이스에서 복잡한 재고 관리가 필요하지 않을 가능성이 높다.2. 피크 시간대에 수백만 건의 요청 처리 -> 확장성이 뛰어난 솔루션이 필요하다.3. 밀리초 단위 응답 시간 -> 빠른 성능이 필요하다.4. 운영 오버헤드 최소화 -> 관리 부담이 적은 서비스를 사용한다. 답은 D이다.S3는 Object Storage 서비스이다. 즉, 파일을 저장하는 공간이고 데이터베이스처럼 쿼리를 수행하는 구조가 아니다.그래서 정적 웹사이트 호스팅, 백업 및 로그 저장, 데이터 아카이브(오래된 데이터 보관), CloudeFront와 연계한 콘텐츠 배포에 적합하다. S3 + CloudFront + A..
과제를 진행하면서 LLM을 활용한 애플리케이션을 개발해야했다.회사에서 가장 활용성이 좋은 애플리케이션이 무엇일까 생각했더니 ChatBot이라고 생각했다.그래서 챗봇을 개발하기로 결심!! 기술 스택은 아래와 같다. 개발의 핵심은 내가 익숙한 언어로, 약 2-3일 동안의 시간동안 구현하는 게 목표였기에사용해본 FastAPI와 React를 사용해서 구현했다. LLM 사용하기 Hugging Face에서 Llama3 사용을 위한 Access 신청을 해야한다.보통 1시간 이내면 허용 이메일이 온다. 개발 환경은 당연 colab을 사용했다. 노트북으로 개발을 했기에 GPU가 없었다. 발급받은 허깅페이스 키로 로그인 해주고, 모델 로드를 했다.import torchfrom transformers import pip..
면접이 얼마 안남았다. 발등에 불 떨어졌다. 지금 내가 분석하고 있는 주제, 곧 도입될 예정이라다들 관심있게 보고 있는 LLM을 정리해보도록 하자.... LLMLLM 이란 Large Language Model로, 대규모 데이터를 학습하여 사람과 같은 텍스트를 생성해주는 기술이다.LLM은 생성형 AI 중 텍스트 기반이다. 생성형 AI란 주어진 데이터를 학습한 후 새로운 콘텐츠 (텍스트, 이미지, 음성, 코드 등)를 생성할 수 있는 AI 모델을 의미한다.동작방식은1. 데이터 학습 (Pretraining): 방대한 양의 데이터를 학습하여 패턴을 이해함2. 패턴 분석 및 확률 기반 예측: 사용자의 입력을 분석하고, 가장 적절한 출력을 확률적으로 예측함3. 새로운 콘텐츠 생성: 학습한 데이터를 기반으로 완전히 새..