본문 바로가기

RAG4

Reranking 리랭킹, 1차 검색의 거친 순위를 정밀 모델로 바로잡기요약빠른 1차 검색기가 넓게 후보를 건져 올리고(recall), 느리지만 정밀한 재정렬기가 그 소수 후보만 다시 점수 매겨 상위 순서를 바로잡는(precision) 2단계 검색입니다.문제는 1차 검색기가 질의와 문서를 따로 보기 때문에 빠르지만 거칠다는 것입니다. 표면적으로 비슷해 보이는 엉뚱한 문서가 상위에 끼어듭니다.해법은 재정렬기가 질의와 문서를 함께 넣어 토큰 간 상호작용까지 보고 관련도를 매기는 것입니다.비용은 후보 수에 정비례합니다. 후보 하나당 추론 1회라, 1차에서 수십에서 수백 개로 좁힌 뒤에만 재정렬합니다.중요한 제약이 하나 있습니다. 재정렬의 상한은 1차 recall이 정합니다. 정답이 애초에 후보에 없으면 아무리 잘 재정렬해도 소.. 2025. 11. 12.
HNSW HNSW, 100만 개 중에서 수백 개만 보고 최근접을 찾는 법요약HNSW는 벡터들을 근접 그래프로 잇고 그 위에 계층을 쌓은 근사 최근접 이웃(ANN) 인덱스입니다. 전신인 단층 NSW에 고속도로 층을 얹은 구조입니다.핵심은 위층의 성긴 그래프에서 거칠게 진입해 아래층의 촘촘한 그래프로 내려가며 greedy 탐색하는 것입니다. 전체가 아니라 일부 노드만 보고 최근접을 찾습니다.그래서 검색 비용이 노드 수에 로그 스케일로만 늘어납니다. 100만 개 중 수백 개만 보고 끝납니다.손잡이가 셋입니다. M(노드당 이웃 수), efConstruction(빌드 품질), efSearch(질의 시 정확도와 속도). 이 중 efSearch만 런타임에 바꿀 수 있습니다.반드시 알아야 할 것. exact가 아니라 근사입니다.. 2025. 1. 6.
Chunking (청킹) 이란? 청킹, RAG 성능이 안 나올 때 제일 먼저 봐야 하는 것요약청킹은 문서를 임베딩과 검색의 단위인 청크로 자르는 전처리입니다. 어디서 얼마나 크게 자르느냐가 RAG 품질을 좌우하는 숨은 레버입니다.문제는 양쪽 끝에 있습니다. 문서를 통째로 벡터 하나에 밀어넣으면 내용이 뭉개져 검색이 흐려지고, 너무 잘게 자르면 맥락이 사라져 청크 혼자서는 뜻이 안 통합니다.핵심 트레이드오프는 이겁니다. 작게 자르면 검색이 정밀해지고 맥락을 잃고, 크게 자르면 맥락은 살지만 검색이 뭉툭해집니다. 오버랩이 경계 손실을 메웁니다.전략은 사다리처럼 정교해집니다. 고정 크기, 문장과 문단, 재귀 분할, 시맨틱, 문서 구조 기반, late chunking 순입니다."정답 청크 크기"는 없습니다. chunk_size 1024, ov.. 2024. 11. 1.
Hybrid search 하이브리드 검색, 키워드와 의미를 한 번에 잡는 법요약키워드로 훑는 희소 검색(BM25) 과 의미로 훑는 밀집 검색(벡터) 을 함께 돌려, 한쪽이 놓치는 걸 다른 쪽이 메우도록 결과를 합치는 방식입니다.두 방식의 강점과 약점이 정확히 반대입니다. 밀집은 패러프레이즈에 강하지만 정확한 용어와 희귀 토큰에 약하고, 희소는 정확한 단어와 코드에 강하지만 다른 말로 물으면 못 잡습니다.동작은 세 단계입니다. 두 검색을 병렬로 돌려 각각 top-k를 뽑고, 융합하고, 필요하면 크로스인코더로 재정렬합니다.관건은 융합입니다. 두 검색기의 점수 척도가 달라서 그냥 더하면 숫자 큰 쪽이 결과를 지배합니다.주요 벡터 DB가 하이브리드를 기본 제공합니다. 실무에서는 융합법과 가중치를 평가로 튜닝하는 문제가 됩니다.희소와 밀.. 2024. 9. 25.