본문 바로가기

전체 글

글또 8기를 마치며 올해 초 글또에 지원하여 벌써 5개월이라는 시간이 지났고, 2023년도 절반이 지났다. 글또를 지원하면서 다짐하고 꿈꿔왔던 나의 모습에는 한참 못 미치는 지금이다. 글쓰는 또라이가 되고싶었지만 그냥 또라이로 밖에 남지 못한, 카카오 99%보다 씁쓸한 회고를 작성해보려고 한다. 설정했던 목표 아래는 글또 활동을 시작하며 설정했던 목표들이다. 실제 달성률은 글쎄, 머리를 갸웃거리게 되고 주관적 판단으로는 부족할 것 같아 스스로 얼마나 해당 목표를 위해 노력했는지 실천율을 점검해보고자 한다. 1. 글쓰기의 습관화 실천율: ⬛️⬛️⬜️⬜️⬜️ 40% 평소 이것저것 시도하는 것은 좋아하지만 끈기가 부족한 나는 글또 활동을 통해 글쓰기를 습관화 시키고자 했다. 글또 활동시 패스도 가능하면 쓰지 않으려고 했으나 활동.. 더보기
pincone이 조건부 벡터 검색을 빠르게 수행하는 방법 Pincone이란? AI 어플리케이션을 위한 벡터 데이터를 저장하는 벡터 데이터베이스 왜 벡터를 저장해야하는가? 다양한 콘텐츠에 대한 내용을 벡터화하여 원본에 대한 정보와 함께 저장 나중에 유사한 콘텐츠를 찾기 위해 임베딩으로 DB를 검색할 수 있음 FAISS(Facebook AI Similarity Search) 와의 차이점은? FAISS도 벡터 임베딩 검색을 지원하지만 DB의 기능을 가지고 있지 않음 벡터 검색에서 문제점: 필터링 검색이나 추천시스템에서는 거의 항상 필터를 적용해야함 Google은 카테고리(예: 뉴스 또는 쇼핑), 날짜 또는 언어 및 지역별로 검색을 필터링 Netflix, Amazon 및 Spotify는 유사한 지역의 사용자를 비교하기 위해 필터링을 사용 그 외에도 애플리케이션 내에서.. 더보기
LLM 애플리케이션을 위한 사내 프롬프트 관리 패키지 개발기 이번 글은 사내의 LLM 프롬프트를 관리하면서 겪은 문제와 해당 문제 개선을 위한 패키지를 개발한 과정에 대해 작성하였습니다. 제품 개발에서 프롬프트 엔지니어링의 어려움 1) 타 팀과 협업 프롬프트 엔지니어링에는 언어 모델을 원하는 출력으로 안내하는 고품질 프롬프트를 만드는 작업이 포함됩니다. 그러나 프로덕트를 위한 과정에서 신속한 엔지니어링은 단독으로 수행하는 경우가 드뭅니다. 종종 프롬프트를 형성하고 미세 조정하기 위해 전문 지식을 제공하는 다른 팀 구성원과의 협업이 필요합니다. 효과적인 협업 없이는 다양한 팀원의 집단적 지식과 통찰력을 활용하는 것이 어려워지고 신속한 엔지니어링 프로세스를 방해합니다. 협업 프롬프트 엔지니어링의 주요 과제 중 하나는 다양한 프롬프트 반복에서 일관성을 보장하는 것입니다.. 더보기
프롬프트 엔지니어링 툴: PromptLayer로 프롬프트 및 LLM 요청 관리하기 프롬프트 및 OpenAI API 요청의 로그를 관리 및 공유할 수 있는 플랫폼인 PromptLayer의 사용법에 대해 정리한 글입니다. Prompt Layer PromptLayer는 GPT 프롬프트 엔지니어링을 추적, 관리 및 공유할 수 있는 개발 도구입니다. 코드와 OpenAI의 파이썬 라이브러리 사이의 미들웨어 역할을 하며, 모든 API 요청을 기록하고 관련 메타데이터를 저장하여 PromptLayer 대시보드에서 쉽게 탐색하고 검색할 수 있도록 합니다. 프롬프트 레이어에서는 크게 두 가지를 관리하는 것을 돕습니다. prompt template LLM request UI상에서 프롬프트 템플릿은 Registry에서 관리가 되고, LLM에 대한 요청은 History 탭에 로그가 쌓이게 됩니다. Tag 템플.. 더보기
[디자인패턴] 파이썬에서 Decorator Pattern (데코레이터 패턴) 구현하기 이 글은 decorator(@기호와 함께 쓰는)라고 하는 파이썬의 기능에 관한 것이 아니라 "데코레이터" 및 "위임"라는 디자인 패턴에 관한 글이다. 이전 글에 이어서 이번에는 위임을 사용하는 데코레이터 패턴에 대해 정리해보고자 한다. 참고) 공부중에 나는 “파이썬의 데코레이터가 데코레이터 패턴을 구현한 것과 동일한 것이 아닌가?” 라는 의문점이 있었는데 이 글을 보고 차이점을 이해하였다. 데코레이션(decoration)이란? 객체에 기능을 추가하고는 싶지만 해당 객체의 클래스를 확장하지 않을 때 사용 기본 클래스에 영향을 주지 않고 필요할 때 동작을 동적으로 추가 객체 지향 설계의 단일 책임 원칙(SRP)을 준수를 유지하는 데 필요 위임과 마찬가지로 데코레이터 패턴은 상속으로 문제를 해결할 수 있지만 .. 더보기
[디자인패턴] 파이썬에서 Delegate Pattern (위임 패턴) 구현하기 이번 글에서는 객체 지향 디자인 패턴의 하나인 “위임 패턴”에 대해 정리해보고자 한다. 언제 필요한가? 코드 재사용이 필요할 때 상속(inheritance)이나 합성(composition) 중 하나로만 구현하기에 부적절한 상황일 경우 상속: 부모 클래스에서 상속받아 한 클래스의 구현을 정의 합성: 다른 객체를 여러개 붙여서 새로운 객체를 구성 상속시 부모 클래스에 종속되는 것을 원치 않는 경우 부모 클래스의 구현에 변경이 생기면 서브 클래스도 변경해야함 기존 구성 요소의 조합만으로는 목적을 달성하기 어려운 경우 위임(delegation)이란? 위키백과의 정의: 위임 패턴은 객체 지향 디자인 패턴으로, 객체 구성을 통해 상속과 동일한 코드 재사용을 달성할 수 있다. 어떠한 연산을 처리할때 객체는 연산의 처.. 더보기
LLM을 앱에 연결해주는 microsoft의 Semantic Kernel Semantic Kernel 이란? 앱에 AI 기능을 추가하는 개발자에게 유연성을 제공하기 위한 microsoft의 오픈 소스 C#, Python 같은 기존 프로그래밍 언어와 LLM AI를 결합시켜주는 경량 SDK 오픈 소스 프레임워크로 예제 앱과 노트북이 함께 제공됨 시맨틱 커널 설계의 핵심은 Skill 과 Planner Planner 는 사용자의 요청을 받아 필요한 스킬, 메모리, 커넥터로 변환하여 복잡한 작업을 용이하게 함 Skill 은 어떤 기능을 하는 역할을 하는 함수나 모듈의 집합 OpenAI의 모델과 Azure OpenAI Service 지원 자주 사용되는 용어 Semantic Kernel (SK) 사용자의 ASK를 이행하는 오케스트레이터 Ask 사용자가 목표 달성을 위해 시맨틱 커널에 요청.. 더보기
[NLP] hdbscan으로 키워드 클러스터링하기 클러스터링은 데이터 내에서 패턴과 관계를 식별하기 위한 강력한 기술입니다. 유사한 데이터 포인트를 유사성에 따라 클러스터로 그룹화하는 작업이 포함됩니다. 이번 글에서는 밀도 기반 클러스터링 알고리즘인 HDBSCAN을 사용하여 검색어 데이터를 클러스터링하는 방법에 중점을 둘 것입니다. 밀도 기반 클러스터링 계층적 클러스터링, k-means 및 밀도 기반 클러스터링을 포함하여 다양한 클러스터링 모델을 사용할 수 있습니다. 키워드 클러스터링의 경우 노이즈 및 이상값을 잘 처리할 수 있는 밀도 기반 클러스터링이 가장 적합한 선택입니다.이 알고리즘의 주요 장점은 k-means와는 달리 클러스터의 개수를 미리 지정할 필요가 없다는 점입니다. 클러스터의 정의 그렇다면 어디서부터 어디까지를 하나의 군집으로 봐야할까요?.. 더보기