대부분의 기존 방식은 검색 말뭉치에서 짧게 연속된 청크만 검색하므로 전체 문서 컨텍스트에 대한 전체적인 이해가 제한된다. 예를 들어 상위 k개의 검색된 짧은 연속 텍스트는 질문에 답하기에 충분한 컨텍스담지 못한다. 인접한 청크만 사용한 경우, 거리가 먼 의존성이 있는 청크는 후보군에 포함되지 못할 수 있다.
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- 요약논문은 chain of density를 참고
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
모델들은 장거리 컨텍스트를 활용하지 못하며, 특히 관련 정보가 긴 컨텍스트 내에 포함되어 있을 때 컨텍스트 길이가 증가함에 따라 성능이 감소하는 경향이 있다. 또한, 긴 컨텍스트의 사용은 비용이 많이 들고 느리다는 문제가 있다.
텍스트 청크를 재귀적으로 임베딩, 클러스터링, 요약하는 새로운 접근 방식을 도입하여 아래에서 위로 다양한 수준의 요약 트리를 구축한다. 추론 시 RAPTOR 모델은 이 트리에서 정보를 검색하여 다양한 추상화 수준에서 긴 문서에 걸쳐 정보를 통합하는데 목적이 있다.
→ 이 부분이 '대화'(=담론) 에도 동일하다고 판단하여, 답변에 재귀적임베딩, 클러스터링 구성으로 1:1채팅 백엔드 설계를 했으나 실제 도입이나 테스트를 진행해보진 못했다.
해당 논문에서는 복잡한 다단계 추론이 필요한 질문-답변 작업에 성능개선이 있었다고 한다. (RAPTOR 검색과 GPT-4 사용을 결합하면 절대 정확도에서 QuALITY 벤치마크의 최고 성능을 20% 향상)
각각의 텍스트 청크들을 재귀적으로 클러스터링하고 → 그 클러스터들의 텍스트 요약을 생성 → 바닥부터 트리를 구성 한다. 그 상위 루트에 요약을 두는 방식이다.
위와 같이 구성하면, 다른 레벨의 텍스트를 대표하는 청크들을 LLM의 컨텍스트로 로드할 수 있게 해주어, 다양한 레벨에서의 질문에 효과적이고 효율적으로 답할 수 있도록 한다.
RAPTOR는 벡터 임베딩을 기반으로 텍스트 청크들을 재귀적으로 클러스터링하고, 그 클러스터들의 텍스트 요약을 생성하여, 바닥부터 트리를 구성합니다. 함께 클러스터링된 노드들은 형제 관계이며, 부모 노드는 해당 클러스터의 텍스트 요약을 포함하게 된다.
문서의 요약=압축 컨텍스트 요약기술은, 때로는 손실이 발생할수 있다.
즉, LlamaIndex(Liu, 2022)는 인접한 텍스트 청크를 요약하는 비슷한 방법을 사용하지만 중간 노드도 유지함으로써 다양한 수준의 세부 정보를 저장하고 세부적인 내용을 유지하는데 메인 아이디어가 있다.
Dense Hierarchical Retrieval(DHR)과 Hybrid Hierarchical Retrieval(HHR)은 각각 문서와 문장 수준의 검색을 결합하고 희소 및 밀집 검색 방법을 통합하여 검색정확도를 높이는 방법론들이 있다.
방법론
검색시, 의미 깊이와 연결문제를 재귀적 트리 구조를 갖게 한다. 각 노드를 텍스트 내의 순서뿐만 아니라 의미적 유사성에 따라 그룹화 할수있다.
색인방법
- 100청크 길이로 분할 → 분할시 문장을 그대로 유지한다. → 청크 그룹핑을 위해 클러스터링한다. → 그룹화된 텍스트를 요약 → 요약문은 다시 임베딩한다.
- 100토큰으로 자를대 문장이 짤리지 않게한다.
- 비슷한 토큰끼리 클러스터링 한다.
- 각각의 클러스터링에 대한 요약문을 만든다.
위 방법론은 FlexoV2에서도 사용하는 방법론 이며, 구축시간 이슈로 클러스터링과 클러스터링 텍스트요약 단계는 진행하지 않았다.
검색 코퍼스를 100의 길이를 가진 짧고 연속적인 텍스트로 분할하여 시작한다. 기준이 되는 100청크보다 길이가 크면 문장을 중간에서 자르는게 아니라 정체 문장을 다음 청크로 옮긴다. 비슷한 텍스트 청크를 그룹화 하기 위해서는 클러스터링 알고리즘을 이용한다.
클러스터링
- 가우시안 분포의 혼합 가중치 : Gaussian Mixture Models (GMMs)
- UMAP 차원축소가 목적
- 지역 및 전역 클러스터링
- 세부적인 클러스터링
- 추상화된 클러스터링
- 텍스트 세그먼트에 다양한 주제와 관련된 디테일한 정보가 포함되어 여러 요약에 포함된다.
요약
- 논문에 따르면 3.5터보를 사용했고, 72%의 압축률이면 질문-답변에 영향을 덜 주었다고 볼 수 있음.
- 논문에서 사용한 프롬프트
- FlexoV2 에서는 gpt4터보를 사용했고, 요약 프롬프트 아래 참고 1분기_스프린트1
검색방법
- 트리 순회:계층별로 순회하며, 각 레벨에서 가장 관련성이 높은 노드를 선택
- 쿼리 임베딩과 코사인 유사도에 기반하여 상위k가장 관련성 높은 루트노드 선택 → 리프노드까지 쿼리 임베딩 유사도 기반의 탐색하는 과정을 반복한다. 자식노드까지 검색된 컨텍스트를 형성하기 위한 과정을 거친다.
- 가장 높은 코사인유사도 점수를 기반으로 상위k노드를 선택한다.
- 상위k노드를 컨텍스트에 보낼때 가장 좋은 성능을 내는건 top9 2000토큰이다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 먼 상호 의존서을 가진 top에 담을수 있어야 한다.
- 집약적인 질문에 대한 답을 해야 할때 top9개
- 트리의 상위 레이어를 고려해, 넓은 관점에서 시작하고, 자식레이어까지 탐색하여 후보군에 전달하므로써 보다 세부적인 사항에 초점을 맞추게 된다.
- 동일한 d,k값으로 트리순회를 사용할때 트리의 각 레벨에서 노드의 비율은 일정해야 한다. 그래야 고차원주제와 세부 사항의 비율이 질문에 관계없이 동일하게 유지된다.
- The collapsed tree: 전체 계층에 걸쳐 노드를 집합적으로 평가하여 가장 관련성 높은 것 선택
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
- 단일 레이어로 평탄화?
- 다중트리를 단일 레이어로 평탄화 하여, 모든 노드를 비교를 위해 동일한 레벨로 갖고온다.
논문 실험 및 결과
- 결과: 데이터셋은 신데렐라 동화를 사용한 테마적, 멀티홉 질문으로 구성했으며, SBERT와 결합된 RAPTOR가 최고의 성능
- RAPTOR는 중간 계층과 클러스터링 접근 방식의 이점을 받아, 일반적인 주제부터 구체적인 세부 사항에 이르기까지 다양한 정보를 포착할 수 있어 성능결과가 우수하다.
- 원본 텍스트와 상위 레벨 요약을 검색에 제공함으로써 RAPTOR는 더 높은 차원의 주제적 질문부터 세부 지향적 질문에 이르기까지 더 넓은 범위의 질문을 효과적으로 처리할 수있다.
- 토큰의 크기는 2000토큰일때 답변성능이 좋다.
부록
응용아이디어
- 1차색인 origin_index
- 디폴트 청크 1000 → 짤리는 경우 짤리지않도록 보정 → 페이지넘버 + 요약 + 핵심키워드 + 예상질문 + 원문 저장
- 2차색인 clustering_index
- 1차 색인기반으로 요약문들의 클러스터링
- 3차색인 subject_index
- 2차색인에 요약문 클러스터링을 활용하여, 문서 전체의 맥락을 담는 전체의 의미를 담는 요약문으로 구성
- 답변 corrective을 체크할때 사용
- 검색
- origin_index에서 처리한 요약 + 예상질문에서 검색
- clustering_index 리랭킹
- 후보군 + 답변
- 리랭킹에서 나온 origin_index에 원문에 후보군 k개 컨텍스트로 사용
- 1차 답변을 subject_index로 corrective한지 판단한다. 선답변 후체크하는 것으로 활용해봐도 어떤가
'ML&AI' 카테고리의 다른 글
AI 사용 환경에서 데이터를 보호하는 법을 주제로, Copilot for Microsoft 365를 위한 Microsoft Purview제품 소개 (0) | 2024.03.27 |
---|---|
The Claude 3 Model Family: Opus, Sonnet, Haiku (0) | 2024.03.25 |
효과적으로 문장을 분리하는 방법론 (0) | 2024.03.23 |
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Horizon Generation (0) | 2024.03.23 |
Query Answering 방법론 (0) | 2024.03.23 |