<- Back to projects and build log

Semantic 청킹에 문장 분리기를 바꿔보자

지난 청킹 실험에서 쟁쟁한 후보들을 재치고 1등을 했던 라마인덱스의 시맨틱 청킹. 하지만, 한국어를 못 하는 문장 분리기를 기본으로 사용하고 있었다! 과연, 한국어 문장 분리기를 사용하면 RAG 답변 성능이 어떻게 달라질까?

rag / chunking / semantic-chunking / 문장-분리기
Semantic 청킹에 문장 분리기를 바꿔보자 글 대표 일러스트
Jeffrey Kim의 SecondBrain 빌드 로그 아티클 커버

Quick context

First, this page captures one concrete build-log step, research note, or project lesson from Jeffrey Kim.

Next, use the tags, related reading, and home archive to move from this note to deeper material in the same topic cluster.

Finally, follow the RSS feed if you want the next experiment, retrospective, or paper review as soon as it ships.

(24년 12월 추가) 글 내용과 관련해 강의를 런칭하였습니다. 더 많은 정보가 필요하신 분들은 참고해주세요!!

▪ 쿠폰코드: PRDTEA241202_auto ▪ 할인액: 4만원 (~25/1/5 까지 사용가능) ▪ 강의링크: https://bit.ly/3BayH1F


제가 직접 작성한 것이 아닌 AutoRAG를 같이 만든 [김병욱](https://www.linkedin.com/in/autorag-bwook/) 연구원이 쓴 글입니다.

지난 청킹 실험에서 쟁쟁한 후보들을 재치고 1등을 했던 라마인덱스의 시맨틱 청킹.

라마인덱스의 청킹은 어떻게 하길래 1등을 했을까?

0. 라마인덱스 시맨틱 청킹 원리 🔍

ff89fcc6 6536 4753 a37a e794d9730643 article image

라마인덱스의 시맨틱 청킹은 크게 3가지 단계를 거친다

  1. 문장 분리기로 파싱된 텍스트를 문장으로 나눈다.
  2. 임베딩 모델로 문장을 벡터 임베딩 한다.
  3. 문장 간의 벡터 유사도 점수를 계산해서 기준보다 높으면 하나의 단락으로 합친다.

원리를 보다 보니 이런 생각이 든다.

시맨틱 청킹에서는 문장 분리기와 임베딩 모델의 성능이 중요하겠는데? 🤔

그래서 다음 두 가지 실험을 해보기로 한다.

  1. 문장 분리기를 바꿔가며, RAG 답변 성능 비교해보기
  2. 임베딩 모델을 바꿔가며, RAG 답변 성능 비교해보기

이번 글에서는 첫 번째 실험인 문장 분리기만 바꿔가며 RAG 답변 성능을 비교해보고자 한다.

1. 라마인덱스 기본 문장 분리기 Punkt

라마인덱스 시맨틱 청킹에서 문장 분리기는 Optional parameter여서 따로 지정해주지 않을 경우 기본 문장 분리기를 사용한다.

그렇다면 가장 먼저, 저번 실험에서 사용한 라마인덱스 시맨틱 청킹의 기본 문장 분리기를 확인해보자.

2e9e2d81 597f 4273 a133 304500504bca article image

라마인덱스의 코드를 찾아보니, 기본 문장 분리기는 PunktSentenceTokenizer를 사용하고 있었다.

(길어서 Punkt라고만 앞으로 부르도록 하겠다 😂)

Punkt는 한국어를 할 수 있나❓

문득 궁금증이 생겨서 찾아보았다.

83fb47fb ace9 400d a3f0 8fd0ba2b1f22 article image

languages=“Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Italian, Malayalam, Norwegian, Polish, Portuguese, Russian, Slovene, Spanish, Swedish, Turkish”

한국어는 없었다

한국어를 못 하는 문장분리기를 사용했는데, 지난 실험에서 1등을 하다니..

그러다 갑자기 머리속에 이런 생각이 들었다.

한국어 문장 분리기를 사용하면 더 높은 점수를 받지 않을까 ?? 😁

신이 난 상태로 한국어 문장 분리기를 찾아보았다.

2. 한국어 문장 분리기 KSS (Korean Sentence Splitter)

가장 먼저 찾았던 한국어 문장 분리기는 KSS였다.

설레는 마음으로 빠르게 AutoRAG를 사용해서 RAG 답변 성능을 비교해보았다.

RAG 성능 평가에 사용되는 데이터와 질문은 모두 지난 실험과 동일하게 진행하였다!

2-1. RAG 답변 성능 비교

G-Eval Consistency:

669bf5c9 681e 4db7 98eb 3c5fe478e74c article image

???!?

ed983614 78f7 4769 8b19 c58da5c19c7f article image

내 예상과는 정 반대의 결과가 나와버렸다.. 🫨

실험 코드도 몇 번이고 다시 확인해봤지만 이상한 건 하나도 없었다.

바뀐 건 문장 분리기 밖에 없으므로, 문장 분리기의 성능을 정성 평가해보기로 한다.

2-2. 문장 분리기 성능 정성평가

실험에 사용한 데이터는 공개할 수 없어, 빠르게 보험 약관 데이터로 문장 분리기의 성능을 비교해보았다!

2-2-1. KSS 문장 분리 결과

aeaa89f5 3553 45ab 91d0 bd2537fb6f19 article image

해당 보험 약관 데이터에서는 전혀 문장 분리를 해내지 못 하는 모습이다 ..

2-2-2. Punkt 문장 분리 결과

54f6bb37 a298 4b8b b168 93ac630a2dc7 article image

가.나. 이런 것들은 확실히 구분하지 못하지만, 생각보다는 문장 분리를 잘 해내는 모습이다.

한국어가 지원 가능한 언어에 없길래 엉망 진창으로 결과가 나왔을 줄 알았는데, 나쁘지 않았다.

KSS의 문장 분리 성능이 너무 아쉬웠다. 그래서 더 정확한 비교를 위해 문장 분리 성능이 높은 한국어 문장 분리기를 찾아보기로 한다.

3. 한국어 문장 분리기 Kiwi

성능 높은 한국어 문장 분리기를 찾던 중, 어떤 분께서 진행하셨던 실험 결과를 찾을 수 있었다! 🙏🙏

해당 실험 결과에 따르면, KSS는 문장 분리에 있어 살짝 아쉬운 결과를 보였고 Kiwi가 가장 좋은 성능을 보였다고 한다.

그래서 다시 기대감에 부푼 채 Kiwi의 문장 분리 성능을 정성평가해보기로 한다.

3-1. Kiwi 문장 분리 성능 정성평가

97d65272 ef9a 4228 8c30 3afb2621c2ad article image 가장 좋은 성능을 보여주었다. 특히나 가. 나. 이런 것들까지 인식해 문장을 분리하는 모습이 인상적이었다.

만족스러운 성능을 보여준 Kiwi다.

3-2. RAG 답변 성능 평가

3-2-1. G-Eval Consistency

비슷한 결과가 나왔다❗

우리는 지난 LLM은 얼마나 일관적으로 평가할까? 실험에서 G-Eval Consistency 점수가 최대 0.15점까지는 튄다는 것을 확인했었다.

따라서 조금 더 정확하게 답변 성능을 비교해보기 위해, 실험에 사용한 40개의 질문 중 17개의 질문을 골라 정성평가를 진행하였다.

이 역시 지난 청킹 실험과 동일한 질문을 이용하여 정성평가 하였다!

3-2-2. 정성 평가

채점 기준

PunktKiwi
11314
0.532
000
-111
평균 (17개)0.79410.8235

정성평가 결과는 Kiwi가 높은 점수를 받았다.

Punkt보다 1문제 더 1점을 받았는데, 거의 비슷한 결과를 보였다

4. 결론

❗ 문장 분리 성능

  1. Kiwi
  2. Punkt
  3. KSS

❗RAG 답변 성능 평가 결과

  1. Kiwi = Punkt (거의 비슷함)
  2. KSS

📌결론

  1. 문장분리기 성능이 일정 수준 이상이면, RAG 답변 성능에는 크게 영향을 주지 않는다.
  2. 문장분리기 성능이 떨어지면, RAG 답변 성능 역시 크게 떨어진다.

📌주의점

마지막으로 도움이 되었다면 AutoRAG 스타 한 번씩 부탁드립니다 ^~^

Related reading

같이 읽으면 좋은 프로젝트 로그와 연구 노트를 이어서 탐색해보세요.

  • RAG 대표적인 청킹 방법 5가지 ! Token, Character, Sentence, Semantic, Window 청킹 알아보기
  • 청킹은 한국어 RAG 답변 성능을 얼마나 올려줄까? 1. 실험 배경 혹자는 말한다. 청킹은 RAG의 3대 요소라고. 또, AutoRAG에서 청킹 최적화는 다루지 않냐는 질문을 많이 받았다. 그렇다면 청킹은 RAG 답변 성능에 얼마나 영향을 미칠까? 그래서 우리는 청킹이 RAG에서 얼마나 중요한 요소인지 알아보기 위해
  • Anthropic의 RAG 기법 AutoRAG로 바로 사용해보기 테디노트 님께서 링크드인에서 Anthropic의 좋은 블로그 글을 소개해 주셨습니다. 테디노트 님 글 바로가기 Anthropic 블로그 바로가기테디님께서 요약해주신 다섯 가지 주요 RAG 기법 (혹은 팁)은 다음과 같습니다.HybridSearch: Sementic +
  • 한국어 토크나이저 벤치마크 BM25 성능에 큰 영향을 미치는 토크나이저! 한국어 문서에 가장 좋은 토크나이저는 무엇일까? AutoRAG로 빠르지만 정확하게 벤치마크 가보자고~