Cover Image

📚 Ứng dụng RAG (Retrieval-Augmented Generation) & Vector Store

Tổng quan

RAG là kỹ thuật giúp AI “đọc” và “nhớ” tài liệu riêng của bạn — không cần fine-tune model. Thay vì AI chỉ dựa vào kiến thức training cũ, nó sẽ tìm kiếm trong knowledge base của bạn rồi mới trả lời. Đây là nền tảng để xây dựng chatbot doanh nghiệp, Q&A trên tài liệu nội bộ.


🧠 RAG hoạt động như thế nào?

graph TD
    subgraph Indexing["📥 Giai đoạn 1: Indexing (Lập chỉ mục)"]
        D["📄 Tài liệu\n(PDF, Word, Web...)"] --> C["✂️ Chunking\n(Chia đoạn nhỏ)"]
        C --> E["🔢 Embedding Model\n(Chuyển text → vector)"]
        E --> VS["🗄️ Vector Store\n(Pinecone, Qdrant, PGVector...)"]
    end

    subgraph Retrieval["🔍 Giai đoạn 2: Retrieval + Generation (Khi user hỏi)"]
        Q["❓ Câu hỏi của User"] --> EQ["🔢 Embedding\n(Chuyển câu hỏi → vector)"]
        EQ --> SIM["🎯 Similarity Search\n(Tìm đoạn văn liên quan nhất)"]
        VS --> SIM
        SIM --> CTX["📋 Context\n(Các đoạn văn liên quan)"]
        CTX --> LLM["🤖 LLM\n(Tổng hợp câu trả lời)"]
        Q --> LLM
        LLM --> ANS["✅ Câu trả lời\n(có trích dẫn nguồn)"]
    end

🛠️ Thiết lập RAG Pipeline trong n8n

Workflow 1: Indexing (Chạy 1 lần hoặc khi có tài liệu mới)

📄 Đọc tài liệu
   ↓
✂️ Default Data Loader (Chia chunk)
   ↓
🔢 Embeddings OpenAI (text-embedding-3-small)
   ↓
🗄️ Vector Store (Pinecone / Qdrant / Supabase pgvector)

Workflow 2: Q&A (Chạy khi user đặt câu hỏi)

❓ Nhận câu hỏi (Webhook / Chat trigger)
   ↓
🤖 AI Agent với Vector Store Tool
   ↓
📤 Trả lời kèm nguồn trích dẫn

📦 Các Vector Store được n8n hỗ trợ

Vector StoreLoạiĐặc điểmPhù hợp với
PineconeCloudManaged, dễ dùng, free tierMVP, production nhỏ
QdrantSelf-host/CloudOpen source, hiệu suất caoSelf-host, privacy
Supabase pgvectorCloud/Self-hostKết hợp với PostgreSQLĐã dùng Supabase
In-MemoryRAMKhông cần cài đặtTesting, prototype
WeaviateSelf-host/CloudGraphQL APIEnterprise

⚙️ Cấu hình chi tiết

1. Chọn Embedding Model

ModelDimensionsChi phíChất lượng
text-embedding-3-small1536💚 Rất rẻ⭐⭐⭐⭐
text-embedding-3-large3072💛 Trung bình⭐⭐⭐⭐⭐
nomic-embed-text768💚 Free (local)⭐⭐⭐

Khuyến nghị

Dùng text-embedding-3-small cho hầu hết use cases — rẻ, nhanh và đủ tốt. Chỉ nâng lên large khi cần độ chính xác cao hơn.

2. Cấu hình Chunking

Tham sốGiá trị gợi ýGhi chú
Chunk Size500-1000 tokensQuá nhỏ mất context, quá lớn giảm độ chính xác
Chunk Overlap100-200 tokensĐảm bảo không mất thông tin ở ranh giới

💡 Ví dụ ứng dụng thực tế

Chatbot Q&A trên tài liệu nội bộ công ty

sequenceDiagram
    participant E as Nhân viên
    participant C as Chatbot n8n
    participant V as Vector DB
    participant G as GPT-4o

    E->>C: "Quy trình nghỉ phép của công ty là gì?"
    C->>V: Tìm kiếm "quy trình nghỉ phép" (similarity search)
    V-->>C: [Đoạn 1: Nội quy HĐ...], [Đoạn 2: Form nghỉ phép...]
    C->>G: Context + Câu hỏi của nhân viên
    G-->>C: "Theo nội quy công ty (trang 5, mục 3.2):\n- Nghỉ phép cần báo trước 3 ngày\n- Điền form HR-001..."
    C->>E: Câu trả lời có trích dẫn nguồn

🔄 Quy trình tự động cập nhật Knowledge Base

📡 Trigger: File mới trong Google Drive
      ↓
📄 Đọc nội dung file
      ↓
🔍 Kiểm tra file đã được index chưa? (Query Vector Store)
      ↓ (chưa có)
✂️ Chunk + Embed
      ↓
🗄️ Lưu vào Vector Store
      ↓
✅ Ghi log vào Google Sheets