임베딩 검색 프로젝트 모음
이 글은 이 글은 newsFinder 프로젝트를 진행하면서 공부하고 배운것들을 써놓은 글입니다. 저도 잘 모르지만, 미래에 저에게 다시 한번 설명한다는 느낌으로, 구어체를 좀 사용했습니다. 아래는 사용한 프롬프트 입니다. 사용한 AI는 클로드 Opus5 입니다. 사용한 프롬프트 보기(클릭하여 펼치기) 프롬프트 설계의도 AI를 코드...
이 글은 이 글은 newsFinder 프로젝트를 진행하면서 공부하고 배운것들을 써놓은 글입니다. 저도 잘 모르지만, 미래에 저에게 다시 한번 설명한다는 느낌으로, 구어체를 좀 사용했습니다. 아래는 사용한 프롬프트 입니다. 사용한 AI는 클로드 Opus5 입니다. 사용한 프롬프트 보기(클릭하여 펼치기) 프롬프트 설계의도 AI를 코드...
이 글은 CSES 문제 풀이 모음 입니다. 풀다가 막히는 부분은 다음 프롬프트를 사용하여 클로드를 통하여 도움을 받았습니다. 받은 힌트는 요약하여 인용박스로 두었습니다. 사용한 프롬프트 보기(클릭하여 펼치기) 프롬프트 설계의도 독학으로 공부하며, 막힐때 AI를 사용했었는데, 그때 마다 이해하며 넘어갔었습니다. 허나 지금와서 돌아보면...
지난 시간 저번 시간에 보야지 서버가 터지면 무한 대기를 해야한다고 했었죠. 그러면 간단하게 해결책이랑 몇가지 현 코드에서 발생하는 문제를 수정해 보도록 합시다. 연결과 읽기 API를 호출할때 대기 시간이 대략 180ms 정도인데, 만약 서버가 맛이 갔다고 합시다. 근데 이것도 종류가 있습니다. 일단 연결은 간단하고, 쿡쿡 찔러서 반응을 안하면...
지난 시간 저번 시간에 다른 동시 입력시에 다른 스레드도 L1 캐시값을 그대로 받아서 더 빠르게 돌려주는 걸 해본다 했으니, 오늘 해보도록 합시다. 오늘은 길지 않습니다. 길어보이려고 코드도 안접을거에요. 진짜 별거 없음 queryVectorCacheRepository.save(cache);를 따로 빼줘야 합니다. 근데 따로 빼주면 코드 어딘가에...
지난 시간 지난시간에 캐시 두 단에서 전부 미스가 나면, API를 두번 호출하는 거 해결한다고 했었죠. 그러면 한번 해결 해 봅시다. 나도 똥싸개 빨리 좀 요청이 세가지가 들어왔습니다. 하나는 소변이고, 두개는 큰거네요. 근데 화장실에 소변칸 하나, 변기칸 하나가 있다고 해봅시다. 저희 코드는 줄을 안서요. 그냥 들어가요. 되게 비효율적이죠?...
지난 시간 저번 시간에 containsKey 어쩌구 하면서 null값 받을 수도 있다고 그랬죠. 그러면 오늘 이어서 알아봅시다. 안전? if (lruCached.containsKey(norm)) { normToVector = lruCached.get(norm); return normToVector; } 위 코드에서 contain...
지난 시간 지난번에 이제 L1에 동시 요청이 들어오면 안 고장나게 만든다고 했죠. 그전에, 왜 그런지, 어떻게 박살나는지 부터 알아 봅시다. 왜? LinkedHashMap로 Lru 만들었는데, 이거는 활짝 열린 방입니다. 근데 일인실이에요. 한명만 들어와서 일하고 나가야 합니다. 두명 들어오면 서로 할일 하다가 동선 겹치고 일 꼬이고 그래요. ...
지난 시간 지난 시간에 L1 캐시를 만들어 봤습니다. 측정을 한다고 했으니깐, 측정을 해야겠죠. 그런데, 제가 측정을 매번 진행했는데, 그때 마다 매번 기준이 바뀌고, 저도 매번 까먹고해서, 매번 이게 차이가 좀 크게 나고, 고개가 갸우뚱한 상황이 좀 나왔습니다. 심지어는 측정을 하고 지워버린 다음, 제 머리에서도 지워져서, 이게 재현이 안되더...
지난 시간 지난 시간에 간단한 LRU 코드를 만들어 봤습니다. 이번 시간에는 진짜 L1에다가 한번 올려봅시다. 일단 저번에 봤듯이, getVector의 흐름은, normalize -> DB 조회 -> 있으면 반환 / 없으면 API 호출 후 DB 저장 요런 식이죠. 그런데 이제는 normalize -> L1 조회 -> 있...
지난 시간 지난 시간에 캐시 히트/미스를 짜고 그거를 테스트 해봤죠. 이번 시간에는 메모리 캐시의 알맹이만 먼저 만들어봅시다. 붙이는 건 다음 시간에요. LRU? LRU는 Least Recently Used라고 가장 오래 안본거 부터 처리하는 방법중 하나 입니다. 이거 말고도 여러가지가 있는데 FIFO, LFU 같은것들도 있습니다. 그리고 왜...