분류 전체보기(81)
-
[PostgreSQL] Vector Search를 위한 인덱스 타입 비교 (HNSW vs IVFFlat)
서론안녕하세요! 요즘 AI 시대를 맞이하여 벡터 검색(Vector Search)이 정말 핫한데요. PostgreSQL에서도 pgvector 확장을 통해 벡터 검색을 지원하고 있습니다. 오늘은 벡터 검색에 사용되는 두 가지 주요 인덱스 타입인 HNSW와 IVFFlat에 대해 알아보겠습니다.무엇이 다를까?우선 두 인덱스의 주요 특징을 간단히 비교해볼까요?HNSW (Hierarchical Navigable Small World)그래프 기반 인덱스빠른 검색 속도더 많은 메모리 사용인덱스 생성이 더 오래 걸림IVFFlat (Inverted File Flat)클러스터 기반 인덱스적은 메모리 사용빠른 인덱스 생성HNSW보다는 조금 느린 검색 속도실제 사용 예제간단한 예제로 두 인덱스의 사용법을 살펴보겠습니다.-- p..
2024.11.14 -
[PostgreSQL] 인덱스(Index)의 기초 이해하기
서론안녕하세요! 오늘은 PostgreSQL에서 매우 중요한 개념인 인덱스(Index)에 대해 알아보려고 합니다. 데이터베이스 성능 최적화에 있어 인덱스는 정말 중요한 요소인데요, 어떤 경우에 필요하고 어떻게 동작하는지 자세히 살펴보겠습니다.1. 인덱스의 필요성책을 읽을 때 목차가 없다고 상상해보세요. 특정 내용을 찾으려면 처음부터 끝까지 다 훑어봐야 하겠죠? 데이터베이스도 마찬가지입니다.인덱스가 없을 때의 문제점-- 인덱스가 없는 상황에서의 검색SELECT * FROM users WHERE email = 'user@example.com';이 쿼리는 테이블의 모든 row를 확인해야 합니다(Full Table Scan). 데이터가 많아질수록 성능은 급격히 저하됩니다.인덱스의 장점검색 속도 향상ORDER BY..
2024.11.14 -
[Python] URL 라이브러리 403 에러 해결하기 (urllib/requests)
서론안녕하세요! 오늘은 웹 크롤링을 하다 보면 자주 마주치게 되는 403 에러에 대해 이야기해보려고 합니다. 특히 Python의 urllib이나 requests를 사용할 때 자주 발생하는데요, 이 문제를 어떻게 해결할 수 있는지 알아보겠습니다.무엇이 문제일까?403 에러가 발생하는 주된 이유는 웹사이트에서 봇이나 자동화된 접근을 차단하기 때문입니다. 특히 다음과 같은 경우에 자주 발생합니다:기본 헤더로만 접근할 때접근 패턴이 봇처럼 보일 때특정 라이브러리의 시그니처가 감지될 때해결 방법 살펴보기1. 다양한 헤더 시도하기import requests# 여러 가지 헤더를 준비headers_1 = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Ap..
2024.11.14 -
[Langchain] Passthrough를 활용한 간단한 Chain 구성하기
서론안녕하세요! 오늘은 Langchain에서 Chain을 구성할 때 자주 사용되는 Passthrough에 대해서 알아보려고 합니다. 특히 LCEL(Langchain Expression Language)에서 많이 활용되는 기능인데요, 이름 그대로 데이터를 '통과'시키는 역할을 하지만 생각보다 활용도가 높답니다. 무엇이 좋을까?Passthrough는 다음과 같은 장점이 있습니다:Chain 구성을 단순화할 수 있습니다.입력 데이터를 그대로 전달하면서도 추가적인 처리가 가능합니다.다른 Chain들과 조합하기 쉽습니다.코드로 살펴보기간단한 예제 코드로 살펴보겠습니다.from langchain.chat_models import ChatOpenAIfrom langchain.schema.runnable import R..
2024.11.14 -
[Langchain] FastAPI에서 LLM Agent를 활용한 Response Streaming
서론저번에 한번 같은 글을 올렸었는데요 그것보다 훨씬 더 간편하고 성능적으로 개선된 방법을 설명해 볼까 합니다.기존글은 이거예요!https://todaycodeplus.tistory.com/70 [Langchain] Langserve에서 LLM Agent를 활용한 Response Streaming기존에 LCEL기반의 LLM pipeline에서 Agent를 활용하는 방식으로 전환을 하고 있었습니다. 그 이유는 아래와 같습니다.1. Retriever를 구조화하여 사용하기 힘들다.2. 복잡한 형태, 크로스 도매인을 가진todaycodeplus.tistory.com 무엇이 바뀌었을까?우선 기존에는 방식이 다음과 같았습니다. Agent가 결과물을 생성하는 과정에서 LLM모델의 Output에서 생성되는 Token을..
2024.10.31 -
[후기] SPH - Google Maps 모빌리티 비즈니스 웨비나 발표
발표는 어떻게 하게 됐을까?해당 세션의 발표는 비즈니스 세션으로 업계의 동향이나, 우리 회사가 집중하고 있는 영역에 대해서 설명하는 세션이었습니다. 3월부터는 개발 부서에서 팀을 이전하여 사업전략에서 데이터 업무를 이어나가고 있었는데, 마침 동료분으로부터 해당 발표를 소개받았습니다. 원래는 다른 분이 예정돼 있었으나, 갑작스러운 출장 일정으로 인하여 제게 인계 됐습니다. 비즈니스 세션인데 부담되지 않았을까?사실 엄청 부담 됐습니다. 자료를 구성하는 단계부터 회사의 모빌리티 서비스의 비즈니스 방향성이나, 회사 자체의 생각 등을 어느 정도 머릿속에 그리고 있어야했습니다. 그리고 개발자로서 비즈니스 세션을 발표하는 것이 아무래도 깊이 있는 발표가 되지 않을 수 있다는 생각에 부담도 많이 돼서 걱정이 아주 아주..
2024.10.31