
2025년 2월에 출시된 NoLiMA는 대규모 언어 모델(LLM)로 긴 텍스트의 이해력을 평가하는 방법입니다. 키워드 매칭에 의존하는 기존의 니들 인 어 헤이 스택(NIAH) 테스트와 달리, 가장 중요한 기능은 다음과 같습니다. 긴 텍스트에서 답을 찾으려면 모델이 깊은 의미 이해와 추론에 참여하도록 하는 질문과 핵심 메시지를 신중하게 만들어야만 가능합니다.
노리마: https://arxiv.org/abs/2502.05167
수십만 또는 수백만 개의 토큰을 처리할 수 있다고 주장하는 LLM이 실제로 긴 텍스트를 이해해야 하는 작업에서는 성능이 현저히 떨어진다는 사실이 NoLiMA의 결과를 통해 밝혀졌습니다. 예를 들어, 32K 토큰의 길이에서 테스트한 10개 모델의 성능은 짧은 텍스트(1K 토큰 미만)의 절반에도 미치지 못했으며, 심지어 가장 성능이 좋은 모델인 GPT-4o는 99.3%의 완벽에 가까운 성능에서 69.7%로 떨어졌습니다.
NoLiMA에서 영감을 받아 벡터 모델을 사용합니다. jina-embeddings-v3
비슷한 실험이 수행되었습니다. 벡터 모델을 조사하는 이유는 검색 증강 생성(RAG) 시스템에서 검색 모델(벡터 모델이라고도 함)이 좋거나 나쁘면 전체 시스템의 효율성이 직접적으로 결정되기 때문입니다.
저희의 연구는 두 가지 핵심 질문에 초점을 맞추고 있습니다:
- 벡터 모델이 긴 텍스트에서 '원홉 추론'을 수행할 수 있나요? 기존 NIAH 테스트에서는 일반적으로 질문과 답변이 직접적으로 일치합니다(예: "John은 몇 년도에 파리에 갔나요?"). 및 "John은 2019년에 파리에 갔다"). 우리가 설계한 "핀"과는 달리, 이 테스트는 모델이 의미론적으로 추론해야 합니다(예: "어떤 캐릭터가 프랑스에 다녀왔나?"라는 질문). "핀"은 "유키는 셈퍼 오페라 하우스 옆에 산다"이며, 모델은 셈퍼 오페라 하우스가 독일에 있다는 것을 알고 있어야 합니다.)
- 쿼리 확장을 사용하면 긴 텍스트 검색이 더 잘 작동할 수 있나요? 쿼리 확장은 쿼리에 관련 단어를 추가하여 의미를 더 풍부하게 만드는 것입니다. 이 접근 방식이 긴 텍스트를 처리할 때 벡터 모델의 단점을 보완할 수 있는지 알아보고자 합니다.

기존 NIAH 테스트(키워드 매칭 허용)와 NOLIMA 테스트(의미론적 추론 필요) 비교
LLM을 사용한 실험 결과에 따르면 표면 텍스트 매칭에 지나치게 의존하고 심층 추론에는 충분하지 않은 것으로 나타났습니다. 벡터 모델도 마찬가지일지 궁금합니다. 이를 통해 현재의 시맨틱 검색 기술에서 여전히 부족한 부분이 무엇인지 알 수 있을 것입니다.
핵심 메시지 및 컨텍스트 구성
주요 정보 구축
기존의 '건초 더미에서 바늘 찾기' 테스트에서는 일반적으로 핵심 메시지('바늘')가 찾고자 하는 문제와 매우 유사한 단어로 표현됩니다. 예를 들어
- 질문: "어떤 캐릭터가 드레스덴에 가본 적이 있나요?"
- 핵심 메시지: "유키는 드레스덴에 살고 있습니다."
하지만 NoLiMa 논문은 그렇게 하지 않으며, 저희도 그렇게 하고 싶지 않습니다. 우리가 살펴보고자 하는 것은 단순한 키워드 매칭이 아니라 의미론에 대한 모델의 이해입니다. 그래서 '싱글 홉'('싱글 홉'은 답변과 질문이 약간의 추론을 통해 연결되어야 한다는 의미)의 변형을 설계하고 일부러 텍스트에 나오지 않는 단어를 사용하거나 반전된 문장을 사용하기도 했습니다.
- 질문: "드레스덴에 가본 캐릭터는 누구인가요?"
- 주요 정보(기본값): "사실 유키는 셈퍼 오페라 하우스 옆에 살고 있습니다."
- 핵심 메시지(반전): "셈퍼 오페라 하우스는 유키가 사는 곳 옆에 있습니다."
백서의 방법론에 따라 여러 범주의 '질문-키 메시지' 그룹(각각 질문, '한 홉' 키 메시지, '한 홉' 키 메시지의 역방향 버전이 포함된 그룹)을 생성했습니다. "역방향 키 메시지").
예시는 아래와 같습니다:
양식 | 이슈 | 원본 키 정보(참고용) | 단일 점프 키 메시지 | 주요 정보를 거꾸로 선택 |
---|---|---|---|---|
식이 제한 | 어떤 캐릭터가 생선 음식을 먹을 수 없나요? | 앨리스는 생선을 먹을 수 없습니다. | 그런 다음 앨리스는 자신이 수년 동안 채식주의자라고 언급합니다. | 앨리스에게 채식은 수년 동안 중요한 식단이었어요. |
건강 상태 | 어떤 캐릭터가 우유를 마실 수 없나요? | 밥은 우유를 마실 수 없습니다. | 밥은 자신이 유당 불내증이라고 설명합니다. | 유당 불내증은 밥에게 매일 영향을 미칩니다. |
언어 능력 | 어떤 캐릭터가 프랑스어를 사용하나요? | Charlie는 프랑스어를 할 줄 압니다. | 사실 찰리는 소르본 대학에서 공부했습니다. | 찰리는 소르본느에서 학위를 마쳤습니다. |
직업적 배경 | 어떤 캐릭터가 뮤지션인가요? | 다이앤은 음악가입니다. | 다이앤은 2013년 시드니 오페라 하우스에서 지휘를 맡았습니다. | 시드니 오페라 하우스 공연은 다이앤이 지휘했습니다. |
위의 이름은 예시일 뿐입니다. 실제 '핀'의 이름은 다양한 문화권의 이름 목록에서 무작위로 선택됩니다.
또한 표의 '원본 키 정보'(즉, 문자 그대로 일치하는 버전)는 사용자의 편의를 위한 것이며 실험에는 사용되지 않습니다.
맥락화
우리는 각각 최소 5만 개의 토큰이 있는 10권의 공개 서적을 준비하고 각 책에서 짧은 조각을 무작위로 선택한 다음(각 조각은 250개 이하), 이 조각들을 서로 연결하여 각각 128, 256, 512, 1024, 2048, 4096 및 8192 토큰의 길이가 다른 '컨텍스트'를 형성했습니다. 그런 다음 이 조각들을 서로 연결하여 각각 128, 256, 512, 1024, 2048, 4096, 8192 단어의 서로 다른 길이의 '컨텍스트'를 형성합니다. 그런 다음 각 컨텍스트에 핵심 메시지를 넣습니다:

책의 짧은 클립과 핵심 메시지로 컨텍스트 구축하기
좀 더 구체적으로 설명하자면, "사실 유키는 셈퍼 오페라 하우스 옆에 산다"라는 키 메시지를 128개의 레마로 구성된 문맥에서 50번째 레마에 넣는다고 가정해 보겠습니다:

건초더미에서 바늘 찾기 예시
당사는 다음을 사용합니다. jina-embeddings-v3
이 모델을 사용하여 텍스트를 벡터화한 다음 '핵심 정보' 텍스트와 '컨텍스트' 텍스트의 유사성 점수를 계산합니다:
Question-Haystack similarity = 0.2391
이 유사도 점수를 이해하기 위해서는 한 단계 더 '정규화'를 수행해야 합니다. 이 작업은 먼저 질문과 기본 키 메시지 간의 유사도 점수를 계산하여 수행합니다(즉, 문맥 없음, 직접 비교). 그런 다음, 이전의 '키 메시지-문맥' 유사도 점수를 '질문-키 메시지' 유사도 점수로 나눕니다:
Question-Needle similarity = 0.3598
Normalized Query - Haystack similarity = 0.2391 / 0.3598 = 0.6644
왜 정규화하나요? 계산된 유사도 점수는 벡터 모델마다 다를 수 있기 때문입니다. 그리고.jina-embeddings-v3
모델은 일반적으로 두 텍스트 간의 유사성을 과소평가합니다.
각 키 메시지(기본 버전과 플립플롭 버전 모두)에 대해 길이가 다른 10개의 컨텍스트를 생성했으며, 각 컨텍스트에서 키 메시지가 다른 위치에 표시됩니다. 동일한 키 메시지와 동일한 컨텍스트 길이의 경우 이 10개의 컨텍스트는 다음과 같이 보입니다:

10가지 컨텍스트에 주요 정보를 일정한 간격으로 배치하세요.
또한 비교를 위해 주요 정보가 포함되지 않은 각 테스트 조건(컨텍스트 길이가 다른)에 대한 컨텍스트도 생성했습니다. 이렇게 해서 총 3234개의 컨텍스트가 생성되었습니다.
마지막으로jina-embeddings-v3
모델(기본 텍스트 일치 LoRA 사용)이 각 문맥을 인코딩합니다. 문맥의 어휘 요소 수가 총 8192개(jina-embeddings-v3 모델의 상한선)를 초과하는 경우 초과분을 잘라내고 해당 질문당 어휘 요소도 인코딩합니다.
지표 평가
다양한 컨텍스트 길이에서 벡터 모델의 성능을 측정하기 위해 여러 가지 메트릭이 포함된 평가 프레임워크를 설계했습니다:
주요 지표
1. 정규화된 유사도 점수
이것이 핵심 지표입니다. 단순히 질문과 전체 문맥 간의 의미적 유사성만 살펴보는 것이 아니라 질문과 핵심 정보를 따로 분리하여 비교합니다. 이를 통해 이상적인 경우(질문과 핵심 정보를 직접 비교하는 경우)와 비교하여 핵심 정보가 포함된 컨텍스트에서 모델이 어느 정도 성능을 발휘하는지 파악할 수 있습니다.
구체적인 계산 방법은 먼저 질문과 해당 핵심 정보 간의 코사인 유사성 점수를 벤치마크로 계산한 다음, '질문-문맥 유사성'을 이 벤치마크로 나누어 정규화된 유사성 점수를 구하는 것입니다.

무작위로 추측하는 것보다 얼마나 더 나은가요?
벡터 모델의 경우, 동일한 질문의 유사도를 다른 텍스트와 비교하는 것만 의미가 있습니다. 따라서 정규화된 유사도 점수 외에도 질문이 같은 길이이지만 핵심 정보가 없는 임의의 텍스트보다 전체 문맥과 실제로 더 유사한지 확인해야 합니다. 즉, 모델이 찾은 답이 무작위로 추측하는 것보다 실제로 더 정확한지 확인해야 합니다.
보조 지표
1. 차별화된 역량 분석
이 지표는 모델이 주요 정보를 다른 관련 없는 콘텐츠와 구별하는 능력을 살펴봅니다. 두 가지 구체적인 측면이 있습니다:
- 평균 이격 거리정답이 포함된 구절('정답 예시')과 그렇지 않은 구절('부정 예시')의 차이는 얼마나 큰가요?
- AUC(곡선 아래 영역) 점수주요 정보와 기타 콘텐츠를 구분하는 모델의 능력은 ROC 곡선(주제 운영 특성 곡선) 아래 영역을 계산하여 측정합니다.
2. 위치 효과
또한 문맥에서 핵심 정보의 위치가 모델이 해당 정보를 얼마나 쉽게 찾을 수 있는지에 영향을 미치는지도 조사합니다. 분석해 보겠습니다:
- 주요 정보의 위치와 유사도 점수 사이에 어떤 관계(상관 계수)가 있나요?
- 주요 정보를 다른 위치에 배치할 때 모델의 성능(회귀 기울기)은 어떻게 달라지는지 알아보세요.
- 위치별로 주요 메시지를 그룹화하여 그룹별로 어떻게 다르게 작동하는지 확인하세요.
연구 결과
텍스트가 길어질수록 유사도 점수와 정확도가 감소합니다.
실험 결과는 분명합니다. 텍스트 컨텍스트가 길수록 모델의 성능이 저하된다는 것입니다.평균 유사도 점수는 128단어에서 0.37에서 8천 단어에서 0.10까지 떨어지며, 이러한 하락은 직선이 아니라 128단어에서 1천 단어 사이에서 특히 빠릅니다.

정규화 성능과 컨텍스트 길이 비교
또한 다음과 같은 사실도 발견했습니다.핵심 정보의 진술을 뒤집는(반전시키는) 것은 모델이 정보를 찾는 데 거의 영향을 미치지 않습니다. "사실 유키는 셈퍼 오페라 하우스 근처에 살고 있습니다."(기본 진술)이든 "셈퍼 오페라 하우스는 유키가 사는 곳 바로 옆에 있습니다."(반전 진술)이든 모델이 유키를 찾을 확률은 거의 동일합니다:

두 계정에서의 모델 성능 비교(기본 주문과 역주문)
하지만.주요 정보의 콘텐츠 유형은 모델 검색의 난이도에 영향을 미칩니다. 위치나 랜드마크에 대한 정보라면 모델을 찾기 쉽지만, 식단이나 건강 상태에 대한 정보라면 모델을 찾기가 더 어렵고 텍스트가 길어질수록 난이도는 더 빠르게 증가합니다:

다양한 유형의 정보(그룹화)를 찾는 난이도(정규화된 성능)와 텍스트 길이 간의 관계
이 모델이 추측보다 정말 더 나은지 알아보기 위해 모델의 결과를 '무작위 추측'과 비교했습니다. '무작위 추측'은 질문만큼 길지만 핵심 정보를 포함하지 않는 텍스트 조각입니다. 그 결과 다음과 같은 사실을 발견했습니다.문맥이 길수록 모델의 결과는 맹목적인 추측에 가까워지며, 쓸모없는 텍스트 조각을 골라내는 것도 거의 마찬가지입니다.

모델 성능과 무작위 확률 비교(확률 0.5)
또한 주요 정보의 내용 유형에 따라 데이터를 그룹화한 다음 모델의 성능을 살펴봤습니다. 결과는 비슷했습니다. 일부 정보 유형(예: 식이 제한)의 경우 텍스트가 너무 길지 않더라도 모델이 추측하는 것보다 크게 나을 것이 없었고, 다른 정보 유형(예: 위치 및 랜드마크)의 경우 텍스트가 아무리 길어도 모델이 잘 수행했습니다:

다양한 유형의 정보 그룹에 대해 무작위로 추측하는 것과 비교하여 모델이 답을 찾을 확률
핵심 정보의 문장을 뒤집어도 모델이 핵심 정보를 찾을 확률에는 본질적으로 아무런 영향을 미치지 않습니다. 아래 그림은 모델이 핵심 정보를 정확하게 포함하는 텍스트를 찾을 확률이 무작위로 추측할 확률보다 얼마나 높은지 보여줍니다. 두 가지 핵심 정보(기본 및 반전)를 각각 따로 살펴 보겠습니다:

기본 순서와 역순, 무작위로 추측하는 것보다 모델이 답을 찾을 확률이 얼마나 더 높나요?
그림에서 볼 수 있듯이 모델 성능의 추세는 두 진술에서 비슷합니다. 따라서 여기서는 두 경우를 구분하지 않겠습니다.
모델이 여전히 유용한 정보와 쓸모없는 정보를 구분할 수 있나요?
가장 중요한 연구 결과 중 하나는 벡터 모델이 다양한 길이의 텍스트에서 유용한 정보와 쓸모없는 정보를 구분하는 능력에 관한 것이었습니다. "분리 분석"을 실시한 결과, 128~1000개의 단어 요소 사이에서 정답을 찾는 모델의 능력이 특히 빠르게 떨어지는 것을 발견했습니다. 그 이후에도 여전히 떨어지지만 속도가 느려집니다.

분리와 컨텍스트 길이의 관계
이 모델은 짧은 텍스트(128단어)에서 유용한 정보와 쓸모없는 정보를 명확하게 구분합니다.평균 정답률은 0.1, 평균 오답률은 0.81(즉, 100점 만점에 81번 정답이 포함된 구절이 1순위)이었습니다.
그러나 텍스트가 길어질수록 모델 성능이 크게 저하됩니다.내려가기1000단어에서는 분리가 0.04(60% 감소)로 떨어지고 AUC가 0.66으로 떨어져 모델이 더 이상 구별할 수 없음을 나타냅니다. 8000단어에서는 분리가 거의 0에 가깝고(0.001) AUC가 0.5에 가까워져(무작위 추측과 비슷) 모델이 더 이상 유사도 점수를 기반으로 유용한 정보를 구분할 수 없음을 의미합니다.
텍스트 길이가 길어질수록 유용한 정보를 구별하는 모델의 능력이 감소하는 속도가 놀랍습니다.원시 유사도 점수는 128개 단어에서 8000개로 약 751 TP3T 하락했지만, 분리 지표는 거의 991 TP3T 하락했고 효과 크기는 98.61 TP3T로 더 크게 떨어졌습니다!긴 텍스트를 처리할 때 벡터 모델의 어려움은 유사도 점수가 낮아진다는 점뿐만 아니라 유용한 정보와 쓸모없는 정보를 구분하는 능력이 이전에 예상했던 것보다 훨씬 더 심각하게 저하된다는 점에도 있습니다.
주요 정보의 위치가 찾기 어려움에 어떤 영향을 미치나요?
일반적으로 핵심 정보는 텍스트 상단에 배치하는 것이 가장 쉽게 찾을 수 있습니다. 하지만 중간에 배치한다고 해서 반드시 찾기 어렵다는 것은 아닙니다:

길이가 다른 텍스트에서 주요 정보를 다른 위치에 배치하여 정보를 찾을 때 미치는 영향
실험 결과에서도 핵심 정보는 처음에 배치할 때 가장 쉽게 찾을 수 있는 것으로 확인되었습니다. 또한 텍스트가 짧으면 끝 부분에 배치할 때 더 쉽게 찾을 수 있습니다. 그러나 텍스트의 길이에 관계없이 중간에 배치하면 찾기가 쉽지 않습니다:

주요 정보를 다른 위치에 배치하여 찾을 확률을 비교합니다.
쿼리 확장이 도움이 되나요?
최근에 '쿼리 확장'에 대한 블로그를 게시했습니다. 이는 검색에서 일반적으로 사용되는 방법으로, 간단히 말해 질문을 할 때 질문에 관련 단어를 추가하여 검색 결과를 더 정확하게 만드는 것입니다.
벡터 모델이 등장한 이후 검색 방식이 많이 바뀌었습니다. 어휘 추가에 크게 의존하는 '쿼리 확장'과 같은 방식이 AI 시대에도 여전히 유용할까요? 저희는 그렇게 생각합니다.
이 블로그에서는 대규모 모델(LLM)을 사용해 확장된 단어를 생성한 다음 이 단어를 쿼리 벡터에 추가한 결과 검색 결과가 훨씬 더 좋아지는 것을 확인했습니다. 이제 '건초 더미에서 바늘 찾기'와 같은 긴 텍스트 검색 작업에도 도움이 되는지 알아보고자 합니다. 예를 들어
哪个角色去过德累斯顿?
큰 모델(Gemini 2.0)로 확장하여 100개의 연관어를 추가하면 다음과 같이 보일 것입니다:
哪个角色去过德累斯顿? 角色:虚构角色 文学角色 主角 反派 人物 角色 身份 剧中人物
德累斯顿:德国德累斯顿;二战德累斯顿轰炸 历史小说 库尔特·冯内古特 《五号屠宰场》 萨克森州城市 易北河 文化地标
去过:访问过 去过 曾到过 出现于 出现于 特征为 设定在 发生于 地点 背景
쿼리 확장은 얼마나 유용할까요?
각각 100개, 150개, 250개의 단어가 추가된 세 가지 확장 쿼리 세트를 생성하는 실험을 실행했습니다(추가하는 방법에 대한 자세한 내용은 이 문서를 참조하세요). 그런 다음 매번 다른 확장 쿼리 세트를 사용하여 이전 실험을 세 번 더 실행했습니다.
아무리 많은 단어를 추가해도 텍스트가 길어지면 쿼리 확장을 사용하지 않을 때와 거의 동일하게 모델 성능이 가랑이를 끌어당기는 것으로 나타났습니다:

다양한 쿼리 확장 시나리오에 대한 모델 성능 집계
확장자가 없는 문제와 비교하면 단어가 추가되는 모든 경우는 똑같은 오래된 이야기입니다:텍스트가 길수록 성능이 저하됩니다. 또한 이러한 감소세는 여전히 고르지 않은데, 128단어에서 1,000단어 사이에서 가장 많이 감소했습니다:

다양한 쿼리 확장 시나리오에 대해 모델이 정답을 찾을 확률입니다.
하지만! '비교 비율' 메트릭을 자세히 살펴보면 쿼리 확장이 여전히 유용하다는 것을 알 수 있습니다:이를 통해 모델이 주요 정보가 포함된 텍스트를 더 쉽게 찾을 수 있습니다. 쿼리 확장 없이도 이 모델은 8K 어휘 요소 길이에서 무작위로 추측하는 것과 비슷한 수준의 성능을 발휘합니다.
쿼리 확장 결과를 어떻게 해석하나요?
이러한 결과는 노리마의 논문 및 쿼리 확장에 대한 이전 연구 결과와 일치합니다. 다음과 같이 해석할 수 있습니다:
- 단어를 적당히 추가하는 것이 가장 효과적입니다.100 단어를 추가하는 효과가 150 또는 250 단어를 추가하는 것보다 낫다는 것은 쿼리를 확장 할 때 단어를 어느 정도 추가하고 너무 많은 단어를 추가하면 신호 대신 의미 론적 노이즈를 가져와 모델의 판단을 방해한다는 것을 의미합니다. 250개의 단어를 추가할 때 질문과 관련성이 약한 일부 용어를 추가할 가능성이 매우 높으며, 이러한 단어는 긴 텍스트에서는 도움이 되지 않습니다.
- 긴 텍스트는 여전히 핵심 과제입니다.쿼리 확장에도 불구하고 문맥이 길어지면 모델 성능이 크게 떨어집니다. 현재의 주의 기반 모델 아키텍처는 긴 텍스트를 처리할 때 근본적인 병목 현상이 발생하는데, 이는 단순히 몇 단어를 추가하는 것으로는 해결할 수 없는 문제입니다.
- 문의 아웃리치는 여전히 가치가 있습니다.긴 텍스트의 문제를 완전히 극복하지는 못했지만, 비교 비율 지표는 지속적으로 0.5 이상을 기록하여 쿼리 확장이 여전히 효과적임을 시사합니다. 8,000단어의 긴 텍스트에서도 쿼리 확장 질문은 무작위로 추측하는 것보다 정답을 찾을 가능성이 더 높았습니다. 이는 쿼리 확장이 벡터 모델의 긴 텍스트 처리 능력을 개선할 수 있는 잠재적인 방향이며, 더 연구해 볼 가치가 있다는 것을 시사합니다.
리터럴 매칭이 벡터 모델에 미치는 영향?
이전 실험에서는 긴 텍스트에서 '원홉 추론'을 수행하는 벡터 모델의 능력을 측정하기 위해 의도적으로 질문과 핵심 정보 사이의 문자 그대로의 반복을 피했습니다. 그 결과 쿼리 확장에도 불구하고 긴 텍스트에서 관련 정보를 찾는 모델의 능력이 저하되는 것으로 나타났습니다. 이 현상은 흥미롭습니다. 벡터 모델은 추가적인 도움 없이도 이러한 종류의 추론을 스스로 수행할 수 있어야 합니다. 결국 "드레스덴"을 "셈퍼 오페라 하우스"로 대체했는데, 이는 본질적으로 한 단어를 비슷한 단어로 대체하는 것과 같습니다.
그렇다면 시맨틱 매칭에서 문자 일치는 얼마나 중요할까요? 아니면 텍스트 길이가 더 큰 영향을 미칠까요? 이를 알아보기 위해 예를 들어 핵심 메시지와 질문 사이에 문자 그대로 반복되도록 실험을 재설계했습니다:
- 질문: "드레스덴에 가본 캐릭터는 누구인가요?"
- 키 메시지(기본값): "사실, 유키는 드레스덴에 살고 있습니다."
- 핵심 메시지(반전): "드레스덴은 유키가 사는 곳입니다."
여기서는 이전처럼 독자가 "드레스덴에 젬퍼 오페라하우스가 있으므로 이 동네에 사는 사람들은 드레스덴에 가본 적이 있다"고 추론하도록 하지 않고 "유키는 드레스덴에 산다"는 정보를 직접 제공합니다.
22개의 질문 그룹과 주요 정보를 모두 이 간단한 형식으로 변경한 다음 동일한 벡터 모델을 사용했습니다. jina-embeddings-v3
실험을 다시 실행하고 다양한 텍스트 길이와 주요 정보 위치를 시도했습니다.

정규화 성능과 컨텍스트 길이 비교

모델 성능 대 무작위 추측(0.5)

다양한 위치에서의 비율 비교
예상치 못한 결과가 나왔습니다. 질문과 답에 같은 단어가 있더라도 텍스트가 길어지면 모델의 정답과 무작위 추측을 구별하는 능력이 급격히 떨어집니다. 물론 동일한 단어가 전혀 없는 경우보다는 약간 나은 편입니다.
이는 궁극적으로 '건초더미 속 바늘 찾기' 작업에서 핵심 정보의 특정 문구(의미적 표현)보다 문맥의 길이와 그 안에 있는 핵심 정보의 위치가 벡터 모델의 성능에 더 큰 영향을 미친다는 것을 보여줍니다.
평결에 도달하기
전반적으로 벡터 모델을 사용한 실험의 결론은 텍스트가 길수록 모델이 정답을 찾기가 더 어렵다는 NoLiMA의 대규모 언어 모델 실험과 일치합니다. 또한 실험 결과 질문과 답변의 키워드가 정확히 동일하더라도 모델이 항상 정답을 찾지 못할 수도 있음을 보여줍니다.
실험 결과는 LLM에 관한 NoLiMA 논문의 연구 결과와 매우 일치합니다:벡터 모델의 경우 컨텍스트 길이는 검색 성능의 핵심 요소입니다.텍스트가 길수록 모델이 정답을 찾기가 더 어려워집니다. 질문과 답변의 키워드가 정확히 동일하더라도 모델이 항상 정답을 찾지 못할 수도 있습니다.
- 길이에 따라 성능이 급격히 저하됨짧은 텍스트(128단어)에서는 잘 작동하지만, 긴 텍스트에서는 성능이 급격히 떨어집니다. 정규화된 유사도 점수는 128단어에서 0.37에서 8K단어에서 0.10으로 떨어지고, 더 중요한 것은 관련성 있는 정보와 관련성 없는 정보를 구별하는 모델의 능력("분리"라고 함)이 거의 완전히 사라진다는 점입니다.
- '단일 점프 추론'은 어렵습니다.짧은 텍스트의 경우에도 질문과 답변이 직접적으로 문자 그대로 겹치지 않으면 모델의 성능이 크게 저하됩니다. 이는 벡터 모델이 "원홉 추론"(예: "드레스덴에 가봤다"에서 "셈퍼 오페라하우스 옆에 산다"를 추론)에 어려움을 겪고 있음을 시사합니다.
- 쿼리 확장은 도움이 되지만 전부는 아닙니다.쿼리 확장은 특히 긴 텍스트의 경우 검색 성능을 어느 정도 개선하여 모델이 무작위 추측보다 더 나은 성능을 발휘하도록 만들 수 있습니다. 하지만 긴 텍스트로 인한 문제를 완전히 해결하지는 못하며, 텍스트가 길어질수록 성능은 여전히 떨어집니다. 또한 단어를 추가할 때 주의해야 하는데, 관련 없는 단어는 오히려 의미적 노이즈를 유발하여 성능을 저하시킬 수 있습니다.
- 문자 그대로 일치하는 것이 핵심이 아닙니다.질문과 답변에 동일한 키워드가 있어도 텍스트가 길면 모델은 여전히 답을 찾을 수 없습니다. 이는 답변이 어떻게 말하는지, 텍스트가 얼마나 긴지보다 텍스트에서 답변의 위치가 모델이 답을 찾을 수 있는지 여부에 더 큰 영향을 미친다는 것을 보여줍니다.
전반적으로 연구 결과에 따르면 다음과 같은 것들이 있습니다. jina-embeddings-v3
이러한 벡터 모델은 짧은 텍스트를 처리하는 데는 능숙하지만 의미에 대한 깊은 이해가 필요한 긴 텍스트를 처리하는 데는 아직 미흡합니다. 따라서 긴 텍스트 검색을 위한 보다 효과적인 기술을 계속 연구하고 있으며, 향후에는 긴 텍스트를 검색할 수 있는 jina-embeddings-v4
돌파구가 있습니다.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...