RAG Flow
date
Apr 2, 2026
slug
rag-flow
status
Published
tags
AI
summary
Tìm hiểu về Retrieval Augmented Generation (RAG)
type
Post

Tìm hiểu về Retrieval Augmented Generation (RAG)
Tổng quan
Chúng ta có thể hiểu nôm na RAG trong thời đại LLMs như sau:
- Retrieval-Augmented Generation (RAG) là một kỹ thuật giúp nâng cao khả năng của mô hình sinh (language model generation) kết hợp với tri thức bên ngoài (external knowledge)
- Phương pháp này thực hiện bằng cách truy xuất thông tin liên quan từ kho tài liệu (tri thức) và sử dụng chúng cho quá trình sinh câu trả lời dựa trên LLMs.
Sự nổi lên của RAG
- Trong sự ra đời của các mô hình ngôn ngữ lớn (LLMs) như ChatGPT, LLama-2, Qwen, Mistral,... rất hay gặp vấn đề ảo giác, trong từ điển chuyên ngành gọi là hallucination, khi đó các mô hình sinh ra những câu văn nghe rất trôi chảy và hợp lý, nhưng trong thực tế nó lại không chính xác. Chính vì đó là nguồn cảm hứng cho việc kỹ thuật RAG ra đời và như là một phương pháp để giải quyết vấn đã nêu.
- Trong nhiều trường hợp, khi các doanh nghiệp, công ty có những nguồn tài liệu độc quyền, chẳng hạn như tài liệu sổ tay kỹ thuật, tài liệu hướng dẫn sử dụng của các sản phẩm của họ, ... Với các dạng tài liệu lớn và riêng biệt như vậy, việc yêu cầu các mô hình ngôn ngữ lớn trích xuất thông tin cụ thể từ nội dung đồ sộ này chẳng khác nào là mò kim đáy bể.
- Gần đây, OpenAI cũng giới thiệu mô hình mới là GPT-4 có khả năng xử lý các tài liệu lớn, có khả năng giải quyết nhu cầu này. Tuy nhiên, mô hình này không hoàn toàn hiệu quả do hiện tượng mất đi những thông tin context ở giữa (Lost in its the middle).
- Để giải quyết các vấn đề này, một phương pháp thay thế được gọi là Retrieval-Augmented Generation (RAG) được phát triển. Phương pháp này liên quan tới việc tạo chỉ mục cho mỗi đoạn văn trong tài liệu (document). Khi một truy vấn (query) được thực hiện sẽ truy xuất các đoạn văn liên quan nhất và sau đó đưa vào mô hình ngôn ngữ lớn như ChatGPT, GPT-4, ... Chiến lược chỉ cung cấp các đoạn văn có chọn lọc, thay vì toàn bộ tài liệu ngăn chặn tình trạng quá tải thông tin cho LLM và nâng cao chất lượng đáng kể.
Mô hình Neural Retrieval
Trước khi nhảy vào hiểu về RAG, chúng ta dành thời gian hiểu chút một cách tổng quan về mô hình neural retrieval.
- Mô hình Neural Retrieval là một loại mô hình truy xuất thông tin sử dụng mạng nơ-ron (neural network) để tìm kiếm các đoạn văn (chunks) trong tài liệu (documents) liên quan dựa trên câu truy vấn (query). Chúng mã hóa (encode) câu query và các chunks trong các documents thành các biểu diễn vector, gọi là dense vector và tính toán mức độ tương đồng giữa chúng. Điều này cho phép chúng nắm bắt được sự liên quan về cả ngữ nghĩa thay chỉ vì sự kết hợp từ vựng với nhau.
- Neural Retrieval là sự phát triển đáng kể từ các hệ thống retrieval dựa trên từ khóa (keyword-based) sang hệ thống truy xuất thông tin hiểu được ý nghĩa và mối quan hệ ngữ nghĩa cơ bản trong dữ liệu.
- Cách Neural Retriever hoạt động:
- Vector Encoding:
- Cả queries và chunks được biến đổi thành vector trong không gian nhiều chiều. Quá trình này được thực hiện bởi bộ mã hóa (encoders) dựa trên neural-network đã được huấn luyện (training) để nắm bắt bản chất ngữ nghĩa của văn bản text.
- Trong quá trình training, những mô hình này thường được tiếp xúc với lượng văn bản lớn, cho phép chúng tìm hiểu các mẫu (patterns) và mối quan hệ giữa các từ và cụm từ.
- Semantic Matching:
- Độ tương đồng giữa các vector của query và chunks được tính toán bằng cách sử dụng các thước đo chẳng hạn như độ tương đồng cosine. Điều này cho phép hệ thống xác định document nào liên quan nhất tới câu query dựa trên ý nghĩa của nội dung thay vì sự trùng lặp về từ khóa.
- Quá trình này có thể nắm bắt các mối quan hệ sắc thái như từ đồng nghĩa, hoặc khái niệm liên quan, mà các phương pháp truyền thống bỏ xót.
- Ưu điểm của Neural Retriever:
- Neural Retriever có thể hiểu ngữ cảnh sử dụng các thuật ngữ, cho phép truy xuất chính xác hơn khi queries và chunks có nghĩa không rõ ràng hoặc đa nghĩa.
- Chúng có khả năng giải quyết với các câu query dài và phức tạp vì chúng có thể nắm bắt được ý định tổng thể thay vì chỉ là các thuật ngữ riêng lẻ.
- Nhiều mô hình Neural Retiever được huấn luyện trên các bộ dữ liệu đa ngôn ngữ (multilingual), cho phép chúng xử lý các câu query trong nhiều ngôn ngữ hiệu quả.
- Thách thức:
- Các mô hình nơ-ron, đặc biệt là các mô hình được sử dụng để encode tài liệu lớn đòi hỏi sức mạnh tính toán đáng kể cho quá trình huấn luyện (training) và suy luận (inference).
- Hiệu suất của mô hình Neural Retriever phụ thuộc rất nhiều vào dữ liệu mà chúng được huấn luyện và chúng có khả năng kế thừa những sai lệch có trong dữ liệu huấn luyện.
- Việc lưu trữ các biểu diễn cho các chunks trong các documents luôn được cập nhật là một thách thức, dặc biệt các nội dung thay đổi linh hoạt.
Retrieval-Augmented Generation (RAG) Pipeline
- Với RAG, LLMs có thể tận dụng tri thức và thông tin mà không nhất thiết phải được lưu trữ trong trọng số mô hình của nó (tức là không chỉ dựa vào những gì nó đã học) bằng cách cung cấp các nguồn tri thức bên ngoài, chẳng hạn như database, sách, báo, website, ...
- Điều này thúc đẩy công cụ truy xuất thông tin (retriever) để tìm kiếm các tri thức liên quan để điều chỉnh LLMs, bằng cách này RAG có thể nâng cao nền tảng tri thức của LLMs với nguồn tri thức bên ngoài.
- Công cụ truy xuất (retriever) ở đây có thể là bất kỳ công cụ nào sau đây tùy thuộc vào nhu cầu về ngữ nghĩa hay không:
- Vector database: Thông thường, các câu query được embed sử dụng mô hình như BERT (Transformers-based) để tạo ra dense vector embedding. Ngoài ra, các phương pháp truyền thống như TF-IDF có thể được sử dụng như là sparse embeddings. Việc tìm kiếm sau đó được tiến hành dựa trên độ tương đồng về ngữ nghĩa (semantic similarity) hoặc tần suất các thuật ngữ (term frequency).
- Graph database: Xây dựng cơ sở tri thức (knowledge base) từ mối quan hệ giữa các thực thể (entity) được trích xuất trong văn bản. Cách tiếp cận này đảm bảo tri thức tính xác, nhưng đòi hỏi truy vấn chính xác, điều này cũng sẽ hạn chế trong một số ứng dụng.
- Regular SQL database: Cung cấp lưu trữ và truy xuất dữ liệu có cấu trúc nhưng có thể thiếu linh hoạt về mặt ngữ nghĩa.
- HÌnh ảnh dưới nói về sự khác biệt giữa việc sử dụng Graph database và Vector database trong RAG. Graph database được cho là ưu tiên hơn cho RAG khi so với Vector database bởi nó chứa những tri thức chính xác cao. Trong khi Vector database chia và indexing dữ liệu sử dụng vector dựa trên LLM để encode, cho phép có khả năng truy xuất thông tin dựa trên ngữ nghĩa nhưng chúng có thể đi kèm theo những thông tin không liên quan dẫn tới sai lệch có thể sảy ra. Mặc khác, Graph database xây dựng một knowledge base từ các mối quan hệ giữa các thực thể được trích xuất trong văn bản, giúp cho việc truy xuất thông tin trở nên ngắn gọn, tuy nhiên đòi hỏi việc các truy vấn phải chính xác với cách dữ liệu được lữu trữ và liên kết. Tức là nếu chúng ta không biết chính xác cách thông tin được cấu trúc và liên kết sẽ gặp khó khăn trong việc truy xuất thông tin mà chúng ta cần.