LLM 기반 쿼리 확장

AI 기술 자료5개월 전 업데이트 AI 공유 서클
1.5K 00

검색 엔진에 키워드를 입력했는데 원하는 것과는 다른 결과가 나온 적이 있나요? 또는 무언가를 검색하고 싶은데 어떤 단어를 사용해야 가장 정확하게 표현할 수 있을지 모르겠어요? '쿼리 확장' 기술이 이러한 문제를 해결하는 데 도움을 줄 수 있으니 걱정하지 마세요.

쿼리 확장 기법이 최근 다시 불붙고 있습니다. 한때 검색 엔진의 표준으로 사용되다가 여러 가지 이유로 한동안 잠잠해졌습니다. 하지만 이제 '에이전트 검색'(에이전트 검색)이라는 새로운 기술이 등장하면서 쿼리 확장이 다시 각광을 받고 있습니다.

 

쿼리 확장이 필요한 이유는 무엇인가요?

일반적으로 검색 엔진을 사용할 때 입력하는 검색어는 짧고 구어체적인 경향이 있습니다. 이로 인해 두 가지 문제가 발생할 수 있습니다:

  • 검색어가 너무 일반적입니다.예를 들어, '인공지능'의 최신 진행 상황을 알고 싶지만 '인공지능'만 입력하면 검색 엔진이 사용자가 알고자 하는 측면을 파악하기 어렵습니다.
  • 너무 구체적인 검색어예를 들어 특정 질병에 대한 정보를 검색하고 싶지만 어떤 용어가 가장 정확한지 모른다고 가정해 보세요.

이러한 모든 문제는 검색 결과의 품질에 영향을 미칩니다. 에이전트 검색과 같은 고급 검색 기술도 동일한 문제에 직면해 있습니다.

에이전트 검색이란 무엇인가요?

추론 검색은 더 스마트한 검색 방식입니다. 사용자가 입력한 키워드를 이해할 뿐만 아니라 문맥과 의도에 따라 보다 정확하고 포괄적인 정보를 찾을 수 있도록 도와주는 스마트 비서라고 생각하면 됩니다.

예를 들어, '케이크 만드는 법'을 검색하면 기존 검색 엔진에서는 '만들기'와 '케이크'라는 단어가 포함된 페이지만 표시될 수 있습니다. 하지만 추론 검색은 사용자의 의도가 케이크 만드는 방법을 배우려는 것임을 이해하므로 더 자세한 튜토리얼, 동영상 또는 다양한 종류의 케이크에 대한 레시피를 표시할 수 있습니다.

추론 검색은 더 똑똑해졌지만, 검색어가 너무 짧거나 모호하면 검색 의도를 정확하게 파악하는 데 어려움을 겪을 수 있습니다. 이 문제를 해결하려면 검색어를 '확장'하거나 '재작성'하여 검색 의도를 보다 정확하고 포괄적으로 표현할 수 있는 기술이 필요합니다. 이를 "쿼리 확장"이라고 합니다.

 

쿼리 확장이란 무엇인가요?

쿼리 확장은 검색 결과를 최적화하는 기술입니다. 검색 엔진이 원하는 결과를 더 쉽게 찾을 수 있도록 원래 검색어에 관련 단어를 추가하는 것입니다.

예를 들어 "돼지고기 찜 만드는 법", 쿼리 확장자는 자동으로 "레시피","연습","가족의 일상","줄무늬 돼지고기" 이 단어들. 이렇게 하면 검색 결과에 제목이나 본문에 '돼지고기찜'이 포함된 콘텐츠뿐만 아니라 돼지고기찜 만드는 법, 가정 요법, 판체타로 돼지고기찜 만드는 법에 대한 튜토리얼까지 포함되므로 검색 결과가 더욱 포괄적이고 사용자의 필요에 맞게 맞춤화됩니다.

基于LLM的查询扩展 (Query Expansion)

그림 1: 동의어 사전을 사용한 쿼리 확장 순서도

쿼리 확장은 기존 키워드 검색 엔진과 고급 추론 검색 엔진을 포함한 모든 유형의 검색 엔진에서 사용할 수 있습니다. 추론 검색의 경우 쿼리 확장은 사용자의 검색 의도를 더 잘 이해하여 보다 관련성 높은 결과를 제공하는 데 도움이 될 수 있습니다.

기존 검색 엔진에서 쿼리 확장은 주로 다음 두 가지 문제를 해결하는 데 사용됩니다:

  • 형태학(언어학)같은 단어의 다른 형태(예: '실행'과 '달리기'는 다른 단어로 간주되어 불완전한 검색 결과로 이어집니다.
  • 동의어 및 관련 단어"체중 감량"를 포함하는 검색엔진을 찾지 못할 수 있습니다.다이어트","지방 감소"또는"체중 조절' 페이지에 표시되지만 실제로는 관련성이 높은 단어입니다.

쿼리 확장을 달성하기 위해 다음과 같은 많은 것들이 고려되었습니다:

  • 동의어 사전 수동 개발비슷한 뜻을 가진 단어를 알려주는 사전과 같은 기능입니다.
  • 수많은 기사에서 자동으로 관련 단어 찾기어떤 단어가 자주 함께 나타나는지 분석하여 연관성 여부를 판단합니다.
  • 검색 기록 분석사람들이 유사한 콘텐츠를 검색할 때 어떤 다른 키워드를 사용하는지 확인하세요.
  • 사용자 피드백 기반사용자가 검색 엔진에 어떤 단어가 연관성이 있는지 알려줍니다.

 

시맨틱 벡터 모델 및 쿼리 확장 기능

최근에는 인공 지능의 발달과 함께 '시맨틱 벡터 모델링'이라는 새로운 기술이 등장했습니다. 각 단어를 일련의 숫자('벡터'라고 함)로 번역하는 '단어 번역기'라고 생각하면 됩니다. 이 숫자는 단어의 의미를 나타내며, 단어의 의미에 가까울수록 해당 숫자 문자열(벡터)도 가까워집니다.

시맨틱 벡터 모델을 사용하면 이론적으로 검색 엔진이 더 똑똑해져야 하며 쿼리 확장이 불필요해 보입니다. 예를 들어 "돼지고기 찜 만드는 법", 시맨틱 벡터 모델은 "레시피","연습"이 단어들은 '돼지고기찜'의 의미와 충분히 비슷해서 직접 입력하지 않아도 검색 엔진에서 레시피를 찾을 수 있어야 합니다.

하지만 시맨틱 벡터 모델은 완벽하지 않은 것이 현실입니다. 이 모델이 생성하는 '숫자 문자열'(벡터)에는 모호한 정보가 포함될 수 있어 검색 결과가 정확하지 않을 수 있습니다.

예를 들어 "석류"를 입력하면 검색 엔진이 "Apple 휴대폰" 결과를 반환할 수 있으며, "과일"결과가 반환될 수도 있습니다."Apple Inc."를 검색하여 주식 정보를 확인하세요. 하지만 정말로 찾고 있는 정보가 "애플 재배 기술" 기사만 표시되지만 다른 결과가 넘쳐날 수 있습니다. 검색어 "플랜테이션'라고 입력하면 검색 엔진이 사용자의 의도를 더 정확하게 이해하고 사용자의 요구에 더 부합하는 결과를 찾는 데 도움이 됩니다.

 

AI 대규모 모델(LLM)을 통한 쿼리 확장

이제 쿼리 확장을 위한 더 강력한 도구가 생겼는데, 바로 AI 대규모 모델(LLM)입니다.

AI 대규모 모델(LLM)이란 무엇인가요? 방대한 양의 텍스트 데이터에 대한 훈련을 통해 풍부한 지식과 언어적 기술을 습득한 '언어학자'라고 생각하면 됩니다.

기존 쿼리 확장 방식에 비해 LLM으로 쿼리 확장을 수행하면 몇 가지 중요한 이점이 있습니다:

  • 방대한 어휘: LLM 많은 단어를 보고 올바른 동의어 또는 관련 단어를 찾는 것에 대해 걱정하지 마세요.
  • 판단력 키우기LLM은 기존 방법으로는 불가능한 검색 주제와 연관성이 있는 단어를 먼저 파악할 수 있습니다. 관련성이 없는 확장자를 필터링하는 데 도움이 됩니다.
  • 유연하고 사용자 지정 가능특정 검색 작업을 기반으로 원하는 확장 기능을 LLM에 알려줄 수 있습니다. 원하는 결과를 알려주는 '명령'을 LLM에 전달하는 것과 같습니다.

LLM을 사용하여 확장어를 생성한 후에는 원래 검색어에 이러한 단어를 추가한 다음 시맨틱 벡터 모델을 사용하여 '쿼리 벡터'를 생성하고 이 벡터를 사용하여 검색하는 등 기존 쿼리 확장과 유사한 프로세스를 거칩니다.

基于LLM的查询扩展 (Query Expansion)

그림 2: LLM을 사용한 벡터 쿼리 확장

 

실험: 쿼리 확장의 효과 보기

LLM 지원 쿼리 확장이 작동하는지 여부를 확인하기 위해 몇 가지 실험을 해보았습니다.

실험 환경

  • LLMGoogle의 쌍둥이자리 2.0 플래시 모델.
  • 벡터 모델두 가지 벡터 모델인 jina-embeddings-v3와 all-MiniLM-L6-v2를 사용했습니다.
  • 데이터 집합공개적으로 사용 가능한 몇 가지 검색 테스트 데이터 세트를 사용했습니다.

실험 방법

두 가지 유형의 프롬프트는 LLM이 확장자를 생성할 때 안내하도록 설계되었습니다. 프롬프트는 원하는 결과의 종류를 알려주기 위해 LLM에 제공하는 지침과 같습니다.

  • 일반적인 단서: 다양한 검색 작업에 적용됩니다.
  • 작업별 프롬프트특정 검색 작업(예: 의료 검색)을 위해 고안된 단서 단어입니다.

또한 100개, 150개, 250개 등 다양한 확장자 수를 테스트했습니다.

일반 단서의 효과

다음과 같은 일반적인 단서 단어가 잘 작동하는 것으로 나타났습니다:

Please provide additional search keywords and phrases for
each of the key aspects of the following queries that make
it easier to find the relevant documents (about {size} words
per query):
{query}
Please respond in the following JSON schema:
Expansion = {"qid": str, "additional_info": str}
Return: list [Expansion]

이 프롬프트는 여러 검색어를 한 번에 처리하고 각 검색어에 대한 확장 용어 목록을 생성할 수 있습니다.

먼저 jina-embeddings-v3 모델로 테스트하여 다음과 같은 결과를 얻었습니다:

테스트 세트확장되지 않은 단어100개의 확장 단어150개의 확장 단어250개의 확장 단어
SciFact(사실 확인 의무)72.7473.3974.1674.33
TRECCOVID(의료 검색 작업)77.5576.7477.1279.28
FiQA(금융 옵션 검색)47.3447.7646.0347.34
NFCorpus(의료 정보 검색)36.4640.6239.6339.20
Touche2020(인수 검색 작업)26.2426.9127.1527.54

결과에서 볼 수 있듯이 쿼리 확장은 대부분의 경우 검색을 개선합니다.

다른 모델에서 쿼리 확장의 효과를 검증하기 위해 모든 MiniLM-L6-v2 모델에 대해 동일한 테스트를 반복하여 다음과 같은 결과를 얻었습니다:

테스트 세트확장되지 않은 단어100개의 확장 단어150개의 확장 단어250개의 확장 단어
SciFact(사실 확인 의무)64.5168.7266.2768.50
TRECCOVID(의료 검색 작업)47.2567.9070.1869.60
FiQA(금융 옵션 검색)36.8733.9632.6031.84
NFCorpus(의료 정보 검색)31.5933.7633.7633.35
Touche2020(인수 검색 작업)16.9025.3123.5223.23

결과를 보면 쿼리 확장이 검색 결과를 크게 향상시키는 것을 알 수 있으며, 특히 모든 미니LM-L6-v2와 같은 소형 모델의 경우 더욱 그렇습니다.

아래 표에는 모든 작업에서 각 모델의 평균 상승률이 요약되어 있습니다:

모델링100 확장 단어150 확장 단어250 확장 단어
jina-embeddings-v3+1.02+0.75+1.48
모든-MiniLM-L6-v2+6.51+5.84+5.88

모든-MiniLM-L6-v2 리프트는 jina-embeddings-v3 훨씬 더 큰 이유는 아마도 모든-MiniLM-L6-v2 모델의 초기 성능이 낮습니다.jina-embeddings-v3 모델 자체는 검색어의 의미를 더 잘 이해할 수 있으므로 쿼리 확장이 제공할 수 있는 추가 도움말은 더 제한적입니다.

그러나 이 결과는 쿼리 확장이 평균 성능을 가진 일부 모델의 검색 결과를 크게 개선하여 일부 상황에서 좋은 성능을 발휘할 수 있음을 보여줍니다.

작업별 프롬프트

일반적인 단서 단어는 일반적으로 효과적이지만, 관련 없는 단어로 인해 오히려 검색 효과를 떨어뜨릴 수 있다는 사실을 발견했습니다. 따라서 두 가지 특정 검색 작업(사실 확인 및 금융 옵션 검색)에 대해 보다 구체적인 단서 단어를 설계했습니다:

Please provide additional search keywords and phrases for
each of the key aspects of the following queries that make
it easier to find the relevant documents scientific document
that supports or rejects the scientific fact in the query
field (about {size} words per query):
{query}
Please respond in the following JSON schema:
Expansion = {"qid": str, "additional_info": str}
Return: list [Expansion]

실험 결과에 따르면 이 보다 구체적인 단서 단어는 거의 모든 경우에 검색 결과를 개선하는 것으로 나타났습니다:

테스트 세트모델링확장되지 않은 단어100 확장 단어150 확장 단어250 확장 단어
SciFactjina-embeddings-v372.7475.85 (+2.46)75.07 (+0.91)75.13 (+0.80)
SciFact모든-MiniLM-L6-v264.5169.12 (+0.40)68.10 (+1.83)67.83 (-0.67)
FiQAjina-embeddings-v347.3447.77 (+0.01)48.20 (+1.99)47.75 (+0.41)
FiQA모든-MiniLM-L6-v236.8734.71 (+0.75)34.68 (+2.08)34.50 (+2.66)

위의 표에서 볼 수 있듯이, SciFact에서 전체 MiniLM-L6-v2 모델을 사용하고 250개의 확장자를 추가한 경우를 제외한 모든 설정에서 검색 결과가 개선되었습니다.

와 관련하여 jina-embeddings-v3 모델에서 확장어를 100개 또는 150개 추가하면 최상의 결과를 얻을 수 있고, 확장어를 250개 추가하면 결과가 저하되는 것으로 나타났습니다. 이는 확장어가 많다고 해서 더 좋은 것은 아니며, 너무 많은 단어를 추가하면 검색 결과가 나빠질 수 있음을 시사합니다.

 

쿼리 확장의 장점과 과제

vantage

  • 검색 결과 개선 가능쿼리 확장을 사용하면 검색 엔진이 사용자의 의도를 더 잘 이해하고 더 관련성 있고 포괄적인 정보를 찾을 수 있습니다.
  • 평균 성능의 모델에 더 효과적쿼리 확장은 평균 성능의 일부 모델이 검색 결과를 적절하게 만드는 데 도움이 될 수 있습니다.

도전

  • 비용 문제LLM을 사용하면 검색에 소요되는 시간과 계산 비용이 증가합니다. 일부 유료 LLM 서비스를 사용하는 경우 추가 비용이 발생합니다.
  • 단서 디자인좋은 단서를 설계하는 것은 쉽지 않으며 많은 실험과 튜닝이 필요합니다. 게다가 각기 다른 LLM, 각기 다른 벡터 모델, 각기 다른 검색 작업에는 모두 다른 큐워드가 필요할 수 있습니다.
  • 기타 최적화 방법벡터 모델의 성능이 좋지 않은 경우 쿼리 스케일링에 시간을 소비하는 것보다 더 나은 모델로 전환하는 것이 더 비용 효율적일 수 있습니다.

 

향후 방향

쿼리 확장에는 아직 몇 가지 과제가 남아 있지만, 검색 기술의 미래에 중요한 역할을 할 것으로 믿습니다. 다음과 같은 방향을 모색하고 있습니다:

  • 쿼리 확장을 사용하여 문서의 벡터 표현을 개선할 수 있는지 알아보세요.
  • 재정렬과 같은 다른 AI 검색 기술에서 쿼리 확장을 사용하는 방법을 살펴보세요.
  • LLM으로 생성된 확장과 기존 방법(예: 동의어 사전)으로 생성된 확장 기능 비교
  • 쿼리 확장 작업을 위해 특별히 LLM을 훈련하세요.
  • 확장자 수를 최적화하고 한 번에 너무 많은 단어를 추가하지 마세요.
  • 좋은 확장명과 나쁜 확장명을 구분하는 방법을 알아보세요.

 

 

모든 코드와 실험 결과는 오픈 소스로 공개되어 있으며, 이를 둘러싸고 재생산하는 것을 환영합니다:

LLM 쿼리 확장: https://github.com/jina-ai/llm-query-expansion/

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...