장거리 컨텍스트를 보존하기위한 늦은 청크
결론
헝겊의 청킹이란 무엇입니까?
청킹은 대형 텍스트 문서를 더 작고 관리하기 쉬운 단위로 나누는 과정입니다. 언어 모델에는 컨텍스트 창이 제한되어 있기 때문에 RAG 시스템에 필수적입니다. 청킹은 관련 정보가 이러한 한도 내에 남아있어 신호 대 잡음비를 최대화하고 모델 성능을 향상시킵니다. 목표는 데이터를 분할하는 것뿐만 아니라 검색 가능성과 정확도를 높이기 위해 모델에 대한 프레젠테이션을 최적화하는 것입니다.
왜 청킹이 중요한가?
Chroma의 공동 창립자 인 Anton Troynikov는 컨텍스트 창 내의 관련없는 데이터가 응용 프로그램 효과를 크게 줄인다 고 강조합니다. 청킹은 다음과 같습니다
컨텍스트 극복 창 제한 : 크기 제한으로 인해 핵심 정보가 손실되지 않도록합니다.
신호 대 잡음 비율 향상 : 는 관련없는 콘텐츠를 필터링하여 모델 정확도를 향상시킵니다.
검색 효율 향상 : 관련 정보의 더 빠르고 정확한 검색을 용이하게합니다.
작업 별 최적화 : 특정 응용 프로그램 요구에 맞게 청크 전략을 맞춤화 할 수 있습니다 (예 : 요약 대 질문 응답).
agarching and chunking
Rag Architecture에는 세 가지 주요 단계가 포함됩니다 :
청킹 :
원시 데이터는 더 작고 의미있는 덩어리로 나뉩니다
임베딩 : 청크는 벡터 임베딩으로 변환됩니다
검색 및 생성 : - 관련 청크는 사용자 쿼리에 따라 검색되고 LLM은 검색된 정보를 사용하여 응답을 생성합니다.
헝겊 시스템의 도전
-
ag 시스템은 몇 가지 과제에 직면 해 있습니다
검색 문제 : 관련 정보의 부정확하거나 불완전한 검색
생성 어려움 :
환각, 관련이 없거나 편향된 출력
통합 문제 : - 검색 된 정보를 일관성있게 결합하는 데 어려움이 있습니다
올바른 청크 전략 선택
The ideal chunking strategy depends on several factors: content type, embedding model, and anticipated user queries. 내용의 구조와 밀도, 임베딩 모델의 토큰 제한 및 사용자가 물어볼 수있는 질문 유형을 고려하십시오.
1. 캐릭터 기반 텍스트 청킹
이 간단한 방법은 의미 론적 의미에 관계없이 문자 수에 따라 텍스트를 고정 크기 덩어리로 나눕니다. 간단하지만 종종 문장 구조와 컨텍스트를 방해합니다. Python 사용 예 :
2. Langchain으로 분할 된 재귀 문자 텍스트
이 접근법은 다중 분리기 (예 : 이중 신자 라인, 단일 신형, 공간)를 사용하여 텍스트를 재귀 적으로 나누고 작은 청크를 병합하여 대상 문자 크기를 최적화합니다. 캐릭터 기반 청킹보다 더 정교하여 더 나은 컨텍스트 보존을 제공합니다. langchain 사용 예 :
3. 문서 별 청크
이 방법은 형식 별 분리기를 사용하여 청킹을 다른 문서 형식 (HTML, Python, Markdown 등)으로 조정합니다. 이것은 청킹이 문서의 고유 한 구조를 존중하도록합니다. Python 및 Markdown에 Langchain을 사용하는 예는 원래 응답에 제공됩니다.
- 4. Langchain과 Openai 를 사용한 시맨틱 덩어리
Semantic chunking divides text based on semantic meaning, using techniques like sentence embeddings to identify natural breakpoints. 이 접근법은 각 청크가 일관된 아이디어를 나타냅니다. Langchain 및 Openai 임베딩 사용 예 :
5. 에이전트 청킹 (LLM 구동 청킹) -
Agentic chunking utilizes an LLM to identify natural breakpoints in the text, resulting in more contextually relevant chunks. 이 접근법은 LLM의 언어와 맥락에 대한 이해를 활용하여보다 의미있는 세그먼트를 생성합니다. OpenAI API를 사용하는 예 :
text = "Clouds come floating into my life..."
chunks = []
chunk_size = 35
chunk_overlap = 5
# ... (Chunking logic as in the original example)
6. 섹션 기반 청킹
이 메소드는 문서의 고유 한 구조 (제목, 소제목, 섹션)를 활용하여 청크를 정의합니다. 연구 논문이나 보고서와 같은 잘 구조화 된 문서에 특히 효과적입니다. 주제 기반 청킹에 대한 pymupdf 및 잠재적 인 Dirichlet 할당 (LDA)을 사용하는 예 :
7. 상황에 맞는 청킹
맥락 청크는 각 청크 내에서 의미 론적 맥락을 보존하는 데 중점을 둡니다. 이를 통해 검색된 정보가 일관되고 관련이 있습니다. Langchain 사용 및 사용자 정의 프롬프트 사용 예 :
8. 늦은 청크
늦은 청크는 전체 문서에 대한 임베딩을 생성 한 후까지 청킹 지연을 지연시킵니다. 이는 장거리 상황의 종속성을 보존하여 임베딩의 정확도와 검색을 향상시킵니다. Jina Embedings 모델 사용 예 :
# ... (LangChain installation and code as in the original example)
결론
효과적인 청킹은 고성능 헝겊 시스템을 구축하는 데 가장 중요합니다. 청킹 전략의 선택은 정보 검색의 품질과 생성 된 응답의 일관성에 크게 영향을 미칩니다. 개발자는 데이터의 특성과 응용 프로그램의 특정 요구 사항을 신중하게 고려하여 RAG 시스템의 성능을 최적화하기 위해 가장 적합한 청킹 방법을 선택할 수 있습니다. 각 청크 내에서 상황에 맞는 무결성과 관련성 유지의 우선 순위를 정하는 것을 잊지 마십시오. .