RAG를 위한 YouTube 스크립트 청킹: 타임스탬프, 인용 및 누락된 캡션 처리
요약
영상 콘텐츠를 활용한 RAG 시스템 구축 시, 스크립트 추출 및 청킹 과정의 어려움을 다룹니다. 타임스탬프 유지, 인용 가능한 심층 링크 생성, 누락된 캡션 처리 방법을 제시하며, Apify 액터를 통해 이 복잡한 과정을 간소화했습니다.
핵심 포인트
- 청킹 시 타임스탬프를 보존하여 출처 추적이 가능해야 합니다.
- 각 청크에 심층 링크(deep link)를 저장해 답변의 정확한 순간으로 연결합니다.
- 캡션이 없는 영상은 오류 목록에 모아 건너뛰어 배치 실패를 방지할 수 있습니다.
영상 콘텐츠에 대한 대부분의 RAG 데모는 '스크립트를 가져오는 것'으로 시작하며, 이 단계가 임베딩(embedding) 단계보다 더 자주 실패합니다. 세 가지 중요한 사항이 있습니다: 타임스탬프를 확보하는 것, 모든 청크가 인용될 수 있도록 청킹하는 것, 그리고 캡션이 없는 영상에 대해 비용을 지불하지 않는 것입니다.
1. 청킹 과정에서 타임스탬프 유지하기
스크립트를 문자로 분할하면 각 조각이 어디서 왔는지 알 수 없게 됩니다. 캡션 세그먼트(텍스트, 시작 시간, 지속 시간)를 보존하고, 크기 제한에 도달할 때까지 세그먼트를 순회하며 청크를 구성한 다음, 문장 경계에서 끝내야 합니다. 첫 번째 세그먼트의 시작 시간을 청크와 함께 저장하세요.
def chunk(segments, max_chars=1000):
out, cur, start = [], "", None
for s in segments:
...
2. 인용을 클릭 가능하게 만들기
각 청크에 심층 링크(deep link)를 저장하세요: https://www.youtube.com/watch?v=VIDEO_ID&t=SECONDS. 어시스턴트가 답변할 때, 전체 한 시간짜리 대화 대신 영상의 정확한 순간으로 연결할 수 있습니다.
3. 누락된 캡션 처리로 배치 실패 방지하기
일부 영상에는 캡션이 없거나 비활성화되어 있습니다. 이러한 ID들을 오류 목록(errors list)에 모아 건너뛰고, 영원히 재시도하지 마세요. 요청한 언어 트랙을 우선하고, 그다음 자동 생성된 트랙, 그 다음 다른 모든 트랙 순서로 처리하는 것이 좋습니다.
복잡한 과정 생략하기
위의 모든 과정을 Apify 액터(actor)로 패키징했습니다: 영상 URL, ID 또는 재생 목록을 붙여넣고 chunkChars를 설정하면 텍스트, 타임스탬프가 지정된 세그먼트 및 심층 링크가 포함된 문장 단위 청크를 얻을 수 있습니다. API 키나 쿠키가 필요 없으며, 실제로 전달된 스크립트에 대해서만 비용을 지불합니다.
Apify의 YouTube Transcript Extractor
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("quiethand098/youtube-transcript-rag-extractor").call(run_input={...
출처 및 참고 자료: https://github.com/quiethand098/youtube-transcript-extractor
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기