부의 한계효용
돈을 두 배 벌면 첫 취업을 하고 나서 지금까지 쭉 가계부를 쓰고 있습니다. 월 지출은 얼마인지, 얼마를 모아야 하는지, 앞으로 들어올 돈은 얼마인지. 근로소득부터 강의와 집필로 생긴 소득까지 정리하다 보면, 제가 어떻게 살아왔는지가 그래프와 숫자로 남습니다. 가끔 그 궤적을 보고 있으면 참 열심히 살았다는 생각이 들어요. 회사만 다닌 것도 아니고, 퇴근하고 강의를 만들고, 책을 쓰고, 특강도 다녔으니까요. 제 젊음과 시간을 꽤 부지런히 쪼개 썼습니다. 그렇게 사회 초년생 때보다 벌이가 두 배 이상 늘었습니다. 그런데 행복도 두 배가 됐을까요? 여기서 돈을 두 배 더 벌면, 처음 취업했을 때보다 네 배쯤 행복해지는 걸까요.소득 그래프 옆에 행복 그래프도 있으면 비교라도 해보겠는데, 그건 가계부에 나오지 ..
by후기/회고··
개떡같이 말해도 찰떡같이 답변하는 RAG - 한글 문서는 왜 파싱부터 다른가
TL;DR: RAG 파이프라인에서 파싱은 문서를 깨끗한 텍스트로 바꾸는 첫 단계다. 영어는 공백으로 단어가 나뉘지만, 한글은 조사와 어미가 어근에 달라붙어 형태소 분석 없이는 제대로 된 토큰화가 불가능하다. 파싱을 대충 넘기면 한 문단 중간에서 청크가 잘려 맥락이 끊기고, 조사가 붙은 채로 임베딩되어 벡터 거리가 벌어지며, "배포"를 검색해도 "배포를"이 포함된 문서가 누락된다. 파싱, 대충 해도 되지 않을까RAG를 처음 만들 때, 대부분의 튜토리얼은 영어 PDF 몇 장을 LangChain에 넣는 것으로 시작한다. 코드 몇 줄이면 문서가 벡터로 변환되고, 질문을 던지면 답이 나온다. "생각보다 쉬운데?" 싶다.그런데 사내 위키를 넣으려고 하면 이야기가 달라진다. Confluence에서 가져온 문서에는 H..
byTech··
개떡같이 말해도 찰떡같이 답변하는 RAG - 텍스트 임베딩 이해하기
TL;DR: 임베딩은 텍스트에 의미 좌표를 부여하는 기술이다. 문서를 통째로 넣지 않고 청킹으로 잘라야 검색 품질이 올라가며, 차원은 높다고 무조건 좋은 것이 아니다. 768~1,024차원에서도 최신 모델은 충분히 강력하고, MRL로 차원을 유연하게 조절할 수 있다벡터 DB에 텍스트를 넣으려면사내 위키를 기반으로 RAG(Retrieval-Augmented Generation) 시스템을 처음 만들 때, 첫 번째 관문은 임베딩이었다. "텍스트를 벡터로 바꾼다"는 설명은 이해했지만, 실제로 어떤 모델을 써야 하는지, 문서를 어떻게 자르는지, 차원은 얼마로 설정해야 하는지 물음표가 줄줄이 이어졌다.RAG 파이프라인의 구조는 단순하다. 문서를 적당한 크기로 자르고(청킹), 각 청크를 벡터로 변환해(임베딩) 벡터 ..
byTech··
카드 정지는 성공했는데, 고객에게 알림이 안 갔다고요? – MSA 환경의 설계 딜레마
금융 시스템에서 알림 발송 실패 시 어떻게 해야 할까?금융권 시스템에서 카드 분실 및 정지 프로세스처럼 고객에게 필수 알림을 전달하는 상황이 있습니다.최근 카드 결제 시스템을 설계하며 흥미로운 고민을 마주하게 되었는데요.카드 도난 분실 신고 및 카드 정지 또는 해제와 같은 프로세스는 고객 보호와 금융 사고 예방을 위해 필수적으로 빠르게 처리되어야 하는 업무입니다.또한, 고객에게 처리 결과에 대한 알림이 발송되지 않으면 금융 감독원 민원 등 중요한 규제 이슈로 이어질 수 있기에 알림의 중요성이 높습니다.그런데 알림 발송을 처리하는 UMS는 별도의 시스템으로, 발송 성공을 항상 보장하지는 않습니다.이럴 때 메시지 발송 실패가 메인 비즈니스 처리에도 영향을 줘야 하는지 고민하게 됩니다.(ex. 중요한 알림이 ..
by후기/경험··
영어 공부하다 딴짓하기
프롤로그2025.02.02 - [Degrees] - 심장뛰는 석사 입학 준비 심장뛰는 석사 입학 준비프롤로그: 인생에서 석사라는 학위가 필요할까?저는 공부에 흥미도 없었고 딱히 잘하지도 못했습니다. 겨우 대학에 진학하고 나서야 공부에 재미를 느끼기 시작했고, 제가 좋아하는 분야가 무imksh.com 위 글에 이은 두번째 글입니다. 어느덧 영어를 준비한 지 1개월이 되었고, 그동안 느낀 솔직한 후기를 남겨봅니다.또한, 개발자가 영어 공부를 하면 이 능력을 어떤식으로 활용하는지 들려드리겠습니다.토플 준비에 관심이 있거나, 그저 개발자가 영어 공부 할 때 어떤 식으로 능력을 활용하는지 궁금하신 분들께 후루룩 읽기 쉬운 글이 되길 바랍니다.다시 바빠진 일상토플 현강에 1개월 동안 참여했고, 월/수/금 강남에 ..
byDegrees··
3
제네릭이 작동하지 않는다
해당 글에서 등장하는 코드는 Github에서 확인할 수 있습니다. playgroundddd/notifier at main · CODe5753/playgrounddddsample. Contribute to CODe5753/playgroundddd development by creating an account on GitHub.github.com프롤로그개발을 하다 보면 제네릭(Generic)과 다형성(Polymorphism)을 자연스럽게 조합해 사용하게 됩니다.특히, Spring 환경에서는 제네릭을 사용한 의존성 주입(DI)을 활용하여 다양한 객체를 동적으로 주입할 수 있는데요.하지만 여기에는 예상치 못한 제네릭과 런타임 타입 매칭의 충돌이 발생할 수 있습니다.이번 글에서는 실무에서 겪었던 일이며, "Not..
byTech··
불러오는 중...