RAG patterns (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

RAG Patterns (tiếng Anh: RAG Patterns) — là tập hợp các phương pháp kiến trúc và phương pháp luận để xây dựng các hệ thống Retrieval-Augmented Generation (RAG). Các mẫu này được thiết kế để giải quyết các vấn đề cơ bản của các mô hình ngôn ngữ lớn (LLM), chẳng hạn như ảo giác, kiến thức lỗi thời và thiếu tính đặc thù theo lĩnh vực, bằng cách tích hợp LLM với các nguồn dữ liệu bên ngoài có thể truy cập động[1]. Quá trình phát triển của RAG đã đi từ các pipeline tuyến tính đơn giản đến các hệ thống mô-đun và tác nhân phức tạp[2].

Các mẫu RAG cơ bản

Cùng với sự phát triển của công nghệ, nhiều RAG Pattern đã xuất hiện, mỗi mẫu giải quyết các bài toán nhất định và có những sự đánh đổi riêng giữa chất lượng, tốc độ và chi phí.

  • Classic RAG (RAG Cổ điển) — phương pháp cơ bản, trong đó truy vấn của người dùng được vector hóa để tìm kiếm các đoạn văn bản (chunk) liên quan trong cơ sở dữ liệu vector; các chunk tìm được sẽ được đưa vào LLM cùng với câu hỏi để tạo ra câu trả lời[1].
  • Multi‑Query RAG (Đa truy vấn) — LLM tạo ra nhiều biến thể diễn đạt lại/làm rõ truy vấn gốc; tìm kiếm được thực hiện trên tất cả các biến thể, kết quả được hợp nhất, giúp tăng độ bao phủ (recall)[3].
  • HyDE (Hypothetical Document Expansion) — để vượt qua "khoảng cách ngữ nghĩa" giữa truy vấn ngắn và tài liệu dài. LLM trước tiên tạo ra một tài liệu-câu trả lời "giả thuyết", sau đó embedding của nó được sử dụng để tìm kiếm, thường cải thiện chất lượng truy xuất[4].
  • Hybrid Retrieval (Tìm kiếm lai) — kết hợp tìm kiếm ngữ nghĩa (vector) và tìm kiếm từ vựng (BM25). Các sơ đồ lai đã trở thành tiêu chuẩn cho các hệ thống production: tìm kiếm vector bao phủ các kết quả khớp về nghĩa, còn BM25 tìm các thuật ngữ/ID/từ viết tắt chính xác; kết quả được hợp nhất bằng fusion[5][6][7].
  • Re‑ranking (Xếp hạng lại) — quy trình hai giai đoạn: bộ truy xuất nhanh trả về tập hợp các ứng viên (ví dụ: top‑100), sau đó bộ cross-encoder (hoặc reranker khác) tính toán lại độ liên quan và chọn ra các kết quả tốt nhất (ví dụ: top‑5) cho LLM[8][9].
  • Query Routing (Định tuyến truy vấn) — trong các hệ thống có nhiều nguồn dữ liệu không đồng nhất (các index/cơ sở dữ liệu/API khác nhau), truy vấn được định hướng đến nguồn tốt nhất bằng bộ định tuyến (LLM-selector hoặc bộ phân loại); bao gồm các chiến lược fallback[10].
  • Agentic/Web RAG (RAG tác nhân) — LLM đóng vai trò như một tác nhân: phân rã các câu hỏi phức tạp, lập kế hoạch các vòng lặp và sử dụng các công cụ (tìm kiếm vector, tìm kiếm web) với phản hồi ngược. Cách triển khai điển hình là mô hình ReAct[11]; đối với thu thập định hướng web và trích dẫn bắt buộc, xem WebGPT[12].

Các mô hình liên quan và đang phát triển

  • GraphRAG (RAG Đồ thị) — sử dụng đồ thị tri thức làm nguồn và cơ chế lựa chọn ngữ cảnh; tìm kiếm dựa trên cấu trúc liên kết giữa các thực thể và văn bản, nâng cao khả năng diễn giải và chất lượng trên các câu hỏi multi‑hop[13][14].
  • MM‑RAG (RAG Đa phương thức) — làm việc với văn bản và các nguồn hình ảnh (bản quét/sơ đồ/bảng biểu). Ví dụ: VisRAG minh họa cách truy xuất và tạo sinh định hướng VLM trên các tài liệu đa phương thức[15].
  • Packaging & Context Handling (Đóng gói ngữ cảnh) — các cách tích hợp các chunk đã tìm được vào prompt: Stuff, Map‑Reduce, Refine, Tree‑of‑Chunks (RAPTOR)[16].

Bảng so sánh các mẫu

So sánh các RAG Pattern chính
Mẫu Khi nào áp dụng Ảnh hưởng đến chất lượng Chi phí / Độ trễ Rủi ro và hạn chế
Classic RAG PoC và Q&A đơn giản trên cơ sở dữ liệu đồng nhất Mức cơ bản; phụ thuộc nhiều vào embedding[1] Thấp Nhạy cảm với cách diễn đạt; rủi ro ngữ cảnh không liên quan
Hybrid Retrieval Trong hầu hết các kịch bản production; nhiều mã/từ viết tắt/ID Tăng độ bao phủ; bao gồm các thuật ngữ chính xác[5][6][7] Thấp/Trung bình Điều chỉnh trọng số fusion; hai index
Re‑ranking Quan trọng khi độ chính xác cao là ưu tiên Cải thiện đáng kể precision trên top‑k[8][9] Trung bình/Cao Độ trễ/chi phí bổ sung
Multi‑Query Truy vấn ngắn/đa chiều Tăng recall[3] Trung bình Các diễn đạt lại thừa/nhiễu
HyDE Truy vấn ngắn/mơ hồ với "khoảng cách ngữ nghĩa" lớn Cải thiện chất lượng truy xuất zero‑shot[4] Trung bình Phụ thuộc vào chất lượng văn bản "giả thuyết"
Query Routing Nhiều nguồn (cơ sở tài liệu, SQL, API, web) Tăng độ liên quan nhờ chọn đúng nguồn[10] Trung bình Lỗi định tuyến = thất bại tìm kiếm
Agentic/Web RAG Truy vấn phức tạp, nghiên cứu, nhiều bước Giải quyết các bài toán ngoài phạm vi pipeline tuyến tính[11][12] Cao Độ phức tạp, rủi ro vòng lặp vô hạn; cần guardrail

Triển khai thực tế và kiến trúc

Các giai đoạn triển khai

  1. Proof of Concept (PoC): Bắt đầu với Classic RAG trên tập dữ liệu giới hạn nhưng mang tính đại diện để kiểm tra chất lượng embedding và khả năng truy xuất cơ bản[1].
  2. Minimum Viable Product (MVP): Triển khai Hybrid RetrievalRe‑ranking như sự cân bằng tốt nhất giữa "nỗ lực/hiệu quả"[5][8].
  3. Production: Thêm các phép biến đổi truy vấn (HyDE, Multi‑Query) và Query Routing khi cần thiết; thiết lập observability (ghi nhật ký truy xuất/rerank/câu trả lời) và A/B testing[3][10].

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

  • Chunking (Phân đoạn): Một trong những yếu tố quan trọng nhất ảnh hưởng đến chất lượng. Kích thước cố định đơn giản thường làm gián đoạn các đơn vị ngữ nghĩa. Nên dùng các bộ chia theo cấu trúc (theo đánh dấu) hoặc đệ quy (đoạn văn → câu → từ)[17][18].
  • Embedding và metadata: Lưu trữ cùng mỗi chunk: document_id, trang/phần, tiêu đề, ngày tháng; điều này cần thiết để lọc và trích dẫn nguồn chính xác.
  • Truy xuất lai và rerank: Sử dụng BM25+vector với fusion (hoặc RRF), sau đó cross-encoder để xếp hạng lại trên pool ứng viên nhỏ[5][6][8].
  • Đóng gói ngữ cảnh: Chọn Map‑Reduce, Refine hoặc Tree‑of‑Chunks cho các kho ngữ liệu dài[16][18].

Các lỗi phổ biến (anti-pattern)

  • Chỉ dùng tìm kiếm vector mà không có BM25 → thất bại với mã/ID/từ viết tắt[5][7].
  • Chunk quá lớn/nhỏ → mất ngữ cảnh hoặc "làm loãng" embedding[17].
  • Không có rerank trong production → LLM nhận ngữ cảnh nhiễu[8].
  • Không có observability và truy vết nguồn → không thể phân tích nguyên nhân lỗi (xem đánh giá RAG).

Đánh giá chất lượng và các chỉ số

Việc đánh giá được thực hiện ở cấp độ truy xuất (offline) và end‑to‑end (tạo sinh).

Các chỉ số của bộ truy xuất

  • Hit Rate, Recall@k, MRR — độ bao phủ và vị trí của các tài liệu liên quan.
  • Context Precision & Recall — mức độ ngữ cảnh được truy xuất không có "nhiễu" và bao phủ đầy đủ những gì cần thiết (được triển khai trong RAGAS)[19].

Các chỉ số của bộ tạo sinh (end‑to‑end)

  • Faithfulness / Groundedness — sự phù hợp của câu trả lời với ngữ cảnh được cung cấp.
  • Answer Relevancy (Độ liên quan của câu trả lời) — sự phù hợp với câu hỏi gốc.

Để tự động hóa các chỉ số, người ta sử dụng các framework mã nguồn mở: RAGAS, TruLens (RAG triad: context relevance, groundedness, answer relevance), DeepEval[20][21].

Xem thêm

  • Retrieval-Augmented Generation (RAG)
  • Cơ sở dữ liệu vector
  • Embedding
  • AI-agent
  • GraphRAG
  • MM-RAG
  • Đánh giá và benchmark LLM

Tài liệu tham khảo

  • Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  • Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  • Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels (HyDE). ACL 2023. ACL Anthology; arXiv:2212.10496.
  • Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  • Weaviate Docs. Hybrid search (BM25+Vector). [1].
  • Qdrant Docs. Hybrid Queries. [2].
  • Milvus Docs. Full‑Text Search / Hybrid Search. [3] / [4].
  • LangChain Docs. MultiQueryRetriever. [5].
  • Cohere Docs. Rerank — best practices. [6].
  • LlamaIndex Docs. Routing (query routers/selectors). [7].
  • Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR. arXiv:2210.03629.
  • Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  • Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. (2024). [8].
  • Microsoft Research. Project GraphRAG. (2024). [9].
  • Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594.
  • Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  • Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). [10].
  • TruLens Docs. RAG Triad. [11].
  • DeepEval (GitHub). The LLM Evaluation Framework. [12].
  • LangChain Docs. RecursiveCharacterTextSplitter. [13].
  • LlamaIndex Docs. HierarchicalNodeParser; Response Synthesis (Tree/Refine). [14]; [15].

Ghi chú

  1. 1.0 1.1 1.2 1.3 Lewis, P., Perez, E., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  2. Fan, W., Ding, Y., et al. (2024). A Survey on RAG Meeting LLMs: Towards Retrieval-Augmented Large Language Models. KDD. DOI:10.1145/3637528.3671470; arXiv:2405.06211.
  3. 3.0 3.1 3.2 LangChain Docs. MultiQueryRetriever. https://python.langchain.com/docs/how_to/MultiQueryRetriever/
  4. 4.0 4.1 Gao, L., Ma, X., Lin, J., Callan, J. (2023). Precise Zero‑Shot Dense Retrieval without Relevance Labels. ACL 2023. arXiv:2212.10496; ACL Anthology: 2023.acl‑long.99.
  5. 5.0 5.1 5.2 5.3 5.4 Weaviate Docs. Hybrid search (BM25+Vector). https://docs.weaviate.io/weaviate/concepts/search/hybrid-search
  6. 6.0 6.1 6.2 Qdrant Docs. Hybrid Queries. https://qdrant.tech/documentation/concepts/hybrid-queries/
  7. 7.0 7.1 7.2 Milvus Docs. Full‑Text Search и Hybrid Search. https://milvus.io/docs/full-text-search.md; https://milvus.io/docs/hybrid_search_with_milvus.md
  8. 8.0 8.1 8.2 8.3 8.4 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085.
  9. 9.0 9.1 Cohere Docs. Rerank — best practices. https://docs.cohere.com/docs/reranking-best-practices
  10. 10.0 10.1 10.2 LlamaIndex Docs. Routing (query routers/selectors). https://docs.llamaindex.ai/en/stable/module_guides/querying/router/
  11. 11.0 11.1 Yao, S., et al. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
  12. 12.0 12.1 Nakano, R., et al. (2021). WebGPT: Browser‑assisted question‑answering with human feedback. arXiv:2112.09332.
  13. Microsoft Research Blog. GraphRAG: Unlocking LLM discovery on narrative private data. 2024. https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
  14. Microsoft Research. Project GraphRAG. https://www.microsoft.com/en-us/research/project/graphrag/
  15. Yu, S., et al. (2024). VisRAG: Vision‑based Retrieval‑augmented Generation on Multi‑modality Documents. arXiv:2410.10594; OpenReview: zG459X3Xge.
  16. 16.0 16.1 Sarthi, P., et al. (2024). RAPTOR: Recursive Abstractive Processing for Tree‑Organized Retrieval. arXiv:2401.18059.
  17. 17.0 17.1 LangChain Docs. RecursiveCharacterTextSplitter. https://python.langchain.com/docs/how_to/recursive_text_splitter/
  18. 18.0 18.1 LlamaIndex Docs. HierarchicalNodeParser и Tree Summarization. https://docs.llamaindex.ai/en/stable/api/llama_index.core.node_parser.HierarchicalNodeParser.html; https://docs.llamaindex.ai/en/stable/examples/low_level/response_synthesis/
  19. Es, S., et al. (2024). RAGAs: Automated Evaluation of Retrieval Augmented Generation. EACL (Demo). https://aclanthology.org/2024.eacl-demo.16/
  20. TruLens Docs. RAG Triad. https://www.trulens.org/getting_started/core_concepts/rag_triad/
  21. DeepEval (GitHub). https://github.com/confident-ai/deepeval