분류 전체보기 596

직접 RAG를 구축할 필요없게 해주는 Gemini File Search API

Chatbot을 만들면서 가장 귀찮았던건 RAG였다. RAG를 구현하기 위해 VectorDB라는 관리 포인트가 생기며, 임베딩 정책 및 모델 설정, 임베딩할 파일들을 관리하는 컴포넌트까지...RAG 구축 하나로 프로젝트가 복잡해지는 것은 순식간이다. 지난 11월 6일, Google이 Gemini 3, Nano Banana Pro와 함께 Gemini File Search API를 발표했다. Gemini File Search API는 Gemini API에 구축된 RAG 시스템이다. 텍스트 파일 종류라면 대부분 지원하며, File Store를 생성하고 파일을 업로드하는 간단한 절차만으로 검색 기능을 추가할 수 있다. 나는 사내 API 문서를 바탕으로 API에 대한 질의를 할 수 있는 하는 MCP서버를 만들어보..

[Android] Room이 생성한 Dao 구현체 확인방법

오늘 @Upsert 어노테이션을 사용해서 Collection 데이터를 넘겼을때 과연 "트랜잭션처리가 되는가?"에 대해서 검증해야할 일이 있었다. Room을 당연한듯이 사용하고는 했지만 너무 추상화되어있어서 내부 동작을 알지 못했다. 당연히- 트랜잭션처리가 될거라고, 되어야만 한다고 생각했지만, 어림짐작으로 그치지 않고 코드로 확실하게 보고싶었다. 안드로이드 빌드를 한번 끝내면 generated/build에 내 Dao이름 + _Impl 이름으로 Dao의 구현체에대한 Java Class가 생성되어있는 것을 볼 수 있다. upsert 함수가 이렇게 트랜잭션으로 감싸져 있는것을 확인했고, Room에 대한 흐릿한 불신을 지울 수 있게 되었다.@Override public Object upsert(fina..

[일본 마쓰야마] まめ楽 - 두부 정식

마쓰야마에서 유명한 요리는 단연 타이메시다.타이메시도 정말 맛있는 음식이긴하지만, 마쓰야마에 지내는동안 그런 음식만 먹을수는 없지않은가..?!도고 공원을 한바퀴 돌고, 독특한 두부정식을 점심으로 간단히 먹었었는데 정말 좋은 가격에 건강하고 든든한 한끼를 먹은느낌이었다.특히 어묵이나 가지 등을 독특한 방식으로 조리한 반찬들이 맛있었다. 그리고 빨간 고추로 만든 유즈코쇼를 두부와 함께 먹도록하는데,여기서 이 조합이 너무 신선해서 빨간 유즈코쇼를 하나 사왔다. 식사공간 바로옆이 식재료를 사갈수도있는 숍이다.

OAuth 2.0 관련 용어 공부

인가(Authorization)확인된 사용자가 특정 자원에 접근할 권한이 있는지 확인 (권한 확인) 인증(Authentication)사용자가 누구인지 확인 (로그인)따라서 일반적인 순서: Authentication → Authorization 인증 서버(Authorization server)OAuth 2.0 프레임워크의 구성요소로, 클라이언트가 인증 및 인가에 성공하면 Access Token을 발급한다. Bearer 인증OAuth 2.0 프레임워크에서 사용하는 토큰 인증 방식. HTTP 통신시 Header에 “Authorization: Bearer ”과 같은 형식으로 사용한다. Basic 인증방식만으로는 사용자의 권한을 정교하게 제어할 수 없기 때문에 등장했다. 형식은 *불투명한(Opaque) 문자열일수..

[논현] 성천막국수 - 막국수

추천 받아서 방문한 집이다.호불호가 꽤 클 것같은 느낌이긴하지만, 나는 마음에 들었다! 혼자가면 제육 4점 + 막국수 세트를 먹을 수 있다. 물론 난 고기를 좋아해서 그냥 제육 반판시켰다. 비빔 막국수를 먹었는데, 양념이 짜니 바로 다 풀지말고 조금씩 다대기를 풀면서 먹으라는 조언을 받았기에 그렇게 먹었다. 라멘에 아지헨을 넣는 것처럼 처음에 슴슴하게 먹었다가 점점 자극적인 맛으로 먹으니 고명하나없는 막국수를 먹으면서도 다채롭게 먹을 수 있었다. 그리고 참기름 냄새가 너무좋다...ㅋㅋㅋ 언제 한번 메밀이 100%로 들어간 미슐랭 막국수집에 방문한적이 있었는데, 메밀이 너무 많이들어가서 면이 푸석하고 뚝뚝 끊겼다. 건강에 좋을지 어떨진모르지만 맛으로 놓고보면 실망스러웠다. 성천 막국수는 면이 쫀득하고 ..

샤오미 14T - 아이폰 16에서 갈아탄 리뷰

얼마전까지 구글 픽셀7을 아주 잘 쓰고있다가, 자가 수리로 인해 볼륨키가 고장나기도하고 더위먹고 하루 내내뻗은적이 있어서 급하게 아이폰 16e로 교체했었다. 오랜만에 아이폰 진영으로 넘어왔기에 기기사양을 제대로 몰랐고, 16e는 맥세이프가 빠져있는데다 Face ID 기능도 조악해서 최종적으로 아이폰 16으로 기기변경을 해서 사용하고 있었다. 그러다 문득...판다 익스프레스가 너무 먹고싶어서 여의도 IFC몰에 갔다가 샤오미 매장에서 이 녀석을 보게된다.샤오미 매장에는 샤오미 폰이 라이카랑 협업했다는 광고가 대문짝만하게 있었다. 아니...그 비싼 라이카가 휴대폰에 들어있다고?!15T 라인은 백만원대라, 상대적으로 저렴한 모델인 14T를 구경해보았다. 사진을 찍어보니 정말 다르긴다르다.이게 폰 카메라인가~D..

나/리뷰 2025.09.14

Gevent 알아보기

gevent는 동시성과 네트워크 관련 작업들을 위한 다양한 API를 제공하는 동시성 라이브러리다. gevent에서는 Greenlet이라고하는 경량 코루틴을 사용한다. 한 번에 오직 하나의 greenlet만이 실행되기에, multiprocessing이나 threading을 이용한 병렬처리와는 다르다.yield를 통해 컨텍스트 스위칭이 이루어지며, 네트워크, I/O bound 작업을 처리할때 그 힘이 발휘된다. gevent는 네트워크 라이브러리들이 컨텍스트 스위칭이 가능한 시점에 yield하도록 보장해준다. Monkey patchasyncio를 사용하는 것 보다 gevent가 나은 점 중에 하나는 바로 monkey patch로 gevent를 사용하지 않는 다른 라이브러리들도 동시처리를 가능하도록 만들어준다는..

[용산] 한땀스시 - 초밥

용산역 근처 초밥집을 찾다가 초밥 구성과 모양이 이 가격대가 아닌데...싶어서 방문했던 집이다.25000원 세트를 먹었는데 초밥에 장국, 차완무시, 새우 튀김 우동, 아이스크림 디저트까지 코스로 제공해준다. 심지어 런치때는 16000원! 트러플, 우메보시, 감태, 아귀간, 삼치와 청어, 단새우 등 보통 동네 초밥집에서는 쉽게 볼 수 없는 재료들이 가득하다. 초밥을 하나하나 집어먹을때마다 음~!! 하면서 먹었다. 정말 오랜만에 맛있는 초밥을 먹어보는 것 같다. 서비스로 감자 고로케도 받았는데 고로케마저도 맛있는 맛집. 찾아가는 법이 조금 까다롭지만, (이것도 용산 자주다니시면 쉬울듯)맛이 아주 좋은 집이라 또 다시 방문해서 다양한 요리를 맛보고싶다.

나노바나나로 피규어 만드는 방법 (더 상세한 설정 가능)

ChatGPT의 "지브리" 이미지 생성 열풍에 이어 Google의 나노 바나나가 피규어 만들기로 화제다.나노 바나나는 Gemini 2.5 Flash Image의 이름인데, 구글의 최신 이미지 생성 모델이다. 이미지의 맥락, 빛과 그림자를 이해하고, 일관성을 유지하는데 탁월한 모습을 보이고있다. 나노 바나나로 피규어 이미지를 만드는 방법은 LMArena에서 진행하는 방법이 널리 알려져있으나, LMArena는 서드파티 앱이기때문에 기본 설정밖에 사용하지 못한다. 나노 바나나는 Google 제품이기 때문에 Google Ai Studio를 활용하면 훨씬 더 자유로운 설정을 할 수 있고, 대화편집도 가능해서 일관된 이미지 생성에 더 유리하다. Google AI StudioGoogle AI Studio에 들어온 ..

[Python] Pipeline Pattern 구현

코드 베이스에대한 위키 문서를 작성하는 토이 프로젝트를 만드는 중, 선형적으로 진행되는 작업에 대해 깔끔하게 처리해야할 경우를 발견했다. 작업은 다음 순서대로 이어진다. 1. 코드 베이스를 다운받는다.2. 코드 베이스의 구조를 참고하여 작성할 위키 문서의 뼈대를 생성한다.3. 만들어진 뼈대의 각 페이지들을 생성한다.4. 전체 문서에 대한 인덱스 페이지를 생성한다.5. 변경사항을 다시 업로드한다. 이전 스텝의 진행이 실패하면 멈춰야하며, 각 스텝은 이전 스텝의 출력 또는 맥락을 필요로 한다.구현에 앞서, 어떻게 쓰고싶은지부터 정하면 늘 도움이 된다.pipeline = ( Pipeline.with_context(context) .register(Download) .register(Genera..