/
https://42jerrykim.github.io/ _index.md
희소 벡터 대신 신경망 임베딩으로 검색하는 Dense Retrieval을 다룹니다. Bi-encoder와 Cross-encoder의 정확도-속도 트레이드오프, DPR의 대조 학습, Re-ranking 2단계 구조를 원 논문과 함께 정리합니다. 검색과 생성을 잇는 Retriever-Reader 구조를 Lewis et al. 원 논문과 LlamaIndex 실습으로 다룹니다. Chunk Size 트레이드오프, 불확실성 기반 검색 트리거까지 RAG 파이프라인 설계의 실전 포인트를 정리합니다. 차원의 저주 때문에 정확한 최근접 이웃 탐색이 고차원에서 왜 어려워지는지부터, 해시 기반 LSH와 HNSW 같은 그래프 인덱스로 근사 검색을 빠르게 만드는 방법, CLIP을 이용한 멀티모달 검색까지 자세히 다룹니다. 문서 대신 지식그래프를 검색 대상으로 삼는 GraphRAG의 색인-검색-생성 3단계 파이프라인을 다룹니다. Retriever의 종류, CRAG 벤치마크 평가 방식, 그리고 고정된 질의 생성이 실습에서 드러낸 한계와 에이전틱 전환까지 정리합니다. N×M 통합 문제를 표준 프로토콜로 푸는 MCP(Model Context Protocol)의 구조를 다룹니다. Resources·Tools·Prompts 3요소, FastMCP 서버와 LlamaIndex 클라이언트로 구현하는 Text2SQL, 그리고 에이전틱 워크플로우의 실전 한계까지 정리합니다. 02장에서 재정렬(re-ranking)용으로 소개한 Cross-Encoder를 직접 학습시키는 방법을 다룹니다. In-batch Negative와 Hard Negative 구성, InfoNCE Loss의 수식, 전체 학습 파이프라인을 원 논문과 함께 정리합니다. 시리즈 D의 마지막 챕터입니다. Redux의 Action과 Reducer는 결국 JavaScript의 객체와 함수일 뿐입니다. var/let/const의 스코프 차이, 함수 선언 방식, 객체·배열 기본 조작을 Redux 코드를 읽는 데 필요한 만큼 정리합니다. Redux 리듀서 코드의 대부분은 구조 분해와 스프레드 연산자로 이루어져 있습니다. 원본을 바꾸지 않고 새 객체·배열을 만드는 이 두 문법을 정확히 익히면 08편의 불변성 원칙이 훨씬 쉬워지는 이유를 코드 예제로 다룹니다. Redux의 selector와 리듀서는 map/filter/reduce 같은 고차 함수로 상태를 조회·변환합니다. 원본을 바꾸지 않는 배열·객체 메서드와 바꾸는 메서드를 명확히 구분해 불변성을 지키는 습관을 코드로 다룹니다. Redux의 Reducer는 반드시 동기·순수해야 하지만, 실제 앱은 API 호출 같은 비동기 작업 없이 동작할 수 없습니다. Promise와 async/await의 동작 원리를 21–24편의 미들웨어를 이해하는 데 필요한 만큼 정리합니다.