실무 Multi-Agent 오케스트레이션 15장 · 검색 품질 개선 6 / 7 ← 이전목차다음 → TechLead Cro

15장. 검색 품질 개선

정리와 체크리스트

15장에서 배운 것

  • 검색 품질이 상한이다 — 검색이 정답 청크를 가져오지 못하면 생성 단계는 만회할 수 없습니다.
  • BM25 — 단어가 겹치는 정도로 점수를 매기는 키워드 검색. 점수는 클수록 좋고, 겹치지 않으면 0건입니다.
  • 하이브리드 검색 — 벡터 검색과 키워드 검색의 결과를 번갈아 담아 후보를 만듭니다.
  • RRF — 검색마다 순위를 점수로 바꿔 더하는 순위 융합 방법. 번갈아 담기는 그 단순형입니다.
  • 쿼리 재작성 — 고객의 말을 문서의 말로 바꿔 검색합니다. LLM 1번.
  • 리랭킹 — 후보를 LLM이 읽고 순서를 다시 매깁니다. LLM 1번.
  • 폴백 — 리랭킹의 답이 모자라거나 형식에 맞지 않으면 원래 순서로 채웁니다.

한눈에 보는 핵심

rewritten = rewrite_query(question)                  # ① 질문을 문서의 말로      (LLM)
candidates = hybrid_search(rewritten, k=6)           # ② 넓게 모으기             (임베딩 + BM25)
final = llm_rerank(question, candidates, top_n=3)    # ③ 좁게 고르기             (LLM)
방법 고치는 것 조심할 것
키워드 검색 드문 단어, 정확한 글자 공백으로만 자르면 조사 때문에 놓친다
하이브리드 한쪽 검색이 놓친 청크 양쪽 결과가 모두 앞자리에 오도록 번갈아 담는다
쿼리 재작성 구어체와 문서 용어의 거리 검색에만 쓴다. 답변에는 원래 질문을 쓴다
리랭킹 정답 청크의 순위 번호가 모자라면 원래 순서로 채워 개수를 맞춘다
누가 한 일인가 내용
LLM 질문을 문서의 말로 바꿨고, 후보를 읽고 번호를 골랐습니다
임베딩 모델 + Chroma, BM25 뜻과 단어로 후보를 찾았습니다
우리(개발자) 후보를 몇 개 모을지(6), 몇 개 남길지(3), 어느 단계에 원래 질문을 넣고 어느 단계에 재작성한 문장을 넣을지, 두 검색을 어떻게 합칠지를 정했습니다

이번 장의 실습 전에 확인할 것

이 장의 파일도 chroma_db/가 있어야 벡터 검색이 동작합니다. 13장의 lesson13_rag_embedding.py를 먼저 실행해 두어야 합니다(없으면 안내를 찍고 멈춥니다). 그리고 BM25는 12장의 load_policy_chunks()로 만듭니다. 12장의 청킹을 바꿨다면 13장을 다시 실행해 두 색인이 같은 청크를 가리키게 합니다.


체크리스트

  • [ ] "광고랑 다른 게 왔어요"에 14장의 함수가 신청 기간을 안내하지 못한 원인이 어느 단계에 있는지 설명할 수 있다.
  • [ ] BM25가 점수를 매기는 두 가지 생각을 말할 수 있다.
  • [ ] 벡터 검색과 키워드 검색이 각각 강한 곳과 약한 곳을 예를 들어 설명할 수 있다.
  • [ ] "하루페이"를 키워드로 검색하면 0건이 나오는 이유를 설명할 수 있다.
  • [ ] hybrid_search가 두 결과를 번갈아 담는 이유를 설명할 수 있다.
  • [ ] RRF가 순위를 어떻게 점수로 바꾸는지, 번갈아 담기와 무엇이 다른지 말할 수 있다.
  • [ ] 재작성한 문장을 답변에 쓰지 않고 검색에만 쓰는 이유를 설명할 수 있다.
  • [ ] 모델이 번호를 두 개만 돌려줘도 llm_rerank(..., top_n=3)이 세 개를 돌려주는 이유를 코드로 설명할 수 있다.
  • [ ] 세 방법을 모두 쓰면 질문 하나에 LLM을 몇 번 부르는지 말할 수 있다.
  • [ ] 검색 함수가 본문에 출처 꼬리표를 붙여 돌려주는 이유를 설명할 수 있다.
  • [ ] 1위 거리가 가깝다고 해서 문서에 답이 있다는 뜻은 아님을 실제 거리 값으로 설명할 수 있다.

한 줄 핵심

검색을 고쳤다는 말은 "정답 청크가 몇 위에서 몇 위로 갔다"로 합니다. 넓게 모으고, 읽고 좁게 고릅니다.

← 이전 절따라하기 — 검색 네 단계 비교다음 절 →실습문제와 해답
오명운 · macro@prag-ai.com