문서 재정렬(Document Reranking)

문서 재정렬(Document Reranking)

문서 재정렬은 사용자의 쿼리에 가장 관련성이 높은 문서를 우선시하여 검색 결과를 다듬어, AI 및 RAG 시스템의 정확도를 향상시킵니다.

문서 재정렬(Document Reranking)

문서 재정렬은 쿼리와의 관련성에 따라 검색된 문서의 순서를 다시 정렬하여 검색 결과를 세밀하게 다듬는 과정입니다. 쿼리 확장은 연관된 용어를 추가하여 검색 범위를 넓히고 재현율을 높이며, 모호성을 해소합니다. 두 기술을 RAG 시스템에 결합하면 검색 정확도와 답변 품질이 향상됩니다.

문서 재정렬은 사용자의 쿼리와의 관련성에 따라 검색된 문서의 순서를 다시 정렬하는 과정입니다. 초기 검색 이후, 각 문서의 관련성을 더 정밀하게 평가하고, 가장 중요한 문서가 우선시되도록 결과를 다듬습니다.

검색 증강 생성(RAG)이란?

검색 증강 생성(RAG)은 대형 언어 모델(LLM)과 정보 검색 시스템을 결합한 고급 프레임워크입니다. RAG에서는 사용자가 쿼리를 입력하면, 시스템이 방대한 지식 베이스에서 관련 문서를 검색하여 LLM에 제공하고, 이를 바탕으로 더 사실적이고 맥락에 맞는 답변을 생성합니다. 이 방식은 AI가 생성하는 콘텐츠의 정확성과 관련성을 데이터에 기반하여 높여줍니다.

query expansion for document reranking of google search

쿼리 확장 이해하기

쿼리 확장이란?

정의

쿼리 확장은 정보 검색에서 검색 쿼리의 효과를 높이기 위해 사용되는 기술입니다. 이는 원래의 쿼리에 의미적으로 연관된 용어나 구를 추가하여 확장하는 과정을 포함합니다. 주된 목적은 사용자의 의도와 관련 문서의 언어적 차이를 극복하여, 더 적절한 정보를 검색하는 데 있습니다.

동작 원리

실제로 쿼리 확장은 여러 방법으로 구현될 수 있습니다:

  • 동의어 확장: 쿼리 용어의 동의어를 포함시켜 동일 개념의 다양한 표현을 포괄합니다.
  • 연관 용어 추가: 직접적인 동의어는 아니지만 맥락상 연관된 용어를 추가합니다.
  • LLM 기반 확장: 대형 언어 모델을 이용해 쿼리와 관련된 단어나 구를 예측하여 확장 쿼리를 생성합니다.

이처럼 쿼리를 확장하면 검색 시스템이 더 넓은 범위의 문서를 포착할 수 있어, 용어나 표현의 차이로 인해 놓칠 수 있는 문서까지 검색할 수 있습니다.

RAG 시스템에서 쿼리 확장이 중요한 이유

재현율 향상

재현율은 검색 시스템이 모든 관련 문서를 얼마나 잘 찾아내는지를 의미합니다. 쿼리 확장은 다음과 같이 재현율을 높입니다:

  • 동일 개념을 다른 용어로 설명한 문서도 검색합니다.
  • 쿼리와 관련된 하위 주제나 더 넓은 범위의 문서도 포착합니다.

쿼리 모호성 해결

사용자는 종종 짧거나 모호한 쿼리를 입력합니다. 쿼리 확장은 다음과 같은 도움을 줍니다:

  • 여러 해석을 고려하여 사용자의 의도를 명확히 파악합니다.
  • 주제의 다양한 측면을 포함해 더 포괄적인 검색을 제공합니다.

문서 매칭 강화

추가적인 연관 용어를 포함함으로써, 검색 시스템이 서로 다른 어휘를 사용한 문서와 쿼리 간의 매칭 가능성을 높여, 전반적인 검색 효율성을 향상시킵니다.

쿼리 확장 방법

1. 의사 관련 피드백(PRF, Pseudo-Relevance Feedback)

PRF란?

의사 관련 피드백은, 초기 검색에서 상위에 랭크된 문서들이 관련성이 높다고 가정하고, 이 문서들에서 중요 용어를 추출하여 원래 쿼리를 확장하는 자동 쿼리 확장 방법입니다.

PRF의 동작 원리

  • 초기 쿼리 실행: 사용자의 원래 쿼리로 1차 검색을 수행합니다.
  • 용어 추출: 상위 문서에서 빈도나 중요도 기반으로 핵심 용어를 식별합니다.
  • 쿼리 확장: 추출한 핵심 용어를 원래 쿼리에 추가하여 확장 쿼리를 만듭니다.
  • 2차 검색: 확장된 쿼리로 다시 검색하여 더 많은 관련 문서를 찾습니다.

장점과 단점

  • 장점: 사용자 개입 없이 재현율을 높일 수 있습니다.
  • 단점: 초기 검색 결과에 무관한 문서가 포함될 경우, 부정확한 용어가 확장에 포함되어 정밀도가 저하될 수 있습니다.

2. LLM 기반 쿼리 확장

대형 언어 모델 활용

최근 AI의 발전으로, GPT-3나 GPT-4 같은 LLM은 맥락과 의미를 이해하여 정교한 쿼리 확장을 생성할 수 있습니다.

LLM 기반 확장의 동작 원리

  • 가상 답변 생성: LLM이 원래 쿼리에 대한 가상의 답변을 생성합니다.
  • 맥락 확장: 답변을 통해 추가적인 맥락과 연관 용어를 확보합니다.
  • 확장 쿼리 결합: 원 쿼리와 LLM의 출력을 결합하여 확장 쿼리를 만듭니다.

예시

원래 쿼리:
“매출 증가에 기여한 가장 중요한 요인은 무엇입니까?”

LLM 생성 답변:
“해당 회계연도에는 성공적인 마케팅 캠페인, 제품 다각화, 고객 만족 이니셔티브, 전략적 가격 정책, 기술 투자 등 여러 핵심 요인이 회사 매출 증가에 기여했습니다.”

확장 쿼리:
“원래 쿼리: 매출 증가에 기여한 가장 중요한 요인은 무엇입니까?
가상 답변: [LLM 생성 답변]”

장점

  • 깊은 이해: 미묘한 관계와 개념까지 포착합니다.
  • 맞춤형 확장: 특정 도메인이나 맥락에 맞게 확장할 수 있습니다.

과제

  • 연산 자원: 상당한 처리 능력이 필요할 수 있습니다.
  • 과다 확장: 관련 없는 용어나 너무 많은 용어가 추가될 위험이 있습니다.

RAG 시스템에서 쿼리 확장 구현

단계별 프로세스

  1. 사용자 쿼리 입력: 시스템이 사용자의 원래 쿼리를 받습니다.
  2. LLM 기반 확장:
    • LLM에게 가상 답변이나 연관 쿼리 생성을 프롬프트합니다.
    • 예시 프롬프트:
      “다음 쿼리에 대한 상세 답변이나 관련 쿼리를 제공하세요: [사용자 쿼리]”
  3. 쿼리 결합:
    • 원 쿼리와 확장된 내용을 결합합니다.
    • 사용자 의도와의 관련성을 유지하도록 합니다.
  4. 검색에 활용:
    • 확장 쿼리로 지식 베이스에서 문서를 검색합니다.
    • 키워드 검색, 시맨틱 검색 또는 두 방법을 병행할 수 있습니다.

RAG 시스템에서의 이점

  • 강화된 검색: 더 많은 관련 문서를 검색하여 LLM에 더 나은 맥락을 제공합니다.
  • 사용자 경험 개선: 더 정확하고 풍부한 답변을 제공합니다.

문서 재정렬 이해하기

재정렬이 필요한 이유

  • 초기 검색의 한계: 초기 검색 방식은 넓은 의미의 유사성에 의존해, 미묘한 관련성을 파악하지 못할 수 있습니다.
  • 노이즈 극복: 쿼리 확장으로 인해 관련성이 낮은 문서도 포함될 수 있는데, 재정렬이 이를 걸러냅니다.
  • LLM을 위한 최적 맥락 제공: 가장 관련성 높은 문서를 제공하면 LLM의 답변 품질이 향상됩니다.

문서 재정렬 방법

1. 크로스 인코더 모델

개요

크로스 인코더는 쿼리와 문서를 쌍으로 입력받아 관련성 점수를 출력하는 신경망 모델입니다. 쿼리와 문서를 별도로 인코딩하는 바이 인코더와 달리, 둘을 함께 인코딩하여 상호작용을 깊이 있게 포착합니다.

동작 원리

  • 입력 쌍 구성: 각 문서를 쿼리와 쌍으로 만듭니다.
  • 공동 인코딩: 모델이 두 입력을 함께 인코딩하여 상호작용을 분석합니다.
  • 점수 산출: 각 문서에 대해 관련성 점수를 출력합니다.
  • 정렬: 점수에 따라 문서를 정렬합니다.

장점

  • 높은 정밀도: 더 정확한 관련성 평가가 가능합니다.
  • 맥락 이해: 쿼리와 문서 간의 복잡한 관계를 포착합니다.

과제

  • 연산 집약적: 문서가 많을수록 처리에 많은 자원이 필요합니다.

2. ColBERT(지연 상호작용 모델)

ColBERT란?

ColBERT는 효율성과 효과를 모두 추구하는 검색 모델로, BERT 기반 토큰 단위 인코딩과 지연 상호작용 방식을 활용합니다. 쿼리와 문서 토큰을 각각 인코딩하고, 점수 산정 과정에서 토큰 간의 유사도를 비교합니다.

동작 원리

  • 토큰 단위 인코딩: 쿼리와 문서 토큰을 각각 BERT로 인코딩합니다.
  • 지연 상호작용: 점수 산정 시 쿼리와 문서 토큰을 유사도로 비교합니다.
  • 효율성: 문서 임베딩을 사전에 계산해둘 수 있습니다.

장점

  • 효율적인 점수 산정: 크로스 인코더 대비 더 빠른 처리 속도.
  • 높은 검색 품질: 효과적인 검색 성능 유지.

활용 사례

  • 연산 자원이 제한된 대규모 검색에 적합합니다.

3. FlashRank

개요

FlashRank는 최신 크로스 인코더 기반의 경량·고속 문서 재정렬 라이브러리입니다. 기존 파이프라인에 쉽게 통합할 수 있으며, 최소한의 오버헤드로 재정렬 성능을 개선합니다.

특징

  • 간편한 사용: 빠른 통합을 위한 간단한 API 제공.
  • 속도: 빠른 재정렬을 위해 최적화됨.
  • 정확성: 고품질 재정렬을 위한 효과적인 모델 적용.

사용 예시

from flashrank import Ranker, RerankRequest

query = '매출 증가에 기여한 가장 중요한 요인은 무엇입니까?'

ranker = Ranker(model_name="ms-marco-MiniLM-L-12-v2")
rerank_request = RerankRequest(query=query, passages=documents)
results = ranker.rerank(rerank_request)

이점

  • 재정렬 간소화: 모델 관리의 복잡성을 추상화합니다.
  • 성능 최적화: 속도와 정확성을 효과적으로 조화시킵니다.

RAG 시스템에서 문서 재정렬 구현

프로세스

  1. 초기 검색: 확장 쿼리로 후보 문서 집합을 검색합니다.
  2. 재정렬: 크로스 인코더, ColBERT 등 재정렬 모델로 각 문서의 관련성을 평가합니다.
  3. 선택: 상위 랭크 문서를 LLM의 맥락으로 사용합니다.

고려사항

  • 연산 자원: 재정렬은 자원이 많이 들 수 있으므로 성능과 비용의 균형이 필요합니다.
  • 모델 선택: 정확도와 효율성 측면에서 애플리케이션에 적합한 모델을 선택해야 합니다.
  • 통합: 기존 파이프라인에 무리 없이 재정렬을 통합해야 합니다.

RAG에서 쿼리 확장과 문서 재정렬 결합

쿼리 확장과 재정렬의 시너지

상호 보완적 기술

  • 쿼리 확장은 검색 범위를 넓혀 더 많은 문서를 찾고,
  • 문서 재정렬은 그 중에서 가장 관련성 높은 문서를 선별합니다.

결합의 장점

  • 재현율과 정밀도 동시 향상: 두 방법을 결합하면 문서의 양과 질을 모두 높일 수 있습니다.
  • 견고한 검색: 각 방법만 사용할 때의 한계를 보완합니다.
  • LLM 출력 개선: 더 나은 맥락 제공으로, 정확하고 풍부한 답변 생성이 가능합니다.

결합 동작 원리

  1. 사용자 쿼리 입력: 원래 쿼리를 입력받습니다.
  2. 쿼리 확장: LLM 기반 확장 등으로 쿼리를 좀 더 포괄적으로 만듭니다.
  3. 초기 검색: 확장된 쿼리로 다양한 문서를 폭넓게 검색합니다.
  4. 문서 재정렬: 재정렬 모델이 원 쿼리와의 관련성에 따라 문서 순서를 다시 정렬합니다.
  5. 맥락 제공: 상위 문서를 LLM에 맥락으로 제공합니다.
  6. 답변 생성: LLM이 가장 관련성 높은 문서를 바탕으로 답변을 생성합니다.

실무 구현 단계

예시 워크플로우

  • LLM을 활용한 쿼리 확장:

    def expand_query(query):
        prompt = f"Provide additional related queries for: '{query}'"
        expanded_queries = llm.generate(prompt)
        expanded_query = ' '.join([query] + expanded_queries)
        return expanded_query
    
  • 초기 검색:

    documents = vector_db.retrieve_documents(expanded_query)
    
  • 문서 재정렬:

    from sentence_transformers import CrossEncoder
    cross_encoder = CrossEncoder('cross-encoder/ms-marco-MiniLM-L-6-v2')
    pairs = [[query, doc.text] for doc in documents]
    scores = cross_encoder.predict(pairs)
    ranked_docs = [doc for _, doc in sorted(zip(scores, documents), reverse=True)]
    
  • 상위 문서 선택:

    top_documents = ranked_docs[:top_k]
    
  • LLM으로 답변 생성:

    context = '\n'.join([doc.text for doc in top_documents])
    prompt = f"Answer the following question using the context provided:\n\nQuestion: {query}\n\nContext:\n{context}"
    response = llm.generate(prompt)
    

모니터링 및 최적화

  • 성능 지표: 정밀도, 재현율, 관련성 점수 등으로 검색 성능을 정기적으로 측정합니다.
  • 피드백 루프: 사용자 피드백을 반영해 쿼리 확장과 재정렬 전략을 개선합니다.
  • 자원 관리: 결과 캐싱이나 재정렬 문서 수 제한 등으로 연산 자원을 효율화합니다.

활용 사례 및 예시

예시 1: 고객 지원용 AI 챗봇 고도화

시나리오

한 기업이 제품 및 서비스 관련 고객 문의를 처리하기 위해 AI 챗봇을 운영합니다. 고객들은 다양한 용어나 표현으로 질문을 합니다.

과제

  • 고객별 다양한 언어와 용어 사용.
  • 신속하고 정확한 답변 제공을 통한 고객 만족 유지.

구현

  • 쿼리 확장: 챗봇이 고객의 질문에 동의어와 연관 용어를 추가합니다.
    예를 들어, 고객이 “내 기기를 고치는 방법은?“이라고 묻는다면, “기기 수리”, “가전제품 문제 해결” 등의 용어로 쿼리를 확장합니다.
  • 문서 재정렬: 검색된 도움말 문서와 FAQ를 재정렬하여, 고객의 문제와 가장 관련성 높은 솔루션을 우선시합니다. 크로스 인코더가 각 문서의 적합성을 평가합니다.

효과

  • 답변의 정확성과 관련성 향상.
  • 고객 만족도 및 지원 처리 시간 단축.

예시 2: AI 기반 연구 도구 최적화

시나리오

연구자들이 연구에 필요한 논문, 데이터, 인사이트를 찾기 위해 AI 어시스턴트를 활용합니다.

과제

  • 전문 용어가 많은 복잡한 쿼리.
  • 방대한 학술 문헌에서 관련 자료 선별 필요.

구현

  • 쿼리 확장: 어시스턴트가 LLM을 활용해 쿼리에 연관 개념과 동의어를 추가합니다.
    예를 들어, “양자 얽힘 응용” 쿼리는 “quantum entanglement applications”, “quantum computing entanglement” 등 다양한 표현으로 확장합니다.
  • 문서 재정렬: 검색된 논문을 정제하여, 확장

자주 묻는 질문

문서 재정렬이란 무엇인가요?

문서 재정렬은 초기 검색 후 사용자의 쿼리와의 관련성에 따라 검색된 문서의 순서를 다시 정렬하는 과정입니다. 이를 통해 가장 관련성 높고 유용한 문서가 우선시되어 AI 기반 검색 및 챗봇의 품질이 향상됩니다.

RAG 시스템에서 문서 재정렬은 어떻게 작동하나요?

RAG 시스템에서는 크로스 인코더나 ColBERT와 같은 모델을 활용하여, 1차 검색 후 각 문서가 사용자의 쿼리와 얼마나 관련성이 있는지 평가합니다. 이 과정은 대형 언어 모델에 제공할 문서 집합을 세밀하게 다듬어, 더 정확한 답변 생성을 돕습니다.

쿼리 확장이란 무엇이며 왜 중요한가요?

쿼리 확장은 정보 검색에서 원래의 사용자 쿼리에 연관된 용어나 구를 추가하여 재현율을 높이고 모호성을 해소하는 기술입니다. RAG 시스템에서는 다른 용어를 사용하는 더 많은 관련 문서를 찾는 데 도움이 됩니다.

문서 재정렬의 주요 방법에는 무엇이 있나요?

주요 방법에는 쿼리와 문서를 함께 인코딩해 정밀한 점수를 매기는 크로스 인코더 신경망 모델, 효율적인 점수를 위한 지연 상호작용 방식을 사용하는 ColBERT, 빠르고 정확한 재정렬을 위한 FlashRank와 같은 라이브러리가 있습니다.

쿼리 확장과 문서 재정렬은 어떻게 함께 작동하나요?

쿼리 확장은 더 많은 관련 문서를 검색할 수 있도록 검색 범위를 넓히고, 문서 재정렬은 이 결과를 필터링 및 정제하여 가장 핵심 문서만 AI의 답변 생성에 활용되도록 해 재현율과 정밀도를 모두 극대화합니다.

문서 재정렬로 AI 검색 성능 향상하기

문서 재정렬과 쿼리 확장이 AI 챗봇 및 자동화 플로우의 정확성과 관련성을 어떻게 개선하는지 알아보세요. FlowHunt로 더 똑똑한 AI를 구축하세요.

더 알아보기

쿼리 확장
쿼리 확장

쿼리 확장

쿼리 확장은 사용자의 원래 쿼리에 용어나 맥락을 추가하여 문서 검색을 개선하고, 특히 RAG(검색 증강 생성) 시스템에서 더 정확하고 상황에 맞는 응답을 제공하는 과정입니다....

7 분 읽기
AI RAG +4
검색 기반 생성(RAG, Retrieval Augmented Generation)
검색 기반 생성(RAG, Retrieval Augmented Generation)

검색 기반 생성(RAG, Retrieval Augmented Generation)

검색 기반 생성(RAG, Retrieval Augmented Generation)은 전통적인 정보 검색 시스템과 생성형 대규모 언어 모델(LLM)을 결합한 고급 AI 프레임워크로, 외부 지식을 통합하여 더 정확하고 최신이며 맥락에 맞는 텍스트를 생성할 수 있도록 합니다....

3 분 읽기
RAG AI +4
질의 확장(Query Expansion)
질의 확장(Query Expansion)

질의 확장(Query Expansion)

FlowHunt의 질의 확장(Query Expansion)은 챗봇이 동의어를 찾고, 철자 오류를 수정하며, 사용자 질의에 대해 일관되고 정확한 답변을 제공함으로써 챗봇의 이해도를 높여줍니다....

3 분 읽기
AI Chatbot +3