Tôi đã tiêu tốn 500 USD vào hạ tầng RAG trước khi sửa được 7 sai lầm này

Tôi đã xây dựng một pipeline RAG để tìm kiếm tài liệu nội bộ. Nó tiêu tốn của tôi 500 USD chi phí tính toán và nhiều tuần sửa lỗi. Kết quả rất tệ. Người dùng nhận được câu trả lời sai và các truy vấn thì chậm chạp.

Tôi đã kiểm tra lại pipeline. Tôi tìm thấy 7 sai lầm. Việc khắc phục chúng đã thay đổi mọi thứ.

  1. Chia nhỏ token cố định (Fixed Token Chunking) Tôi đã chia nhỏ tài liệu theo mỗi 512 token. Điều này làm mất ngữ cảnh. Một lời giải thích về API có thể bị ngắt ngay giữa câu. LLM nhận được các mảnh vụn và đưa ra những câu trả lời vô nghĩa. Cách khắc phục: Sử dụng semantic chunking.
  • Chia nhỏ theo các ranh giới tự nhiên như đoạn văn hoặc tiêu đề.
  • Sử dụng parent-document retrieval.
  • Tạo các chunk con nhỏ để tìm kiếm.
  • Trả về toàn bộ tài liệu cha cho LLM.
  • Thêm 10-20% phần chồng lấp (overlap) giữa các chunk.
  1. Trọng số tìm kiếm Hybrid không hợp lý Tôi đã sử dụng tỷ lệ chia 50/50 cho tìm kiếm vector và tìm kiếm từ khóa. Điều này thất bại đối với các tài liệu kỹ thuật. Người dùng kỹ thuật cần các kết quả khớp chính xác từ khóa. Cách khắc phục: Sử dụng trọng số động.
  • Truy vấn thực tế: 35% vector, 65% từ khóa.
  • Truy vấn ngữ nghĩa: 75% vector, 25% từ khóa.
  • Truy vấn chung: 60% vector, 40% từ khóa.
  1. Tinh chỉnh quá mức các tham số HNSW Tôi đã đặt ef_construction lên mức tối đa. Điều này làm sập máy chủ của tôi. Nó đã chiếm dụng toàn bộ RAM hiện có. Cách khắc phục: Sử dụng các tham số phù hợp.
  • Đặt M trong khoảng từ 8 đến 32.
  • Đặt ef_construction là 200.
  • Đặt ef_search là 50. Mức sử dụng bộ nhớ đã giảm 70%.
  1. Sử dụng các mô hình Embedding chung chung Tôi đã sử dụng một mô hình được huấn luyện trên Wikipedia. Trong khi tài liệu của tôi là các sổ tay hướng dẫn kỹ thuật (engineering runbooks). Mô hình không hiểu được lĩnh vực chuyên môn của tôi.

Kết quả sau khi khắc phục:

  • Độ liên quan của câu trả lời: 45% lên 85%
  • Độ trễ: 3.2s xuống 1.8s
  • Chi phí hàng tháng: $180 xuống $95

Khắc phục chunking trước. Sau đó là weights. Tiếp theo là chất lượng embedding.

Nguồn: https://dev.to/kollittle/i-spent-500-on-rag-infrastructure-before-realizing-these-7-mistakes-were-killing-my-results-iph