문제
export.langchain/export.llamaindex의 dedupe_by_chunk_id()는 chunk_id(=eu_id)가 같은 항목끼리만 그룹핑해서 재랭킹한다.
그런데 512토큰 초과로 행 분할된 표는 split.py에서 각 조각이 f"{eu_id}-s{n}" 형태로 서로 다른 eu_id(=chunk_id)를 받는다.
그 결과 같은 원본 표에서 나온 분할 조각들은 서로 다른 그룹으로 취급되어, max-pool dedup이 이 조각들 사이의 중복을 걸러내지 못한다.
영향
EU + max-pool 재랭킹 적용 시 R@5는 baseline보다 여전히 높지만(+1.3pp), R@10은 baseline이 근소하게 앞선다(0.885 vs 0.904, -1.9pp).
분할된 표가 많을수록(=토큰 한도를 자주 넘는 문서일수록) 이 격차가 더 벌어질 수 있다. 자세한 수치는 Wiki의 Benchmark 페이지 참고.
우선순위는 낮다. R@5까지는 여전히 baseline을 앞서고, R@10만 근소하게 밀리는 정도라 핵심 지표(EM)나 서비스 품질에 미치는 영향은 제한적이다.
재현 조건
- 표가 512토큰을 초과해 여러 조각으로 행 분할됨
- 그 조각들이 top-10 검색 결과 안에 여러 개 동시에 걸림
제안 수정
분할 조각에 원본 표 식별자(예: original_eu_id)를 추가하고,
dedupe_by_chunk_id()의 그룹핑 키를 chunk_id 대신 이쪽으로
확장한다.
문제
export.langchain/export.llamaindex의dedupe_by_chunk_id()는chunk_id(=eu_id)가 같은 항목끼리만 그룹핑해서 재랭킹한다.그런데 512토큰 초과로 행 분할된 표는
split.py에서 각 조각이f"{eu_id}-s{n}"형태로 서로 다른eu_id(=chunk_id)를 받는다.그 결과 같은 원본 표에서 나온 분할 조각들은 서로 다른 그룹으로 취급되어, max-pool dedup이 이 조각들 사이의 중복을 걸러내지 못한다.
영향
EU + max-pool 재랭킹 적용 시 R@5는 baseline보다 여전히 높지만(+1.3pp), R@10은 baseline이 근소하게 앞선다(0.885 vs 0.904, -1.9pp).
분할된 표가 많을수록(=토큰 한도를 자주 넘는 문서일수록) 이 격차가 더 벌어질 수 있다. 자세한 수치는 Wiki의 Benchmark 페이지 참고.
우선순위는 낮다. R@5까지는 여전히 baseline을 앞서고, R@10만 근소하게 밀리는 정도라 핵심 지표(EM)나 서비스 품질에 미치는 영향은 제한적이다.
재현 조건
제안 수정
분할 조각에 원본 표 식별자(예:
original_eu_id)를 추가하고,dedupe_by_chunk_id()의 그룹핑 키를chunk_id대신 이쪽으로확장한다.