목차
학습 목표
목차
청킹이란 무엇이며 왜 중요한가요?
청크를 고려해야 할 주요 요인
헝겊 파이프 라인을위한 청킹 전략
1. 고정 크기 덩어리
2. 문장 기반 청킹
3. 단락 기반 청킹
4. 시맨틱 기반 청킹
5. 양식 별 청킹
6. 슬라이딩 윈도우 덩어리
7. 계층 적 청킹
8. 콘텐츠 인식 청크
9. 테이블 인식 청크
10. 토큰 기반 청킹
11. 엔티티 기반 청킹
12. 주제 기반 청킹
13. 페이지 기반 청킹
14. 키워드 기반 청킹
15. 하이브리드 청킹
다른 시나리오에 대한 최적화
대규모 문서에 대한 청킹
청크 크기, 검색 속도 및 정확도 사이의 절충
다른 전략에 대한 사용 사례
작은 문서 또는 FAQ
긴 형식의 문서
혼합 컨텐츠 문서
다중 주제 문서
결론
주요 테이크 아웃
자주 묻는 질문
기술 주변기기 일체 포함 탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

Apr 08, 2025 am 09:13 AM

NLP ( Natural Language Processing )는 특히 복잡하고 정보 밀도 쿼리를 효과적으로 다루는 RAG (Resprieved-Augmented Generation) 파이프 라인의 출현으로 빠르게 발전했습니다. Rag Pipelines는 검색 기반 시스템의 정밀도를 생성 모델의 창의성과 결합함으로써 연구 논문에서 섹션을 추출하거나 긴 문서를 요약하거나 광범위한 지식 기반을 기반으로 사용자 쿼리를 해결함으로써 높은 관련성과 컨텍스트로 질문에 답할 수있는 능력을 향상시킵니다. 그러나 Rag 파이프 라인의 주요 과제는 전체 텍스트가 종종 GPT-4와 같은 모델의 토큰 한계를 초과하므로 효과적인 청크 기술이 필요하기 때문에 큰 문서를 관리하는 것입니다.

이를 위해서는 문서 청킹 기술이 필요합니다.이 기술은 텍스트를 작고 관리하기 쉬운 부분으로 분류하면서 상황과 관련성을 유지하면서 가장 의미있는 정보를 검색하여 응답 정확도를 향상시킬 수 있습니다. Rag 파이프 라인의 효과는 고정 크기, 의미 적 의미 또는 문장 경계를 통한 청크 전략에 의해 크게 영향을받을 수 있습니다. 이 블로그에서는 다양한 청크 기술을 탐색하고 각각에 대한 코드 스 니펫을 제공하며 이러한 방법이 강력하고 효율적인 헝겊 파이프 라인 구축에 어떻게 기여하는지 논의합니다. 청킹이 어떻게 걸레 파이프 라인을 향상시킬 수 있는지 알아낼 준비가 되셨습니까? 시작합시다!

학습 목표

  • NLP (Natural Language Processing) 및 검색 침전 생성 (RAG) 시스템에서의 청킹이 무엇인지, 그 중요성을 명확하게 이해하십시오.
  • 정의, 장점, 단점 및 구현을위한 이상적인 사용 사례를 포함하여 다양한 청크 전략에 익숙해 지십시오.
  • 실제 구현을 배우십시오 : 각 청킹 전략에 대한 코드 예제를 검토하고 실제 시나리오에서이를 구현하는 방법을 보여줌으로써 실제 지식을 습득하십시오.
  • 다양한 청킹 방법과 이러한 선택이 검색 속도, 정확성 및 전반적인 시스템 성능에 영향을 줄 수있는 방법 사이의 상충 관계를 평가할 수있는 기능을 개발하십시오.
  • 청크 전략을 RAG 파이프 라인에 효과적으로 통합하여 문서 검색 및 응답 생성의 품질을 향상시키는 기술을 갖추십시오.

이 기사는 Data Science Blogathon 의 일부로 출판되었습니다 .

목차

  • 청킹이란 무엇이며 왜 중요한가요?
  • 헝겊 파이프 라인을위한 청킹 전략
  • 다른 시나리오에 대한 최적화
  • 다른 전략에 대한 사용 사례
  • 결론
  • 자주 묻는 질문

청킹이란 무엇이며 왜 중요한가요?

RAG (Resprieval-Augmented Generation) 파이프 라인의 맥락에서, 청킹은보다 효과적인 검색 및 생성을 위해 대형 문서를 작고 관리 가능한 작품 또는 청크로 분해하는 과정을 말합니다. GPT-4와 같은 대부분의 대형 언어 모델 (LLM)은 한 번에 처리 할 수있는 토큰 수에 제한이 있기 때문에 청킹은 문서가 정확한 검색에 필요한 컨텍스트와 의미를 유지하면서 모델이 처리 할 수있는 섹션으로 분할되도록합니다.

적절한 청크가 없으면 Rag 파이프 라인은 중요한 정보를 놓치거나 불완전한 컨텍스트가 아닌 응답을 제공 할 수 있습니다. 목표는 의미를 유지하기에 충분히 크고 모델의 처리 한도에 맞을 정도로 작은 균형을 맞추는 덩어리를 만드는 것입니다. 잘 구조화 된 청크는 검색 시스템이 문서의 관련 부분을 정확하게 식별 할 수 있도록하는 데 도움이되며, 생성 모델이 정보에 입각 한 응답을 생성하는 데 사용할 수 있습니다.

청크를 고려해야 할 주요 요인

  • 청크의 크기 : 각 청크의 크기는 Rag 파이프 라인의 효율성에 중요합니다. 청크는 토큰 (예 : 덩어리 당 300 개의 토큰) 또는 문장 (예 : 청크 당 2-5 문장)을 기반으로 할 수 있습니다. GPT-4와 같은 모델의 경우 토큰 기반 청킹이 종종 토큰 한도가 명백하기 때문에 종종 잘 작동하지만 문장 기반 청크는 더 나은 컨텍스트를 제공 할 수 있습니다. 트레이드 오프는 계산 효율과 보존 의미 사이에 있습니다. 작은 청크는 처리하기가 더 빠르지 만 컨텍스트를 잃을 수 있지만, 큰 청크는 컨텍스트를 유지하지만 토큰 한도를 초과하는 위험을 초과합니다.
  • 컨텍스트 보존 : 문서의 의미 론적 무결성을 유지하려면 청킹이 필수적입니다. 청크가 중반 중반 또는 논리 섹션의 중간에 절단되는 경우 검색 및 생성 프로세스는 귀중한 상황을 잃을 수 있습니다. 시맨틱 기반 청크 또는 슬라이딩 창과 같은 기술은 각 청크에 전체 단락이나 완전한 사고와 같은 일관된 의미 단위가 포함되어 있는지 확인하여 청크 전반의 컨텍스트를 보존하는 데 도움이 될 수 있습니다.
  • 다양한 양식 처리 : RAG 파이프 라인은 종종 텍스트, 이미지 및 테이블을 포함 할 수있는 멀티 모달 문서를 처리합니다. 각 양식에는 다른 청크 전략이 필요합니다. 텍스트는 문장이나 토큰으로 나눌 수있는 반면, 테이블과 이미지는 별도의 덩어리로 취급되어 올바르게 검색되고 제시되도록해야합니다. 양식 별 청킹은 귀중한 정보를 포함하는 이미지 또는 테이블이 독립적으로 보존되고 검색되지만 텍스트와 정렬되도록합니다.

요컨대, 청킹은 단순히 텍스트를 조각으로 나누는 것이 아니라 의미와 컨텍스트를 유지하고 여러 양식을 처리하며 모델의 제약 조건에 맞는 올바른 청크를 설계하는 것입니다. 올바른 청킹 전략은 검색 정확도와 파이프 라인에 의해 생성 된 응답의 품질을 크게 향상시킬 수 있습니다.

헝겊 파이프 라인을위한 청킹 전략

효과적인 청킹은 상황을 보존하고 검색 정확도를 향상 시키며 RAG 파이프 라인 에서 검색 및 생성 단계 사이의 원활한 상호 작용을 보장하는 데 도움이됩니다. 아래에서는 다른 청크 전략을 다루고, 언제 사용 해야하는지 설명하고, 장점과 단점을 탐색 한 다음 코드 예제가 이어집니다.

1. 고정 크기 덩어리

고정 크기 청킹은 문서를 사전 정의 된 크기의 덩어리로, 일반적으로 워드 카운트, 토큰 수 또는 문자 수로 나눕니다.

사용시기 :
간단하고 간단한 접근 방식이 필요할 때 문서 구조가 중요하지 않습니다. 작고 덜 복잡한 문서를 처리 할 때 잘 작동합니다.

장점 :

  • 구현하기 쉽습니다.
  • 일관된 청크 크기.
  • 빠르게 계산합니다.

단점 :

  • 문맥을 잃어 문장이나 단락을 깨뜨릴 수 있습니다.
  • 의미 유지가 중요한 문서에는 이상적이지 않습니다.
 def 고정 _size_chunk (text, max_words = 100) :
    Words = text.split ()
    반환 [ ''.join (단어 [i : i max_words])는 범위 (0, len (단어), 
    max_words)]]

# 고정 크기 청킹 적용
fixed_chunks = 고정 _size_chunk (sample_text)
고정 _chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 : 이에 대한 출력 및 다음 코드는 아래와 같이 샘플 텍스트에 대해 표시됩니다. 최종 결과는 사용 사례 또는 문서에 따라 다릅니다.

 sample_text = "" "
소개

데이터 과학은 과학적 방법, 프로세스를 사용하는 학제 간 분야입니다.
 알고리즘 및 구조화 된 지식과 통찰력을 추출하는 시스템 
 구조화되지 않은 데이터. 통계, 컴퓨터 과학, 기계 학습, 
 그리고 패턴을 발견하고 예측을하고, 
 실행 가능한 통찰력을 도출하십시오.

데이터 과학은 의료, 금융,
 조직이 데이터 중심의 결정을 내리는 데 도움이되는 마케팅 및 교육,
  프로세스를 최적화하고 고객 행동을 이해합니다.

빅 데이터의 개요

빅 데이터는 계속 증가하는 크고 다양한 정보를 말합니다. 
요율. 그것은 정보의 양, 속도 또는 속도를 포함합니다. 
생성 및 수집되고 데이터 포인트의 다양성 또는 범위는 
덮힌.

데이터 과학 방법

데이터 과학에는 몇 가지 중요한 방법이 있습니다.

1. 회귀 분석
2. 분류
3. 클러스터링
4. 신경망

데이터 과학의 도전

- 데이터 품질 : 데이터 품질이 좋지 않으면 결론이 잘못 초래 될 수 있습니다.
- 데이터 프라이버시 : 민감한 정보의 개인 정보 보호 보장.
- 확장 성 : 대규모 데이터 세트를 효율적으로 처리합니다.

결론

데이터 과학은 계속해서 많은 산업에서 원동력이되어 통찰력을 제공합니다. 
이는 더 나은 결정과 최적화 된 결과로 이어질 수 있습니다. 그것은 진화하고 있습니다 
최신 기술 발전을 통합하는 분야.
"" "
로그인 후 복사

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

2. 문장 기반 청킹

이 방법은 자연 문장 경계를 기반으로 텍스트를 청크합니다. 각 청크에는 의미 단위를 보존하는 정해진 문장이 포함되어 있습니다.

사용시기 :
일관된 아이디어를 유지하는 것이 중요하며 중간 문장을 나누면 의미가 줄어 듭니다.

장점 :

  • 문장 수준의 의미를 보존합니다.
  • 더 나은 맥락 보존.

단점 :

  • 문장의 길이가 다르기 때문에 고르지 않은 청크 크기.
  • 문장이 너무 길면 모델의 토큰 제한을 초과 할 수 있습니다.
 수입 스파이
nlp = spacy.load ( "en_core_web_sm")

def sentence_chunk (텍스트) :
    doc = nlp (텍스트)
    반환

# 문장 기반 청킹 적용
sentence_chunks = sentence_chunk (sample_text)
sentence_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

3. 단락 기반 청킹

이 전략은 단락 경계를 기반으로 텍스트를 나누고 각 단락을 청크로 취급합니다.

사용시기 :
각 단락에 완전한 아이디어 나 논증이 포함 된 보고서 또는 에세이와 같은 구조화 된 문서에 가장 적합합니다.

장점 :

  • 자연 문서 분할.
  • 단락 내에서 더 큰 맥락을 보존합니다.

단점 :

  • 단락 길이는 다양하여 고르지 않은 청크 크기로 이어집니다.
  • 긴 단락은 여전히 ​​토큰 한도를 초과 할 수 있습니다.
 def paragraph_chunk (텍스트) :
    단락 = text.split ( '\ n \ n')
    단락을 반환합니다

# 단락 기반 청크 적용
paragraph_chunks = paragraph_chunk (sample_text)
단락에서 청크의 경우 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

4. 시맨틱 기반 청킹

이 방법은 기계 학습 모델 (예 : 변압기)을 사용하여 의미 론적 의미에 따라 텍스트를 청크로 분할합니다.

사용시기 :
복잡한 기술 문서와 같이 최고 수준의 맥락을 보존하는 것이 중요합니다.

장점 :

  • 맥락 적으로 의미있는 덩어리.
  • 문장들 사이의 의미 론적 관계를 포착합니다.

단점 :

  • 계산 비용이 많이 드는 고급 NLP 모델이 필요합니다.
  • 구현하기가 더 복잡합니다.
 def semantic_chunk (텍스트, max_len = 200) :
    doc = nlp (텍스트)
    청크 = []
    current_chunk = []
    Doc.Sents로 보낸 경우 :
        current_chunk.append (send.text)
        len ( ''.join (current_chunk))> max_len 인 경우 :
            chunks.append ( ''.join (current_chunk))
            current_chunk = []
    current_chunk 인 경우 :
        chunks.append ( ''.join (current_chunk))
    덩어리를 반환합니다

# 시맨틱 기반 청킹 적용
semantic_chunks = semantic_chunk (sample_text)
semantic_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

5. 양식 별 청킹

이 전략은 다양한 컨텐츠 유형 (텍스트, 이미지, 테이블)을 별도로 처리합니다. 각 양식은 특성에 따라 독립적으로 청크됩니다.

사용시기 :
PDFS와 같은 다양한 콘텐츠 유형 또는 혼합 미디어가 포함 된 기술 매뉴얼이 포함 된 문서의 경우.

장점 :

  • 혼합 미디어 문서에 맞게 조정되었습니다.
  • 다른 양식에 대한 사용자 정의 처리가 가능합니다.

단점 :

  • 구현 및 관리하기에 복잡합니다.
  • 각 양식마다 다른 취급 논리가 필요합니다.
 def modality_chunk (텍스트, 이미지 = 없음, 표 = 없음) :
    #이 기능은 사전 처리 된 텍스트, 이미지 및 테이블이 있다고 가정합니다.
    text_chunks = paragraph_chunk (텍스트)
    return { 'text_chunks': text_chunks, '이미지': 이미지, '테이블': 테이블}

# 양식 별 청킹 적용
modality_chunks = modality_chunk (sample_text, images = [ 'img1.png'], tables = [ 'table1'])))
print (modality_chunks)
로그인 후 복사

코드 출력 : 샘플 텍스트에는 텍스트 양식 만 포함되어 있으므로 아래와 같이 하나의 청크 만 얻을 수 있습니다.

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

6. 슬라이딩 윈도우 덩어리

슬라이딩 윈도우 청크는 겹치는 청크를 생성하여 각 청크가 다음 내용과 콘텐츠의 일부를 공유 할 수있게합니다.

사용시기 :
법적 문서 나 학업 문서와 같은 청크 간의 문맥 연속성을 보장 해야하는 경우.

장점 :

  • 덩어리를 가로 질러 컨텍스트를 보존합니다.
  • 청크 경계에서 정보 손실을 줄입니다.

단점 :

  • 여러 청크에서 내용을 반복하여 중복성을 도입 할 수 있습니다.
  • 더 많은 처리가 필요합니다.
 def sliding_window_chunk (텍스트, chunk_size = 100, 겹침 = 20) :
    토큰 = text.split ()
    청크 = []
    IN 범위 (0, LEN (TOKENS), Chunk_Size -Overap)의 I의 경우 :
        Chunk = ''.join (토큰 [i : i chunk_size])
        Chunks.Append (Chunk)
    덩어리를 반환합니다

# 슬라이딩 창 청크 적용
sliding_chunks = sliding_window_chunk (sample_text)
sliding_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 : 이미지 출력이 오버랩을 캡처하지 않습니다. 수동 텍스트 출력도 참조를 위해 제공됩니다. 텍스트 겹침에 유의하십시오.

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

 --- sliding_window_chunk 적용 ---

청크 1 :
소개 데이터 과학은 과학을 사용하는 학제 간 분야입니다. 
지식과 통찰력을 추출하는 방법, 프로세스, 알고리즘 및 시스템 
구조화되지 않은 데이터에서. 통계, 컴퓨터에서 그려집니다 
과학, 머신 러닝 및 다양한 데이터 분석 기술을 발견 
패턴, 예측을하고 실행 가능한 통찰력을 도출합니다. 데이터 과학은 할 수 있습니다 
의료, 금융, 마케팅, 등 많은 산업에 적용됩니다. 
조직이 데이터 중심 결정을 내리고 최적화하는 데 도움이되는 교육 
프로세스하고 고객 행동을 이해합니다. 빅 데이터 개요 빅 데이터를 참조하십시오
 점점 증가하는 비율로 성장하는 다양한 정보 세트. 
 정보의 양, 속도를 포함합니다
---------------------------------------------------------
청크 2 :
점점 증가하는 비율로 성장하는 다양한 정보 세트를 나타냅니다. 
정보의 양, 속도 또는 속도를 포함합니다. 
생성 및 수집 및 다루는 데이터 포인트의 다양성 또는 범위. 
데이터 과학 방법 데이터 과학에 사용 된 몇 가지 중요한 방법이 있습니다. 
1. 회귀 분석 2. 분류 3. 클러스터링 4. 신경망 
데이터 과학의 과제 - 데이터 품질 : 데이터 품질이 좋지 않으면 
잘못된 결론. - 데이터 프라이버시 : 민감한 개인 정보 보호 보장 
정보. - 확장 성 : 대규모 데이터 세트를 효율적으로 처리합니다. 결론 
데이터 과학은 계속 운전하고 있습니다
---------------------------------------------------------
청크 3 :
민감한 정보의 프라이버시 보장. - 확장 성 : 대규모 처리 
데이터 세트를 효율적으로. 결론 데이터 과학은 계속 원동력입니다 
많은 산업에서 더 나은 결정을 이끌어 내고 
최적화 된 결과. 최신 기능을 포함하는 진화하는 필드로 남아 있습니다 
기술 발전.
---------------------------------------------------------
로그인 후 복사

7. 계층 적 청킹

계층 적 청크는 섹션, 하위 섹션 및 단락과 같은 여러 수준에서 문서를 분류합니다.

사용시기 :
계층을 유지하는 것이 필수적 인 학술 논문이나 법률 텍스트와 같은 고도로 구조화 된 문서의 경우.

장점 :

  • 문서 구조를 보존합니다.
  • 여러 수준의 세분성에서 컨텍스트를 유지합니다.

단점 :

  • 구현하기가 더 복잡합니다.
  • 고르지 않은 덩어리로 이어질 수 있습니다.
 def hierarchical_chunk (text, section_keywords) :
    섹션 = []
    current_section = []
    text.splitlines ()의 라인의 경우 :
        경우 (Section_keywords의 키워드에 대한 키워드) :
            current_section :
                sects.append ( "\ n".join (current_section))
            current_section = [line]
        또 다른:
            current_section.append (line)
    current_section :
        sects.append ( "\ n".join (current_section))
    반환 섹션

# 계층 적 청크 적용
section_keywords = [ "소개", "개요", "메소드", "결론"]]]
hierarchical_chunks = hierarchical_chunk (sample_text, section_keywords)
Hierarchical_chunks의 청크 :
    print (청크, '\ n --- \ n')
    
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

8. 콘텐츠 인식 청크

이 메소드는 컨텐츠 특성 (예 : 단락 수준의 청크 텍스트, 별도의 엔티티)에 따라 청킹에 적응합니다.

사용시기 :
eBook 또는 기술 매뉴얼과 같은 이질적인 콘텐츠가있는 문서의 경우 청크는 컨텐츠 유형에 따라 달라야합니다.

장점 :

  • 다른 컨텐츠 유형에 유연하고 적응할 수 있습니다.
  • 여러 형식에서 문서 무결성을 유지합니다.

단점 :

  • 복잡하고 역동적 인 청킹 논리가 필요합니다.
  • 다양한 컨텐츠 구조가있는 문서를 구현하기가 어렵습니다.
 def content_aware_chunk (텍스트) :
    청크 = []
    current_chunk = []
    text.splitlines ()의 라인의 경우 :
        if line.startswith (( '##', '###', 'socument', '결론') :
            current_chunk 인 경우 :
                chunks.append ( '\ n'.join (current_chunk))
            current_chunk = [line]
        또 다른:
            current_chunk.append (line)
    current_chunk 인 경우 :
        chunks.append ( '\ n'.join (current_chunk))
    덩어리를 반환합니다

# 콘텐츠 인식 청크 적용
content_chunks = content_aware_chunk (sample_text)
content_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

9. 테이블 인식 청크

이 전략은 특히 문서 테이블을 독립 청크로 추출하여 문서 테이블을 처리하여 쉽게 처리 할 수 ​​있도록 Markdown 또는 JSON과 같은 형식으로 변환합니다.

사용시기 :
테이블이 중요한 정보를 수용하는 재무 보고서 또는 기술 문서와 같은 표 형 데이터가 포함 된 문서의 경우.

장점 :

  • 효율적인 다운 스트림 처리를 위해 테이블 ​​구조를 유지합니다.
  • 테이블 데이터를 독립적으로 처리 할 수 ​​있습니다.

단점 :

  • 변환 중에 서식이 손실 될 수 있습니다.
  • 복잡한 구조가있는 테이블에 대한 특별 처리가 필요합니다.
 팬더를 PD로 가져옵니다

def table_aware_chunk (테이블) :
    return table.to_markdown ()

# 샘플 테이블 데이터
테이블 = pd.dataframe ({{
    "이름": [ "John", "Alice", "Bob"],
    "나이": [25, 30, 22],
    "직업": [ "엔지니어", "닥터", "아티스트"]]]]
})

# 테이블 인식 청크 적용
table_markdown = table_aware_chunk (테이블)
인쇄 (table_markdown)
로그인 후 복사

코드 출력 :이 예에서는 테이블이 고려되었습니다. 코드 출력에 테이블 만 청크됩니다.

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

10. 토큰 기반 청킹

토큰 기반 청킹은 단어 나 문장보다는 고정 된 수의 토큰을 기반으로 텍스트를 분할합니다. NLP 모델 (예 : Hugging Face 's Transformers)의 토큰 화제를 사용합니다.

사용시기 :
토큰 제한이있는 변압기 기반 모델 (예 : GPT-3 또는 GPT-4)과 같은 토큰에서 작동하는 모델의 경우.

장점 :

  • 변압기 기반 모델과 잘 어울립니다.
  • 토큰 제한이 존중되도록합니다.

단점 :

  • 토큰 화는 문장을 분할하거나 컨텍스트를 깨뜨릴 수 있습니다.
  • 항상 자연어 경계와 일치하는 것은 아닙니다.
 변압기에서 GPT2Tokenizer를 가져옵니다

Tokenizer = gpt2tokenizer.from_pretrained ( "gpt2")

def token_based_chunk (텍스트, max_tokens = 200) :
    Tokens = Tokenizer (텍스트) [ "input_ids"]
    Chunks = [Tokens [i : I max_tokens] 범위 (0, len (토큰), max_tokens)]]
    덩어리의 청크에 대한 [tokenizer.decode (청크)를 반환합니다.]

# 토큰 기반 청킹 적용
token_chunks = token_based_chunk (sample_text)
token_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

11. 엔티티 기반 청킹

Entity 기반 청킹 레버리지는 Entity Recognition (NER)이라는 이름이 지정되어 사람, 조직 또는 위치와 같은 인정 된 엔티티를 기반으로 텍스트를 청크로 나눕니다.

사용시기 :
이력서, 계약 또는 법률 문서와 같은 상황 단위로 유지 해야하는 특정 엔티티가 중요한 문서의 경우.

장점 :

  • 명명 된 엔티티를 그대로 유지합니다.
  • 관련 엔티티에 중점을 두어 검색 정확도를 향상시킬 수 있습니다.

단점 :

  • 훈련 된 NER 모델이 필요합니다.
  • 엔티티가 겹쳐서 복잡한 청크 경계로 이어질 수 있습니다.
 def entity_based_chunk (텍스트) :
    doc = nlp (텍스트)
    엔티티 = [DOC.ENTS의 ENT에 대한 ENT.TEXT]
    리턴 엔티티

# 엔터티 기반 청킹 적용
entity_chunks = entity_based_chunk (sample_text)
print (entity_chunks)
로그인 후 복사

코드 출력 :이 목적을 위해 입력에 대한 특정 NER 모델을 교육하는 것이 이상적인 방법입니다.

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

12. 주제 기반 청킹

이 전략은 LDA (Latent Dirichlet Allocation)와 같은 기술을 사용하여 주제를 기반으로 문서 또는 텍스트를 분할하기 위해 다른 주제 모델링 알고리즘을 사용합니다.

사용시기 :
뉴스 기사, 연구 논문 또는 다양한 주제가있는 보고서와 같은 여러 주제를 다루는 문서의 경우.

장점 :

  • 그룹 관련 정보를 함께 그룹화합니다.
  • 특정 주제를 기반으로 집중 검색에 도움이됩니다.

단점 :

  • 추가 처리 (주제 모델링)가 필요합니다.
  • 짧은 문서 나 겹치는 주제에는 정확하지 않을 수 있습니다.
 sklearn.feature_extraction.text import countvectorizer에서
sklearn.decomposition import ratentdirichletallocation
Numpy를 NP로 가져옵니다

def topic_based_chunk (text, num_topics = 3) :
    # 텍스트를 청킹을 위해 문장으로 나눕니다
    문장 = text.split ( '.')
    
    # 문장을 벡터화합니다
    Vectorizer = countvectorizer ()
    sentence_vectors = vectorizer.fit_transform (sentences)
    
    # 주제 모델링에 LDA를 적용하십시오
    lda = latentdirichletallocation (n_components = num_topics, random_state = 42)
    lda.fit (sentence_vectors)
    
    # 주제 단어 배포를 받으십시오
    topic_word = lda.components_
    vocabulary = vectorizer.get_feature_names_out ()
    
    # 각 주제에 대한 상단 단어를 식별합니다
    주제 = []
    주제 _idx의 경우, enumerate (topic_word)의 주제 :
        top_words_idx = topic.argsort () [: -6 : -1]
        topic_keywords = [top_words_idx에서 i for i for i for vocabulary [i]]
        topics.append ( "topic {{} : {}". 형식 (topic_idx 1, ','.join (topic_keywords))).
    
    # 주제로 청크를 생성합니다
    chunks_with_topics = []
    I의 경우, 열거 된 문장 (문장) :
        topic_assignments = lda.transform (vectorizer.transform ([sentence]))
        할인 된_topic = np.argmax (topic_assignments)
        chunks_with_topics.append (((주제 [antased_topic], sentence)))
    
    chunks_with_topics를 반환합니다


# 주제 기반 청크를 받으십시오
topic_chunks = topic_based_chunk (sample_text, num_topics = 3)

# 디스플레이 결과
주제의 경우 topic_chunks의 청크 :
    print (f "{topic} : {chunk} \ n")
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

13. 페이지 기반 청킹

이 접근법은 페이지 경계를 기반으로 문서를 분할하며, 각 페이지가 청크로 취급되는 PDF 또는 형식화 된 문서에 일반적으로 사용됩니다.

사용시기 :
PDF 또는 인쇄 준비 보고서와 같은 페이지 지향 문서의 경우 페이지 경계가 의미 론적으로 중요합니다.

장점 :

  • PDF 문서로 쉽게 구현할 수 있습니다.
  • 페이지 경계를 존중합니다.

단점 :

  • 페이지는 자연스러운 텍스트 브레이크에 해당하지 않을 수 있습니다.
  • 페이지간에 컨텍스트가 손실 될 수 있습니다.
 def page_based_chunk (페이지) :
    # 사전 처리 페이지 목록을 기반으로 분할 (PDF 페이지 텍스트 시뮬레이션)
    반환 페이지

# 샘플 페이지
pages = [ "Page 1 Content", "Page 2 Content", "Page 3 Content"]]]

# 페이지 기반 청킹 적용
page_chunks = page_based_chunk (페이지)
page_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 : 샘플 텍스트에는 페이지 번호를 기반으로 분리가 부족하여 코드 출력 이이 스 니펫의 범위를 벗어납니다. 독자는 코드 스 니펫을 가져 와서 문서에서 시도하여 페이지 기반 청크 출력을 얻을 수 있습니다.

14. 키워드 기반 청킹

이 방법은 주제를 신호 전달하는 사전 정의 된 키워드 또는 문구를 기반으로 문서를 작성합니다 (예 : "소개", "결론").

사용시기 :
과학 논문 또는 기술 사양과 같은 명확한 구조를 따르는 문서에 가장 적합합니다.

장점 :

  • 키워드에 따라 자연스러운 주제 중단을 캡처합니다.
  • 구조화 된 문서에 적합합니다.

단점 :

  • 사전 정의 된 키워드 세트가 필요합니다.
  • 구조화되지 않은 텍스트에는 적응할 수 없습니다.
 def keyword_based_chunk (텍스트, 키워드) :
    청크 = []
    current_chunk = []
    text.splitlines ()의 라인의 경우 :
        (키워드의 키워드에 대한 키워드)가있는 경우 :
            current_chunk 인 경우 :
                chunks.append ( '\ n'.join (current_chunk))
            current_chunk = [line]
        또 다른:
            current_chunk.append (line)
    current_chunk 인 경우 :
        chunks.append ( '\ n'.join (current_chunk))
    덩어리를 반환합니다

# 키워드 기반 청킹 적용
키워드 = "소개", "개요", "결론", "방법", "도전"]]]]
keyword_chunks = keyword_based_chunk (sample_text, 키워드)
keyword_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

15. 하이브리드 청킹

하이브리드 청킹은 콘텐츠 유형 및 문서 구조를 기반으로 여러 청킹 전략을 결합합니다. 예를 들어, 텍스트는 문장으로 청크 할 수 있으며 테이블과 이미지는 별도로 처리됩니다.

사용시기 :
기술 보고서, 비즈니스 문서 또는 제품 매뉴얼과 같은 다양한 콘텐츠 유형이 포함 된 복잡한 문서의 경우.

장점 :

  • 다양한 문서 구조에 적응할 수 있습니다.
  • 다른 콘텐츠 유형에 대한 세분화 제어가 가능합니다.

단점 :

  • 구현하기가 더 복잡합니다.
  • 각 콘텐츠 유형을 처리하기위한 사용자 정의 로직이 필요합니다.
 def hybrid_chunk (텍스트) :
    단락 = 단락 _chunk (텍스트)
    hybrid_chunks = []
    단락의 단락의 경우 :
        hybrid_chunks = sentence_chunk (단락)
    Hybrid_chunks를 반환합니다

# 하이브리드 청킹 적용
hybrid_chunks = hybrid_chunk (sample_text)
Hybrid_chunks의 청크 :
    print (청크, '\ n --- \ n')
로그인 후 복사

코드 출력 :

탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술

보너스 : 독자가 코드를 사용하고 척하는 출력을 쉽게 시각화 할 수 있도록 전체 노트북을 사용할 수 있습니다 ( 노트북 링크 ). 다음 래그 애플리케이션을 구축하기 위해 이러한 전략을 탐색하고 시도해보십시오.

다음으로, 우리는 몇 가지 청크 트래프 오프를 조사하고 유스 케이스 시나리오에 대한 아이디어를 얻으려고 노력할 것입니다.

다른 시나리오에 대한 최적화

RAG (Resprieved-Augmented Generation) 파이프 라인을 구축 할 때 특정 사용 사례 및 문서 유형에 대한 청크를 최적화하는 것이 중요합니다. 시나리오마다 문서 크기, 콘텐츠 다양성 및 검색 속도에 따라 요구 사항이 다릅니다. 이러한 요소를 기반으로 몇 가지 최적화 전략을 살펴 보겠습니다.

대규모 문서에 대한 청킹

학술 논문, 법률 텍스트 또는 정부 보고서와 같은 대규모 문서에는 종종 수백 페이지가 있으며 다양한 유형의 콘텐츠 (예 : 텍스트, 이미지, 테이블, 각주)가 포함되어 있습니다. 이러한 문서의 청크 전략은 관련 컨텍스트를 캡처하고 빠르고 효율적인 검색을 위해 청크 크기를 관리 할 수있는 것 사이의 균형을 유지해야합니다.

주요 고려 사항 :

  • 시맨틱 응집력 : 문장 기반, 단락 기반 또는 계층 적 청크와 같은 전략을 사용하여 섹션 전체의 상황을 보존하고 의미 론적 일관성을 유지합니다.
  • 양식 별 취급 : 테이블, 그림 또는 이미지가있는 법적 문서의 경우, 양식 별 및 테이블 인식 청크 전략은 중요한 비 텍스트 정보가 손실되지 않도록합니다.
  • 컨텍스트 보존 : 조항 사이의 맥락이 중요한 법적 문서의 경우 슬라이딩 윈도우 청킹은 연속성을 보장하고 중요한 섹션을 깨는 것을 방지 할 수 있습니다.

대규모 문서를위한 최고의 전략 :

  • 계층 적 청크 : 문서 구조의 다른 수준에서 컨텍스트를 유지하기 위해 문서를 섹션, 하위 섹션 및 단락으로 나눕니다.
  • 슬라이딩 윈도우 청크 : 청크 사이에 텍스트의 중요한 부분이 손실되지 않도록하여 컨텍스트를 겹치는 섹션 사이의 유동성을 유지합니다.

예제 사용 사례 :

  • 법적 문서 검색 : 법률 연구를 위해 구축 된 헝겊 시스템은 슬라이딩 윈도우 또는 계층 적 청크를 우선시하여 조항과 법적 선례를 정확하고 응집력있게 검색 할 수 있습니다.

청크 크기, 검색 속도 및 정확도 사이의 절충

청크의 크기는 검색 속도와 결과의 정확도에 직접적인 영향을 미칩니다. 큰 청크는 더 많은 상황을 보존하는 경향이있어 검색의 정확도를 향상시킬 수 있지만 더 많은 메모리와 계산이 필요하므로 시스템 속도를 늦출 수 있습니다. 반대로, 작은 덩어리는 더 빠른 검색을 허용하지만 중요한 상황 정보를 잃을 위험이 있습니다.

주요 절충 :

  • 더 큰 청크 (예 : 500-1000 토큰) : 더 많은 상황을 유지하여 RAG 파이프 라인, 특히 복잡한 질문에 대해보다 정확한 응답을 초래합니다. 그러나 검색 과정을 늦추고 추론 중에 더 많은 기억을 소비 할 수 있습니다.
  • 작은 청크 (예 : 100-300 토큰) : 검색이 빠르고 메모리 사용량이 적지 만 중요한 정보가 청크에서 분리 될 수 있으므로 정확도가 낮습니다.

최적화 전술 :

  • 슬라이딩 윈도우 청킹 : 작은 청크의 장점을 컨텍스트 보존과 결합하여 겹치는 콘텐츠가 많은 속도를 잃지 않고 정확도를 향상시킵니다.
  • 토큰 기반 청킹 : 토큰 제한이있는 변압기 모델로 작업 할 때 특히 중요합니다. 검색을 효율적으로 유지하면서 청크가 모델 제약 조건에 맞도록합니다.

예제 사용 사례 :

  • 빠른 FAQ 시스템 : FAQ 시스템과 같은 응용 프로그램에서는 작은 청크 (토큰 기반 또는 문장 기반)가 질문이 일반적으로 짧고 심각한 의미 론적 이해보다 속도가 우선 순위가 높기 때문에 가장 잘 작동합니다. 검색 속도가 주요 관심사이기 때문에이 경우 더 낮은 정확도에 대한 트레이드 오프가 허용됩니다.

다른 전략에 대한 사용 사례

각 청킹 전략은 다양한 유형의 문서 및 검색 시나리오에 적합하므로 특정 방법을 사용하는시기를 이해하면 RAG 파이프 라인의 성능을 크게 향상시킬 수 있습니다.

작은 문서 또는 FAQ

FAQ 또는 고객 지원 페이지와 같은 작은 문서의 경우 검색 속도가 가장 중요하며 완벽한 컨텍스트를 유지하는 것이 항상 필요하지는 않습니다. 문장 기반 청크 또는 키워드 기반 청크와 같은 전략은 잘 작동 할 수 있습니다.

  • 전략 : 문장 기반 청킹
  • 유스 케이스 : FAQ 검색, 빠르고 짧은 답변이 표준이며 맥락은 긴 구절에서 연장되지 않습니다.

긴 형식의 문서

연구 논문이나 법률 문서와 같은 긴 형식의 문서의 경우 상황이 더 중요하고 의미 론적 또는 계층 적 경계에 의해 무너지는 것이 중요 해집니다.

  • 전략 : 계층 적 또는 시맨틱 기반 청킹
  • 사용 사례 : 조항이나 인용의 정확한 검색을 보장하는 법적 문서 검색이 중요합니다.

혼합 컨텐츠 문서

이미지, 테이블 및 텍스트와 같은 혼합 된 콘텐츠 유형 (예 : Scientific Reports)이있는 문서에서는 최적의 결과를 위해 각 유형의 컨텐츠가 별도로 처리되도록하기 위해 양식 별 청킹이 중요합니다.

  • 전략 : 양식 별 또는 테이블 인식 청크
  • 유스 케이스 : 표와 수치가 문서 정보에서 중요한 역할을하는 과학 보고서.

다중 주제 문서

eBook 또는 뉴스 기사와 같은 여러 주제 나 섹션을 다루는 문서는 주제 기반 청킹 전략의 혜택을받습니다. 이를 통해 각 청크는 특정 주제를 검색 해야하는 사용 사례에 이상적입니다.

  • 전략 : 주제 기반 청킹
  • 사용 사례 : 뉴스 검색 또는 다소 주제 연구 논문. 각 청크는 정확하고 주제 별 검색을 위해 집중된 주제를 중심으로 진행됩니다.

결론

이 블로그에서는 RAG (Respreval-Augmented Generation) 파이프 라인 내에서 청크의 중요한 역할을 탐구했습니다. Chunking은 대형 문서를 작고 관리 가능한 작품으로 변환하는 기본 프로세스 역할을하므로 모델이 관련 정보를 효율적으로 검색하고 생성 할 수 있습니다. 각 청킹 전략은 고유 한 장점과 단점을 제시하므로 특정 사용 사례에 따라 적절한 방법을 선택해야합니다. 다양한 전략이 검색 프로세스에 어떤 영향을 미치는지 이해함으로써 RAG 시스템의 성능을 최적화 할 수 있습니다.

올바른 청크 전략을 선택하는 것은 문서 유형, 컨텍스트 보존의 필요성 및 검색 속도와 정확도의 균형을 포함한 여러 요소에 따라 다릅니다. 학술 논문, 법률 문서 또는 혼합 컨텐츠 파일을 사용하든 적절한 접근 방식을 선택하면 RAG 파이프 라인의 효과가 크게 향상 될 수 있습니다. 청킹 방법을 반복하고 개선하면 문서 유형 및 사용자 요구가 변경되어 검색 시스템이 강력하고 효율적으로 유지되도록 할 수 있습니다.

주요 테이크 아웃

  • RAG 시스템의 검색 정확도 및 모델 효율성을 향상시키는 데 적절한 청킹이 필수적입니다.
  • 효과적인 처리를 보장하기 위해 문서 유형 및 복잡성을 기반으로 청킹 전략을 선택하십시오.
  • 메소드를 선택할 때 청크 크기, 검색 속도 및 정확도 사이의 상충 관계를 고려하십시오.
  • FAQ, 학술 논문 또는 혼합 컨텐츠 문서와 같은 특정 응용 프로그램에 청크 전략을 조정하십시오.
  • 진화하는 문서 요구와 사용자 기대를 충족시키기 위해 청크 전략을 정기적으로 평가하고 개선합니다.

자주 묻는 질문

Q 1. NLP의 청크 기술은 무엇입니까?

A. NLP의 청크 기술에는 큰 텍스트를 작고 관리 가능한 작품으로 분해하여 컨텍스트와 관련성을 유지하면서 처리 효율성을 향상시키는 것이 포함됩니다.

Q 2. 내 문서의 올바른 청크 전략을 어떻게 선택합니까?

A. 청킹 전략의 선택은 문서 유형, 구조 및 특정 사용 사례를 포함한 여러 요인에 따라 다릅니다. For example, fixed-size chunking might be suitable for smaller documents, while semantic-based chunking is better for complex texts requiring context preservation. Evaluating the pros and cons of each strategy will help determine the best approach for your specific needs.

Q 3. Can chunking strategies affect the performance of a RAG pipeline?

A. Yes, the choice of chunking strategy can significantly impact the performance of a RAG pipeline. Strategies that preserve context and semantics, such as semantic-based or sentence-based chunking, can lead to more accurate retrieval and generation results. Conversely, methods that break context (eg, fixed-size chunking) may reduce the quality of the generated responses, as relevant information may be lost between chunks.

Q4. How do chunking techniques improve RAG pipelines?

A. Chunking techniques improve RAG pipelines by ensuring that only meaningful information is retrieved, leading to more accurate and contextually relevant responses.

Q. What is Chunking in RAG?

A. Retrieval-Augmented Generation (RAG) pipelines, chunking is the process of breaking down large documents into smaller, manageable pieces (chunks). This is necessary because large language models (LLMs) have token limits. Chunking ensures the model can handle the text while preserving context and meaning for accurate retrieval and response generation.

The media shown in this article is not owned by Analytics Vidhya and is used at the Author's discretion.

위 내용은 탁월한 래그 시스템을 구축하기위한 15 개의 청킹 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Meta Llama 3.2- 분석 Vidhya를 시작합니다 Meta Llama 3.2- 분석 Vidhya를 시작합니다 Apr 11, 2025 pm 12:04 PM

메타의 라마 3.2 : 멀티 모달 및 모바일 AI의 도약 Meta는 최근 AI에서 강력한 비전 기능과 모바일 장치에 최적화 된 가벼운 텍스트 모델을 특징으로하는 AI의 상당한 발전 인 Llama 3.2를 공개했습니다. 성공을 바탕으로 o

10 생성 AI 코드의 생성 AI 코딩 확장 대 코드를 탐색해야합니다. 10 생성 AI 코드의 생성 AI 코딩 확장 대 코드를 탐색해야합니다. Apr 13, 2025 am 01:14 AM

이봐, 코딩 닌자! 하루 동안 어떤 코딩 관련 작업을 계획 했습니까? 이 블로그에 더 자세히 살펴보기 전에, 나는 당신이 당신의 모든 코딩 관련 문제에 대해 생각하기를 원합니다. 완료? - &#8217

AV 바이트 : Meta ' S Llama 3.2, Google의 Gemini 1.5 등 AV 바이트 : Meta ' S Llama 3.2, Google의 Gemini 1.5 등 Apr 11, 2025 pm 12:01 PM

이번 주 AI 환경 : 발전의 회오리 바람, 윤리적 고려 사항 및 규제 토론. OpenAi, Google, Meta 및 Microsoft와 같은 주요 플레이어

직원에게 AI 전략 판매 : Shopify CEO의 선언문 직원에게 AI 전략 판매 : Shopify CEO의 선언문 Apr 10, 2025 am 11:19 AM

Shopify CEO Tobi Lütke의 최근 메모는 AI 숙련도가 모든 직원에 대한 근본적인 기대를 대담하게 선언하여 회사 내에서 중요한 문화적 변화를 표시합니다. 이것은 도망가는 트렌드가 아닙니다. 그것은 p에 통합 된 새로운 운영 패러다임입니다

GPT-4O vs Openai O1 : 새로운 OpenAI 모델은 과대 광고 가치가 있습니까? GPT-4O vs Openai O1 : 새로운 OpenAI 모델은 과대 광고 가치가 있습니까? Apr 13, 2025 am 10:18 AM

소개 OpenAi는 기대가 많은 "Strawberry"아키텍처를 기반으로 새로운 모델을 출시했습니다. O1로 알려진이 혁신적인 모델은 추론 기능을 향상시켜 문제를 통해 생각할 수 있습니다.

비전 언어 모델 (VLMS)에 대한 포괄적 인 안내서 비전 언어 모델 (VLMS)에 대한 포괄적 인 안내서 Apr 12, 2025 am 11:58 AM

소개 생생한 그림과 조각으로 둘러싸인 아트 갤러리를 걷는 것을 상상해보십시오. 이제 각 작품에 질문을하고 의미있는 대답을 얻을 수 있다면 어떨까요? “어떤 이야기를하고 있습니까?

SQL에서 열을 추가하는 방법? - 분석 Vidhya SQL에서 열을 추가하는 방법? - 분석 Vidhya Apr 17, 2025 am 11:43 AM

SQL의 Alter Table 문 : 데이터베이스에 열을 동적으로 추가 데이터 관리에서 SQL의 적응성이 중요합니다. 데이터베이스 구조를 즉시 조정해야합니까? Alter Table 문은 솔루션입니다. 이 안내서는 Colu를 추가합니다

최고의 프롬프트 엔지니어링 기술의 최신 연간 편집 최고의 프롬프트 엔지니어링 기술의 최신 연간 편집 Apr 10, 2025 am 11:22 AM

내 칼럼을 처음 접할 수있는 분들을 위해, 나는 구체화 된 AI, AI 추론, AI의 첨단 획기적인 혁신, AI 교육, AI의 수비, ai re

See all articles