전체 글 99

RabbitMQ로 우선순위 큐 실제 적용해보자

RabbitMQ는 AMQP (Advanced Message Queuing Protocol) 기반의 메시지 브로커로, 다양한 메시지 큐 기능을 제공합니다. Python에서 RabbitMQ를 사용하는 일반적인 방법은 pika 라이브러리를 사용하는 것입니다. 이를 사용하면 메시지 발행(Publish), 큐 소비(Consume), 교환(Exchange), 라우팅(Routing), 바인딩(Binding) 등을 수행할 수 있다.다음은 RabbitMQ의 다양한 기능을 pika 라이브러리를 통해 사용하는 방법에 대한 설명과 예제1. pika 라이브러리 설치먼저 pika를 설치해야 함:pip install pika2. RabbitMQ 연결 설정 및 채널 생성RabbitMQ에 연결하고 채널을 생성하는 기본 방법입니다. l..

사용툴 분석 2024.10.02

메타데이터 활용한 코딩들

배경수치 데이터 만으론 설명되지 않는게 있다. 예를 들어 평균 연봉을 계산할때는, 일괄적으로 순위를 내는게 아니라. 직군별로 묶어서 계산해야 공정하다. 그럴때 내용 외에 메타데이터를 섞어주면 좋다.그렇게다면 모든 요소를 DB에 저장하는 방식도 있지 않을까? -> 아주 대용량이 아니라면 따로 DB 서버를 유지하는건 비효율적인것 같다. 여기에 더해서 메타데이터를 활용하면 좀 더 복잡한 구조도 가볍게 저장 가능하다. DB라면 구조가 복잡해 질수록 테이블이 늘어나고, Join 연산이 많아져 쿼리 비용이 늘어날꺼다.다음은 메타데이터를 활용하면 좋은 예시이다.예시: 문서 관리 시스템에서 메타데이터를 활용한 데이터 저장시나리오:문서 관리 시스템에서 여러 문서 파일을 관리하고, 문서에 대한 정보(예: 제목, 작성자, ..

사용툴 분석 2024.10.02

서버 없는 초 저비용 rag 인프라 구상

서버 없는 초 저비용 rag 인프라 구상배경1. 얼마전 3090 중고 본체를 샀다. 나는 뭘 사면 최대한 뽑아 먹어야 한다.2. 하나의 본체로 외부의 rag 작업을 처리하면서, 내 로컬의 작업도 처리하고 싶었다.3. 3090이 여전히 좋은 GPU긴 하지만 여러 작업을 한번에 처리하는데 무리가 있다.4. 작업을 순서대로 하나 씩 처리하면 좋겠다고 생각했다.5. 작업을 순서대로? 쌓아 놓고? 머릿속에 큐가 떠올랐다. 인프라 구조 질답 서버 : 디코에서 다른 사람이 질문을 올리면 가져와서 큐에 올린다.내 로컬의 작업도 큐에 올린다.LLM 추론서버 : 큐에서 작업을 받아서 LLM 작업을 하나씩 실행한다. 이때 우선순위에 따라 디코 질문은 빠르게 처리하고, 내 로컬 작업은 우선순위를 낮게 설정한다. ( 말하자면 ..

langchain 공부 2024.09.26