본문 바로가기

Python135

[Python] 문서 임베딩으로 간단한 의미 검색기 만들기 (sentence-transformers) 요즘 검색 기술은 단순히 단어를 일치시키는 수준을 넘어서,사용자가 무엇을 의미하는지까지 이해하려는 방향으로 발전하고 있습니다. 예를 들어, "환불"이라는 단어를 직접 검색하는 키워드 검색과, "결제 취소"처럼 표현은 다르지만 뜻이 비슷한 문장까지 찾아주는 의미 검색은 완전히 다른 접근 방식입니다. 이번 글에서는 키워드 검색과 의미 검색의 차이를 간단히 살펴보고, 파이썬으로 직접 의미 검색을 구현하는 예제도 함께 소개하겠습니다. 키워드 검색 (Keyword Search)정의: 사용자가 입력한 단어(키워드)와 동일한 텍스트를 문서 안에서 그대로 찾아내는 방식원리: 문자열 매칭 (예: LIKE, 정규식, 검색엔진의 인덱스 기반 매칭)장점: 빠르고 직관적임단점: 표현이 조금만 달라져도 못 찾음예: "환불"을 .. 2025. 9. 10.
[Python] Hugging Face의 pipeline 함수를 활용한 AI 사용 예제 안녕하세요오늘은 파이썬으로 AI 모델을 직접 실행해보는 방법을 소개하려고 합니다.예전에는 딥러닝 모델을 돌리려면 복잡한 환경 설정, 모델 구조 이해, 수많은 코드 작성이 필요했는데요이제는 Hugging Face에서 제공하는 파이프라기능 덕분에 단 몇 줄 코드로도 다양한 AI 기능을 체험할 수 있습니다.이번 글에서는 텍스트 생성, 감정 분석, 요약, 번역, 이미지 분류까지실제 AI 모델을 불러와 바로 실행할 수 있는 예제 코드를 다뤄보겠습니다. 1. 먼저 예제 실행을 위해 필요한 라이브러리를 설치해줍니다 (터미널) pip install transformers torch pillow transformers → Hugging Face에서 제공하는 라이브러리.최신 AI 모델(GPT, BERT, CLIP 등)을.. 2025. 9. 8.
[Python] Logging 모듈 사용해서 로그 남기기 안녕하세요오늘은 파이썬의 Logging 모듈을 사용해서 로그 남기는 방법에 대해서 알아보도록 하겠습니다.logging 모듈은 프로그램 실행 중 발생하는 메시지를 체계적으로 기록하는 표준 파이썬 라이브러리입니다.print()로 디버깅을 많이 하시겠지만, 프로젝트가 커지면 logging이 훨씬 유용해집니다. 이번 예제에서는, main.pymodule_a.pymodule_b.py 총 3개의 파일이 유기적으로 작동하는것을 기준으로system.log 파일에 기록을 남겨보도록 하겠습니다. 전체 코드입니다. main.pyimport loggingimport module_aimport module_blogging.basicConfig( filename="system.log", level=logging.DE.. 2025. 9. 7.
[Python] Hugging Face Transformers로 텍스트 생성하기 (CPU에서도 가능) 최근 LLM(대규모 언어 모델)이 다양하게 개발되고 있습니다.고성능 서버가 아니더라도 직접 로컬에서 작은 모델을 사용해볼 수 있는데요이번 글에서는 Hugging Face의 Transformers 라이브러리를 활용해 텍스트를 생성해보겠습니다! 1. 환경 준비 먼저 가상 환경(venv)을 만들고 필요한 라이브러리를 설치합니다.pip install transformers torch 2. 실행 코드아래 코드를 run_test.py 로 저장하고 실행해봅시다.여기서는 facebook/opt-125m 모델을 사용합니다. (약 120M 파라미터로 CPU에서도 빠르게 동작)- opt-125m, distilgpt2 같은 작은 모델을 추천from transformers import AutoTokenizer, AutoM.. 2025. 9. 4.
[Python] Streamlit으로 대시보드 만들기 안녕하세요.오늘은 Streamlit을 활용하여 간단하지만 한눈에 보기 좋은 대시보드를 만들어보겠습니다.Streamlit은 데이터 시각화와 대시보드를 쉽게 만들 수 있는 Python 프레임워크로, 몇 줄의 코드만으로도 멋진 결과물을 얻을 수 있습니다. https://streamlit.io/ Streamlit • A faster way to build and share data appsStreamlit is an open-source Python framework for data scientists and AI/ML engineers to deliver interactive data apps – in only a few lines of code.streamlit.io 1. Streamlit이란?Streaml.. 2025. 8. 30.
[Python] 간단한 Attention 메커니즘 구현하기 (Query, Key, Value 이해하기) 안녕하세요 오늘은 딥러닝 모델에서 핵심으로 쓰이는 Attention 매커니즘을 파이썬 코드로 직접 구현해보겠습니다. Attention 이란 "어떤 입력이 현재 상황에서 얼마나 중요한지" 를 계산해 가중치를 주는 방식을 의미합니다. Attention 이란 사람도 문장을 읽을 때 모든 단어를 동일하게 보지 않고 상황에 따라 더 중요하다고 판단되는 단어에 집중(attention) 합니다. 딥러닝에서의 Attention 개념 또한, 현재 생성해야할 출력 (ex. 다음 글자, 다음 음향 프레임 등) 에 맞춰 과거 정보 중에서 관련성이 높은 부분에 더 큰 가중치를 주고, 그 가중치를 활용해 다음 출력을 만듭니다. 즉, Attention은 모델이 ‘모든 입력을 동일하게 보지 않고, 중요한 부분에 집중하게 만드는 장.. 2025. 8. 28.
[Python] 손글씨 숫자 이미지 분류 모델 만들기 (MNIST 데이터셋 활용) 안녕하세요, 오늘은 TensorFlow를 활용해서 손글씨 숫자 이미지 분류 모델을 만들어보겠습니다.대표적인 딥러닝 입문 예제인 MNIST 데이터셋을 활용해, 0부터 9까지의 손글씨 숫자를 인식하는 간단한 신경망 모델을 구현해볼 예정입니다. 1. TensorFlow란?TensorFlow는 구글에서 개발한 오픈소스 딥러닝 라이브러리로, 다양한 신경망 모델을 손쉽게 만들고 학습시킬 수 있게 도와줍니다. GPU 가속 지원도 잘 되어 있어 대규모 연산을 빠르게 처리할 수 있습니다.이번 실습에서는 TensorFlow 안에 포함된 Keras 고수준 API를 사용해 모델을 구현합니다. 2. MNIST 데이터셋이란?MNIST는 28x28 크기의 손글씨 숫자 이미지(흑백) 70,000장으로 구성된 데이터셋입니다.훈련 .. 2025. 8. 27.
[Python] PyTorch 텐서 차원 다루기 딥러닝에서는 차원(Dimension) 개념이 굉장히 중요합니다.배치 크기(batch_size), 채널(channel), 높이(height), 너비(width) 같은 정보들이 모두 차원으로 표현되기 때문이죠.이번 포스팅에서는 파이토치(PyTorch)에서 차원을 다루는 기본 스킬을 예제로 정리해보겠습니다. 전체 코드입니다. import torch# 1. 텐서(Tensor) 만들기# -----------------------------# 1차원 벡터 (길이 4)a = torch.tensor([1, 2, 3, 4])print("a:", a)print("a.shape:", a.shape) # torch.Size([4])# 2차원 행렬 (2행 3열)b = torch.tensor([[1, 2, 3], [4, 5, .. 2025. 8. 26.
[Python] gRPC로 양방향 통신하기 1. gRPC 개요 및 핵심 개념gRPC는 Google에서 개발한 오픈소스 원격 프로시저 호출(RPC) 프레임워크입니다. HTTP/2와 Protocol Buffers(Protobuf)를 기반으로 하며, 마이크로서비스 아키텍처(MSA) 및 분산 시스템 환경에서 고성능·고효율 통신을 위해 설계되었습니다.모든 환경에서 동작: 데이터센터, 클라우드, 엣지, 모바일 등 다양한 환경 지원다국어 지원: Python, Java, Go 등 10여개 이상의 언어 지원자동 코드 생성: .proto 파일만 있으면 서버/클라이언트 코드가 자동 생성됨1.1. RPC란?RPC(Remote Procedure Call)는 클라이언트가 네트워크를 통해 원격 서버의 함수를 마치 로컬 함수처럼 호출할 수 있게 하는 프로토콜입니다.→ 개발자.. 2025. 8. 22.