For the complete documentation index, see llms.txt. This page is also available as Markdown.

YouTube RAG Scraper

🎯 Tổng quan dự án

youtube-rag-scraper là một pipeline CLI mã nguồn mở giúp biến toàn bộ kênh YouTube thành dataset sẵn sàng cho hệ thống RAG (Retrieval-Augmented Generation). Đây là giải pháp end-to-end từ video YouTube → vector index để semantic search.


🏗️ Kiến trúc Pipeline

Từ sơ đồ bạn cung cấp, pipeline hoạt động như sau:plain Copy

┌─────────────────┐
│  🎬 YouTube     │ ← Channel / Playlist / Video URL
│     Input       │
└────────┬────────┘

┌─────────────────┐
│   main.py       │ ← CLI Orchestrator (điều phối chính)
│  CLI Orchestrator│
└────────┬────────┘
         ├──────────────────┐
         ▼                  ▼
┌─────────────────┐  ┌─────────────────┐
│  metadata.py    │  │  transcripts.py │
│ YouTube Data API│  │   yt-dlp Engine │
│     v3          │  │                 │
└────────┬────────┘  └────────┬────────┘
         │                      │
         ▼                      ▼
    Video IDs +            VTT → Plain Text
    Metadata                    │
         └──────────┬──────────┘

            ┌─────────────────┐
            │    utils.py     │
            │  Data Pipeline  │
            │  (Làm sạch &    │
            │   Chunking)     │
            └────────┬────────┘
                     ├──────────────────┐
                     ▼                  ▼
            ┌─────────────────┐  ┌─────────────────┐
            │  JSON/JSONL/CSV │  │   RAG Chunks    │
            │    /Parquet     │  │                 │
            └────────┬────────┘  └────────┬────────┘
                     ▼                  ▼
            ┌─────────────────┐  ┌─────────────────┐
            │  📁 Dataset     │  │ knowledge_base.py│
            │     Files       │  │Embedding Generator│
            └─────────────────┘  └────────┬────────┘

                              ┌─────────────────┐
                              │ sentence-       │
                              │ transformers    │
                              │  all-MiniLM-L6-v2│
                              └────────┬────────┘

                              ┌─────────────────┐
                              │  384-dim vectors │
                              └────────┬────────┘

                              ┌─────────────────┐
                              │   🟨 FAISS      │
                              │     Index       │
                              └────────┬────────┘

                              ┌─────────────────┐
                              │   search.py     │
                              │ Semantic Search │
                              └────────┬────────┘

                              ┌─────────────────┐
                              │  🔍 Natural     │
                              │ Language Query  │
                              │   (Top-K Results)│
                              └─────────────────┘

🔧 Các thành phần chính

Table

Component
Công nghệ
Chức năng

Metadata Extraction

YouTube Data API v3

Lấy danh sách video, tiêu đề, mô tả, ngày đăng

Transcript Extraction

yt-dlp Engine

Tải subtitle/caption (VTT → Plain Text)

Data Processing

utils.py

Làm sạch, chunking, xử lý pipeline

Embedding

sentence-transformers (all-MiniLM-L6-v2)

Tạo vector 384 chiều

Vector Store

FAISS Index

Lưu trữ và tìm kiếm vector nhanh

Search

search.py

Semantic search, trả về Top-K results


📊 Output cuối cùng

  1. Dataset Files (JSON/JSONL/CSV/Parquet): Chứa transcript đã chunk

  2. Embedding Matrix: Ma trận vector 384 chiều

  3. FAISS Index: Index vector để semantic search cực nhanh


🚀 Use Cases điển hình

  • "Chat với một kênh YouTube": Tạo chatbot trả lời dựa trên toàn bộ nội dung kênh

  • AI Assistant cho khóa học: Học viên hỏi đáp từ hàng trăm video hướng dẫn

  • Domain-specific RAG: Xây dựng knowledge base từ podcast, talkshow chuyên ngành

  • Nghiên cứu nội dung: Phân tích xu hướng, trích xuất thông tin từ video dài


🤔 Câu hỏi kỹ thuật thú vị

Dự án đặt ra những trade-off quan trọng cho RAG pipeline:Table

Câu hỏi
Lựa chọn
Trade-off

Chunking strategy

Timestamp-based vs Semantic chunking

Timestamp giữ ngữ cảnh thời gian, semantic giữ ý nghĩa chủ đề

Synthetic Q&A

Tạo Q&A giả lập trước khi embedding?

Cải thiện retrieval nhưng tăng chi phí tính toán

Vector DB

FAISS local vs Vector DB (Pinecone, Weaviate)

FAISS miễn phí, nhẹ; Vector DB scalable nhưng có phí


💡 Điểm mạnh của pipeline

  1. Modular: Tách biệt rõ ràng giữa metadata, transcript, processing, embedding

  2. Local-first: Dùng FAISS + sentence-transformers, không phụ thuộc API ngoài (trừ YouTube API)

  3. Scalable: Hỗ trợ xử lý hàng trăm video (như log trong ảnh: 340 videos với 4 workers)

  4. Output đa dạng: Hỗ trợ nhiều format dataset (JSON, Parquet, CSV)


📈 So sánh với các giải pháp khác

Table

Đặc điểm
youtube-rag-scraper
Youtube-comment-RAG
Apify Transcript Extractor

Mã nguồn

Open source

Open source

Commercial (Apify)

Embedding

Local (MiniLM)

Gemini API

Không tích hợp sẵn

Vector DB

FAISS (local)

Không có sẵn

Không có sẵn

Chunking

Không rõ

Có (configurable)

Chi phí

Miễn phí

Gemini API fee

$0.15/1000 videos


🔗 Tài nguyên liên quan

Nếu bạn quan tâm đến việc mở rộng pipeline này, có thể tham khảo:

Dự án này là một ví dụ điển hình về cách biến nội dung video không cấu trúc thành dữ liệu có cấu trúc sẵn sàng cho AI - rất phù hợp cho các ứng dụng RAG thực tế!

Last updated