일단 하고 보는 사람

나중보단 지금에 집중하되, 지금보단 나중에 완벽해지자💪🏻

분류 전체보기 130

[query] eq or eq or eq…는 왜 위험할까? Azure Search recursion 에러

Azure AI Search를 사용해 특정 사용자(evIUserId), 특정 카테고리(csagId)에 해당하는 데이터를 조회해야 했다.문제는 단순 조회가 아니라 한 번에 들어오는 ID 개수가 매우 많았다는 점이다.evlUserId: 최대 2,800개csagId: 최대 2,800개필드 타입: Edm.String (단일 string)“여러 값 중 하나라도 일치하면 조회”라는 조건 자체는 흔했지만막상 실제 데이터 규모로 돌리니 예상치 못한 에러가 튀어나왔다🥲🥲내가 생각을 짧게 한 탓이다..ㅎ 💭 고민“OR로 묶으면 되겠지?”처음에는 단순하게 생각했다. 그래서 필터를 이런 식으로 만들었다.(evlUserId eq 'u1' or evlUserId eq 'u2' or evlUserId eq 'u3' or ...

Websocket: 비동기 이벤트 루프 자유롭게 조작하기

🧩 배경FastAPI로 LLM 기반 응답을 생성하는 실시간 WebSocket 스트리밍 서비스를 만들고 있었다(얘를 □ 라고 칭하겠다!)이 서비스는 구조적으로 응답 과정이 여러 단계로 나뉘어 있다. 1. msg1 : “분석을 시작합니다.”2. msg2 : “모델을 준비 중입니다.”3. msg3 : 결과 표시 직전의 안내 메시지4. LLM 응답 스트리밍5. 내부 데이터 조합 후, 히스토리 인덱스 저장 사용자 경험이 중요한 서비스라“순서·타이밍·전송 타이밍”이 3박의 합이 아주 중요했다.그런데 한 가지 문제가 있었다. LLM 응답 생성이 꽤 오래 걸린다는 점이다그래서 msg 3 -> LLM 응답 사이가 너무 멀어서 사용자 입장에선 멈춘 것처럼 보인다는 의견도 나왔다. 이 빈 구간을 보완하기 위해msg3를 2..

Claudesidian = Claude Code + Obsidian

얼렁뚱땅 신기해서 해보는 클로드 코드 + 옵시디언 연동 삽질기 https://github.com/heyitsnoah/claudesidian GitHub - heyitsnoah/claudesidianContribute to heyitsnoah/claudesidian development by creating an account on GitHub.github.com 1. Git clone git bash 열고,$ git clone https://github.com/heyitsnoah/claudesidian.git obsidian-notesCloning into 'obsidian-notes'...remote: Enumerating objects: 557, done.remote: Counting object..

LLM 2026.01.02

[중고신입 1년차] 검색 시스템 전환 플젝, 나의 회고 (feat. 내가 배운 것들)

현재상태:아직 업계가 명확히 정의되지 않은 상태라고 생각한다.AI 개발자? 백엔드? 엔터프라이즈/B2B 검색/지식 시스템 쪽 경험은 있음(내가 그동안 해왔던 거!) 내 방향성, 업계 전문성은 의도적으로 내가 고정하지 않으면 안 될 것 같다는 생각이 든다. 비교하는 거 별로 좋아하진 않는데.."같은 직무 내에서 "내가 상대적으로 더 잘하는 세부 분야/스킬이 있는가?" 1. 프롬프트 잘 짜는 거(차별성x)2. python api(누구나 함) 하지만 나는 이러한 고민들과 함께했다:1. 다중 서비스에서 검색/RAG가 망가지지 않게 설계하기2. 레거시 -> 신규로 전환할 때 쿼리/인덱스 타협(그니까, url 이름은 이대로가도 되는지? 아 이걸 바꾸면 다른 거랑 또 통일성이 깨지는데.. 왜 이 부분만 이렇게 설계..

11월 회고: 팀웤, 동료, 협업

요즘 들어 부쩍 팀웤, 동료, 협업에 대해 생각이 많아지는 시기다.사실 나는내가 협업을 잘하는 사람 이라고 생각해 본 적이 없다왜냐면 내가 주변 사람들에게 이해받는 것들이 분명히 있다고 생각하기 때문이다(물론 모두가 그렇겠지만..!)그래서 더 잘하려고 노력했는데.. 잘하려는 마음을 강하게 먹을수록.. 잘 안 되는 것 같다.. ㅠㅠ이것저것 고민해봤자 되는 것도 없겠다,방향을 바꿔보려고 한다.깔끔하게 나의 마음을 다시 다잡고 차근차근 노력해보고자 한다! 1. 먼저 이해하려 들고, 그다음에 이해시킬 것이 문장을 가슴에 새기려고 한다. 불필요한 감정 싸움 대신 협력 구조를 만드는데 효과적인 방법인 것 같다. 내 의견을 적극적으로 어필하는 것 또한 중요하다.하지만 결국 모두가 같은 목표("성공")을 향해 움직이..

개발자로 살아남기: 요즘 일하면서 느낀 점들😯

회사에서의 고민을 한 번에 정리하는 것은 어렵다만 그냥 요즘 드는 생각을 아무렇게나 적어본다.이사님은 여러 프로젝트를 동시에 돌리고 그 사이사이의 기능을 내가 만든다(물론 다른 팀원분들도 계신다).근데 문제는동시다발적으로 진행되는 그 프로젝트들이 정확히 어떻게 연결되는지도 모르겠고 설계서 같은 건 아예 없다.관계를 파악하지 못하니, IF 설계서를 쓰려고 해도 결국 리소스와 타겟을 명확히 구분 짓기 어렵다.그냥 "A랑 B가 들어오면 A의 a-1은 유지하고 나머지 내용을 B에 맞게 바꾸는 기능 만들어줘" 이렇게 한 마디하고 끝이다.며칠 뒤엔 "다 됐어?"하고 묻는다.그 사이 내가 질문하려고 해도 회의 중이거나 통화 중이라 대화 자체가 힘들다.. 그래서 결국 내 나름대로 해보면 "이거 아니야. 왜 이해를 못 ..

개발자로 살아남기: 요즘 일하면서 느낀 점들😯

회사에서의 고민을 한 번에 정리하는 것은 어렵다만 그냥 요즘 드는 생각을 아무렇게나 적어본다.이사님은 여러 프로젝트를 동시에 돌리고 그 사이사이의 기능을 내가 만든다(물론 다른 팀원분들도 계신다).근데 문제는동시다발적으로 진행되는 그 프로젝트들이 정확히 어떻게 연결되는지도 모르겠고 설계서 같은 건 아예 없다.관계를 파악하지 못하니, IF 설계서를 쓰려고 해도 결국 리소스와 타겟을 명확히 구분 짓기 어렵다.그냥 "A랑 B가 들어오면 A의 a-1은 유지하고 나머지 내용을 B에 맞게 바꾸는 기능 만들어줘" 이렇게 한 마디하고 끝이다.며칠 뒤엔 "다 됐어?"하고 묻는다.그 사이 내가 질문하려고 해도 회의 중이거나 통화 중이라 대화 자체가 힘들다.. 그래서 결국 내 나름대로 해보면 "이거 아니야. 왜 이해를 못 ..

귀여운 외장하드 왜 사면 안 되나요? SSD 데이터 날아간다는 말의 근거(SSD vs HDD)

요즘 SNS에서 SSD vs HDD 논쟁이 다시 불붙었다.특히 X(구 트위터)에서 "SSD 날아간다~" 밈이 퍼지면서 말이다. 바야흐로 X, 귀여운 외장하드 📁어느 날 X에서 귀여운 폴더 모양의 외장하드가 화제가 됐다."인스타 서핑 중에 발견했는데 이렇게 귀여운 외장하드가 있다니 너무 탐난다"는 글이 제품 캡쳐본과 함께 올라왔고이 글이 쏘아 올린 공은 생각보다 더 크고(?) 흥미로웠다. 전국의 외장하드 사용자들이 그 글 아래 모여들어 '외장하드는 귀여운 거 사면 안 된다','외관이 아니라, 더 비싸도 보장된 제품을 사야 한다','삼성 t5 > t9 > t7 순으로 구매할 것'라는 의견이 주를 이뤘다. 그런데 그 속에서 또 하나의 논쟁이 등장했다바로"SSD는 데이터가 날아가니 HDD가 더 좋지 않나?..

LLM에게 일 시키기: HTML 테이블 파싱에서 시작된 삽질과 해답

🧩 배경내가 맡은 일 요약 ver:방대한 양의 HTML 웹 문서를 파싱 -> LLM을 통해 자연어 문장 만들기 -> 벡터화 -> 기타 작업 -> ai search에 적재하기 자세한 ver:외부 데이터 HTML 웹 문서를 파싱하고 LLM을 활용해 자연어 문장으로 변환하는 로직을 담당하고 있다.이 데이터는 Azure AI SEARCH에 적재된다.적재된 데이터를 가지고 다양한 후속 RAG 및 연산(하이브리드 검색 등)을 거치게 될 것이다. 문제는 수많은 클라이언트가 작성한 문서들이라 눈으로 볼 땐 비슷해 보여도 실제 태그를 까보면 그 구조는 천차만별이라는 점이다.이런 태그 난장판(?) 속에서 LLM이 이해할 수 있도록 데이터를 깔끔하게 정리하여 던저주는 선봉장 역할을 맡고 있다 LLM에 던지는 데이터는:문서..

[Websocket] 웹소켓 로그 ai search에 적재: 스트리밍 단일 관리

🧩 배경 설명1. 일단 내가 지금 몸 담고 있는 플젝이 REST 로그 적재는 구현되어 있는데 ws는 안 되어 있음2. 그래서 해야 됨3. 시도4. 그런데 새로 붙인 웹소켓 서비스는 로그 수집 구조가 전혀 다름을 깨달음(당연함) 💭 고민의 내용send_json() 이 호출될 때마다 로그가 수백 건씩 쌓임.resToken이 738인 응답이 스트리밍 되면 ,,, 적어도 738+@ 건이 쌓이는 거임 그 하나의 리시브마다;;REST처럼 최종 하나만 남겨야 됨 🛠️ 해결을 위한 시도들1. 구글링검색 키워드: FastAPI Websocket, Logging, Websocket 로그 적재간지러운 부분을 딱 긁어줄 기술블로그를 찾을 수 없었음 2. 직접 시도Tabp 클래스 만들어서 send_json() 을 ..