RAG 검색 품질을 높이는 법, 청크·하이브리드 검색·필터를 따로 조정하기
AI · LLM · 검색 설계
AI를 활용하여 생성한 이미지입니다.
RAG 답변이 자꾸 엉뚱한 문서를 인용할 때 청크 크기만 바꾸는 경우가 많아요. 하지만 검색 결과는 문서 분할, 키워드 일치, 벡터 유사도, 메타데이터 필터, 결과 개수와 재순위가 함께 결정합니다. 한 값을 바꾼 뒤 좋아졌다고 느껴도 다른 질의에서는 나빠질 수 있어요.[1][2]
청크는 검색 결과의 단위예요
OpenAI Retrieval 문서는 벡터 스토어에 파일을 넣으면 자동으로 청크화·임베딩·인덱싱할 수 있다고 설명하고, 고정 청크 전략의 예로 최대 1,200토큰과 200토큰 겹침을 제시해요.[1] 이 숫자를 모든 문서에 그대로 적용하라는 뜻은 아니에요. 제목, 표, 코드, 규정 조항처럼 경계가 중요한 문서라면 의미 단위를 유지하는 분할이 더 적합할 수 있습니다.
| 증상 | 먼저 조정할 것 | 피해야 할 결론 |
|---|---|---|
| 답변에 필요한 문장이 잘려요 | 청크 경계와 겹침 | 무조건 청크를 크게 만들기 |
| 비슷한 문서가 너무 많이 나와요 | 메타데이터 필터·top 수 | 임베딩 모델만 교체하기 |
| 정확한 제품명 검색이 약해요 | 키워드와 벡터 하이브리드 | 벡터 검색만 고집하기 |
| 관련 없는 결과도 항상 나와요 | 점수 임계값과 평가 질의 | k를 계속 늘리기 |
벡터 검색만으로 충분하지 않은 이유
벡터 검색은 단어가 정확히 같지 않아도 의미가 비슷한 내용을 찾는 데 유리해요. 반면 제품 코드, 오류 번호, 법 조항처럼 정확한 문자열이 중요한 질의에는 키워드 검색이 더 직접적일 수 있습니다.[1][3] Azure AI Search 문서는 키워드 검색과 벡터 검색을 한 요청에서 함께 수행하는 하이브리드 검색을 설명하고, 두 결과 집합을 RRF 방식으로 합칠 수 있다고 안내해요.[2][3]
실무에서는 ‘벡터 검색을 켜면 검색이 똑똑해진다’보다 질의 유형을 나누는 편이 좋아요. 사용자가 자연어로 원인을 묻는지, 고유한 오류 문자열을 입력하는지, 날짜나 부서 같은 조건을 붙이는지에 따라 검색 경로를 다르게 설계해요.
메타데이터 필터를 먼저 적용하기
문서에 제품, 버전, 지역, 공개 상태, 작성 부서 같은 속성을 저장하면 검색 전에 범위를 줄일 수 있어요. OpenAI Retrieval 문서는 파일 속성에 조건을 걸어 특정 날짜 범위나 지역만 검색하는 필터를 설명합니다.[1] 필터는 관련 없는 문서가 후보에 들어오는 것 자체를 막기 때문에, 검색 결과를 나중에 프롬프트에서 골라내는 것보다 예측 가능해요.
제품 = "A"
버전 >= "4.2"
공개상태 = "public"
다만 필터를 너무 많이 걸면 정답 문서가 후보에서 사라져 ‘검색 실패’처럼 보일 수 있어요. 필터를 적용한 결과 수와 적용하지 않은 결과 수를 함께 로그로 남기고, 0건이 나왔을 때 필터를 한 단계씩 풀어 보는 진단 경로를 마련해야 합니다.
k와 score threshold를 따로 보기
벡터 검색은 가장 가까운 결과를 k개 돌려주는 구조라서, 데이터와의 유사도가 낮아도 결과가 채워질 수 있어요. Azure 문서도 순수 벡터 질의에서는 점수 임계값으로 약한 결과를 제외할 수 있다고 설명합니다.[2] 따라서 k를 5에서 20으로 늘리는 것은 근거를 늘리는 일이 아니라 잡음도 늘리는 선택일 수 있어요.
- 대표 질의를 20~50개 만들고 정답 문서 ID를 표시해요.
- 청크 변경 전후에 정답 문서가 top-k 안에 들어왔는지 측정해요.
- 정답이 들어왔지만 순위가 낮으면 하이브리드 검색이나 재순위를 시험해요.
- 정답이 없는데도 결과가 항상 나오면 임계값과 빈 결과 처리 문구를 조정해요.
- 최종 답변에 인용할 문장이 청크 안에 충분히 들어 있는지도 따로 확인해요.
운영에서 남겨야 할 로그
질의 원문, 적용한 필터, 검색 방식, k 또는 top 값, 반환된 문서 ID, 점수, 최종 답변에 사용한 문서를 남기면 문제가 생겼을 때 청크와 모델을 구분해 볼 수 있어요. 검색 품질을 높인다는 이유로 프롬프트에 ‘관련 문서를 찾아라’만 반복하는 방식은 원인을 가리기 쉽습니다.
RAG의 첫 설계는 RAG란 무엇인가? AI가 내 문서에서 답을 찾는 방식에서 설명한 전체 흐름으로 확인하고, 임베딩의 역할은 AI 임베딩이란? 문장을 숫자로 바꿔 검색하는 이유에서 이어서 볼 수 있어요. 중요한 것은 한 번에 모든 설정을 바꾸지 않고, 질의 집합과 로그로 변경 전후를 비교하는 일입니다.