Chuyển đến nội dung chính

Giải thích về RAGFlow: Xây dựng ứng dụng RAG cho môi trường sản xuất

Hướng dẫn thực tế về RAGFlow, nền tảng mã nguồn mở để xây dựng ứng dụng Retrieval Augmented Generation cho môi trường sản xuất, bao gồm kiến trúc, engine phân tích tài liệu, chiến lược truy xuất, quy trình agent và so sánh với LangChain và LlamaIndex.
Đã cập nhật 12 thg 8, 2026  · 15 phút đọc

Khám phá với AI

ChatGPTClaudePerplexity

Bao nhiêu lần bạn đã dựng một bản demo RAG chạy rất ổn với vài tệp PDF sạch sẽ, nhưng lại không thể trả lời được gì từ tài liệu doanh nghiệp thực tế?

Những gì xảy ra là bảng biểu bị làm phẳng, trang quét biến mất, bộ slide mất tiêu đề, và logic chia khối tách tiêu đề khỏi phần nội dung. Một hệ thống RAG cho môi trường sản xuất khác xa một LLM kèm cơ sở dữ liệu vector. Nó cần phân tích tài liệu, chiến lược chia khối, truy xuất lai, xếp hạng lại, theo dõi trích dẫn, điều phối agent, và hàng nửa tá thành phần khác mà bạn phải tự cấu hình.

RAGFlow là một nền tảng mã nguồn mở kết hợp các mảnh ghép đó thành một stack thống nhất. Nó xử lý phân tích tài liệu chuyên sâu, chia khối dựa trên mẫu, truy xuất lai, quy trình agent, và tích hợp MCP trong cùng một UI và API, nghĩa là bạn có thể dành thời gian cho kho tri thức và không phải lo chuyện khác.

Trong bài viết này, tôi sẽ hướng dẫn bạn cách RAGFlow vận hành phía sau, kiến trúc của nó, so sánh với LangChain và LlamaIndex, và cách triển khai.

Nếu bạn cần ôn lại cách RAG hoạt động, hãy đăng ký khóa học Retrieval Augmented Generation (RAG) with LangChain - bạn có thể nắm vững nền tảng chỉ trong một buổi chiều.

RAGFlow là gì?

RAGFlow là một engine RAG mã nguồn mở do InfiniFlow xây dựng và phát hành theo giấy phép Apache 2.0 vào tháng 4 năm 2024.

Nó được thiết kế cho các ứng dụng AI sản xuất, nơi chất lượng truy xuất quyết định sự thành bại của ứng dụng. Trọng tâm của dự án là hiểu tài liệu ở mức sâu, nghĩa là coi phân tích và chia khối là nền tảng cho mọi bước tiếp theo. Nếu PDF, bảng tính và slide của bạn lộn xộn, thì không reranker hay LLM lớn hơn nào cứu nổi - bạn cần cải thiện chất lượng tài liệu trước tiên.

Điểm khác biệt của RAGFlow so với hầu hết công cụ RAG là nó là một full stack. Bạn có phân tích tài liệu, chia khối dựa trên mẫu, truy xuất lai, xếp hạng lại, theo dõi trích dẫn, trình dựng quy trình agent, và hỗ trợ MCP trong một hệ thống. Bạn không cần chọn cơ sở dữ liệu vector, cấu hình parser, thêm reranker, và dựng UI phía trên - tất cả đều có sẵn sau một giao diện web và API duy nhất.

Điều đó khiến RAGFlow gần với một nền tảng hơn là một framework.

Cách RAGFlow hoạt động

RAGFlow tuân theo pipeline RAG tiêu chuẩn, nhưng mỗi bước là một thành phần có thể cấu hình, thay vì mã bạn phải tự viết.

Quy trình từ lúc bạn tải tài liệu lên đến khi LLM trả lời như sau:

  1. Nạp tài liệu: Bạn tải tệp lên hoặc kết nối nguồn dữ liệu. RAGFlow chấp nhận PDF, tệp Word, bảng tính Excel, bộ slide PowerPoint, Markdown, HTML, hình ảnh và bản quét. Từ v0.25 trở đi, bạn cũng có thể đồng bộ dữ liệu từ Confluence, S3, Notion, Discord và Google Drive.
  2. Phân tích và cấu trúc nội dung: Engine DeepDoc đọc từng tệp với OCR, nhận diện cấu trúc bảng (TSR) và nhận diện bố cục (DLR). Kết quả là nội dung có cấu trúc kèm metadata về tiêu đề, bảng, hình và thứ tự đọc.
  3. Tạo embeddings: RAGFlow chạy từng khối qua mô hình embedding bạn chọn trong cấu hình. Bạn có thể dùng OpenAI, Cohere, Voyage, mô hình cục bộ, hoặc bất kỳ mô hình nào được hỗ trợ.
  4. Lập chỉ mục tri thức: Các khối và vector được đưa vào engine tài liệu. Elasticsearch là mặc định, nhưng bạn có thể chuyển sang Infinity, cơ sở dữ liệu do InfiniFlow xây dựng cho tìm kiếm lai.
  5. Truy xuất ngữ cảnh liên quan: Khi có truy vấn, RAGFlow chạy tìm kiếm vector, tìm kiếm từ khóa BM25 và xếp hạng lại đồng thời. Bạn nhận về các khối hàng đầu kèm trích dẫn đến tài liệu nguồn.
  6. Tạo phản hồi với LLM: Các khối được truy xuất đưa vào prompt, LLM viết câu trả lời, và RAGFlow đính kèm trích dẫn để người dùng lần theo từng nhận định về đoạn nguồn.

Thứ tự không có gì mới. Điều quan trọng là mỗi bước là một phần có thể cấu hình của nền tảng, và bạn có thể kiểm tra đầu ra ở mọi giai đoạn.

Kiến trúc RAGFlow

Kiến trúc của RAGFlow có bốn lớp, và mỗi lớp giải quyết một vấn đề cụ thể trong pipeline RAG. Dưới đây là phần minh họa nhanh:

RAGFlow architecture visualized

Minh họa kiến trúc RAGFlow

Bây giờ tôi sẽ đi qua từng lớp.

Nạp tài liệu

Đây là điểm vào. RAGFlow chấp nhận PDF, tài liệu Office như Word, Excel và PowerPoint, tệp Markdown và trang web. Tài liệu quét và hình ảnh cũng hoạt động vì OCR được tích hợp sẵn.

Bạn có thể tải tệp trực tiếp qua UI, kết nối nguồn đám mây, hoặc đẩy tài liệu qua API. Lớp nạp chuẩn hóa mọi thứ về một định dạng chung trước khi chuyển sang bước tiếp theo.

Xử lý tri thức

Đây là nơi DeepDoc phát huy.

Phân tích chuyển tệp thô thành nội dung có cấu trúc với tiêu đề, đoạn văn, bảng và hình. Chia khối tách nội dung thành đơn vị truy xuất dựa trên mẫu bạn chọn (General, Paper, Book, Q&A, Manual, Table, hoặc Naive). Trích xuất metadata gắn ngữ cảnh cho từng khối, như số trang, tiêu đề phần và vị trí trên trang.

Các khối đi ra từ lớp này giữ nguyên cấu trúc. Nghĩa là bảng vẫn là bảng, tiêu đề đi kèm phần của nó, và chú thích hình đi cùng hình. Nó không ngẫu nhiên như các chiến lược chia khối RAG truyền thống.

Engine truy xuất

Engine truy xuất chạy trên Elasticsearch hoặc Infinity, tùy vào engine tài liệu bạn cấu hình.

Nó chạy song song ba kiểu tìm kiếm:

  • Tìm kiếm vector cho tương đồng ngữ nghĩa
  • Tìm kiếm từ khóa BM25 cho khớp thuật ngữ chính xác
  • Xếp hạng lại trên kết quả gộp để đẩy các khối liên quan nhất lên đầu

Lớp này cung cấp một tập nhỏ các khối chất lượng cao để đưa vào prompt của LLM.

Lớp LLM

Lớp LLM gửi các khối đã truy xuất đến bất kỳ mô hình nào bạn đã kết nối - OpenAI, DeepSeek, Gemini, Claude, mô hình cục bộ qua Ollama, hoặc bất cứ mô hình nào RAGFlow hỗ trợ.

Phản hồi trả về kèm trích dẫn. Mỗi nhận định trong câu trả lời trỏ đến một khối cụ thể, và mỗi khối trỏ đến vị trí cụ thể trong tài liệu nguồn. Đây là điều RAGFlow gọi là câu trả lời có căn cứ - người dùng có thể nhấp vào trích dẫn để xem chính xác đoạn trích, giúp phát hiện ảo giác dễ dàng.

Bốn lớp vận hành như một pipeline. Lớp nạp cấp dữ liệu cho lớp xử lý tri thức, lớp xử lý tri thức cấp cho engine truy xuất, và engine truy xuất cấp cho lớp LLM.

Tính năng chính của RAGFlow

Dưới đây là những tính năng quan trọng nhất khi bạn xây dựng hệ thống RAG trên tài liệu thực tế, lộn xộn.

Phân tích tài liệu nâng cao

Trình phân tích của RAGFlow có tên DeepDoc, và đó là lý do nền tảng này tồn tại.

DeepDoc chạy ba mô hình thị giác trên mỗi tài liệu: OCR để trích xuất văn bản, TSR để nhận diện cấu trúc bảng, và DLR để nhận diện bố cục tài liệu. Thay vì coi PDF là một dòng ký tự, nó đọc tệp như con người - thấy vị trí bảng, điểm ngắt cột, đâu là tiêu đề, đâu là chân trang.

Cấu trúc đó được giữ trong các khối. Bảng đi cùng tiêu đề của chúng, bố cục đa cột được đọc theo đúng thứ tự, và hình giữ nguyên chú thích.

Nếu bạn từng thử làm thủ công, bạn sẽ biết phần này khó thế nào trên nhiều loại tài liệu và ở quy mô lớn.

Truy xuất lai

Tìm kiếm ngữ nghĩa thường bỏ lỡ các truy vấn mà từ ngữ chính xác rất quan trọng. Tìm kiếm từ khóa đơn lẻ lại bỏ lỡ các truy vấn mà ý nghĩa quan trọng nhưng cách diễn đạt khác nhau.

RAGFlow chạy cả hai đồng thời:

  • Tìm kiếm vector bắt các khớp ngữ nghĩa - "revenue" tìm thấy "sales" và "income"
  • Tìm kiếm từ khóa bắt các khớp chính xác - mã sản phẩm hoặc thuật ngữ pháp lý vẫn hiện ra ngay cả khi mô hình embedding không hiểu
  • Xếp hạng lại lấy kết quả kết hợp và sắp xếp lại bằng một mô hình chuyên dụng, để các khối đầu danh sách thực sự liên quan nhất

Trình dựng quy trình

Trình dựng quy trình là một canvas trực quan nơi bạn cấu hình pipeline thay vì viết mã.

Bạn kéo các thành phần lên canvas - truy xuất, xếp hạng lại, LLM, thực thi mã, gọi HTTP, lặp, rẽ nhánh - và kết nối chúng thành một flow. RAGFlow có sẵn các mẫu cho những mô hình phổ biến như Retrieve - Rerank - Answer, Deep Research và Data Analytics.

Với các đội ít kỹ sư, đây là cách họ có thể tạo nguyên mẫu hoạt động trong một tuần.

Hỗ trợ agent

Từ v0.20, RAGFlow hỗ trợ đầy đủ quy trình agent trên cùng một canvas với quy trình thường.

Một thành phần agent có thể lập kế hoạch, phản tỉnh, gọi công cụ, và ủy thác cho sub-agent. Bạn cấu hình prompt và danh sách công cụ, và agent quyết định lúc chạy sẽ gọi công cụ nào, theo thứ tự nào. Công cụ có thể là thành phần tích hợp sẵn, máy chủ MCP bạn kết nối, hoặc các agent khác.

Giá trị ở đây là suy luận dựa trên tri thức đã truy xuất. 

Một agent hỗ trợ có thể truy xuất từ kho tri thức, gọi API ngoài để kiểm tra trạng thái phiếu, và quyết định có cần leo thang hay không. Tất cả thực hiện trong một flow, với trích dẫn đính kèm cho các phần đến từ tài liệu.

Phân tích tài liệu và trích xuất tri thức

Chất lượng truy xuất bắt đầu từ chất lượng phân tích. Nếu phần này làm sai, không reranker hay LLM lớn hơn nào cứu được.

Phần lớn lỗi RAG xảy ra ở cấp tài liệu, nghĩa là một PDF đầy bảng bị trích xuất thành giá trị phân tách bằng dấu phẩy hoặc một bộ slide mất cấu trúc phân cấp trực quan. Khi các khối đó đến cơ sở dữ liệu vector, chúng không còn giá trị.

Cách tiếp cận của RAGFlow là coi phân tích là vấn đề hạng nhất.

Bảng

Bảng là phần khó nhất của phân tích tài liệu. Một parser PDF tiêu chuẩn đọc bảng theo hàng và biến thành một chuỗi con số không có tiêu đề đi kèm. Bạn mất cấu trúc.

DeepDoc chạy Nhận diện Cấu trúc Bảng (TSR) trước khi chia khối. Nó xác định biên bảng, hàng tiêu đề, cột và quan hệ ô. Khi chia tài liệu, bảng được giữ nguyên với tiêu đề, và mỗi hàng giữ ngữ cảnh của nó.

Hình ảnh và bản quét

DeepDoc dùng OCR để trích xuất văn bản từ trang quét, và từ v0.19 trở đi, có thể dùng mô hình thị giác-ngôn ngữ để hiểu hình ảnh trong PDF và tệp DOCX.

Điều đó nghĩa là sơ đồ, biểu đồ, hoặc ảnh hóa đơn có thể trở thành nội dung có thể tìm kiếm.

Bố cục đa cột

Bài báo học thuật và báo cáo tài chính dùng bố cục đa cột. Một parser ngây thơ đọc từ trái sang phải, từng dòng, trộn lẫn cột và tạo ra nội dung vô nghĩa.

DeepDoc dùng Nhận diện Bố cục Tài liệu (DLR) để xác định thứ tự đọc trước. Nó biết cột 1 trước cột 2, và một tiêu đề có thể trải rộng cả hai cột.

Metadata

Mỗi khối đi kèm metadata như số trang, tiêu đề phần, vị trí trên trang và tệp nguồn.

Đây là điều cho phép trích dẫn. Khi LLM trích dẫn một đoạn, RAGFlow có thể trỏ lại đúng trang và vị trí trong tài liệu nguồn. Nó cũng cho phép lọc ở cấp khối - bạn có thể tìm trong một phần cụ thể hoặc một tài liệu cụ thể.

Chất lượng khối

Mảnh ghép cuối là chính việc chia khối. RAGFlow dùng chia khối dựa trên mẫu, nghĩa là bạn chọn mẫu phù hợp loại tài liệu (General, Paper, Book, Q&A, Manual, Table, hoặc Naive).

Mỗi mẫu áp dụng quy tắc khác nhau về vị trí tách. Mẫu Paper giữ tóm tắt, phương pháp và kết quả thành đơn vị riêng. Mẫu Q&A giữ mỗi câu hỏi với câu trả lời. Mẫu Manual tôn trọng tiêu đề và quy trình. Bạn hiểu ý rồi đấy.

Kết quả là các khối có ý nghĩa độc lập. Khi đưa vào cửa sổ ngữ cảnh của LLM, chúng đủ thông tin để trả lời câu hỏi.

Truy xuất trong RAGFlow

Khi tài liệu đã được phân tích và chia khối, bước truy xuất sẽ quyết định LLM có nhìn thấy ngữ cảnh đúng hay không. Engine truy xuất của RAGFlow có ba phần phối hợp.

Truy xuất vector

Tìm kiếm vector bắt tương đồng ngữ nghĩa. Bạn nhúng truy vấn và mỗi khối bằng cùng mô hình, và engine trả về các khối có vector gần vector truy vấn nhất.

Đây là điều cho phép tìm "revenue growth" ra khối về "sales increase" ngay cả khi không thuật ngữ nào xuất hiện trong bên kia. RAGFlow cho phép bạn chọn mô hình embedding - OpenAI, Cohere, Voyage, BGE, hoặc mô hình cục bộ - và thay đổi sau này mà không cần dựng lại toàn hệ thống.

Tìm kiếm lai

Tìm kiếm vector không tối ưu cho thuật ngữ chính xác. Những thứ như mã sản phẩm hoặc tham chiếu pháp lý có thể không có tín hiệu ngữ nghĩa mạnh, nhưng khớp chuỗi chính xác lại rất quan trọng.

RAGFlow chạy tìm kiếm từ khóa BM25 song song với tìm kiếm vector và kết hợp kết quả. Bạn nhận đồng thời khả năng bao quát ngữ nghĩa của embeddings và độ chính xác của khớp từ khóa trong cùng truy vấn.

Xếp hạng lại

Vòng truy xuất đầu tiên cho bạn một tập ứng viên - thường là top 30 hoặc 50 khối. Đó là quá nhiều cho cửa sổ ngữ cảnh của LLM, và phần đầu danh sách thường nhiễu.

Xếp hạng lại lấy các ứng viên đó và sắp xếp lại bằng một mô hình chuyên dụng đọc truy vấn và từng khối cùng nhau. Reranker biết cái gì liên quan đến truy vấn, không chỉ giống với nó. Top 5 hoặc 10 khối sau xếp hạng lại là những khối đưa vào prompt.

Chọn ngữ cảnh

Bước cuối là quyết định những gì đưa vào ngữ cảnh của LLM. RAGFlow cho phép bạn đặt số lượng khối, ngưỡng tương đồng và điểm reranker tối thiểu.

Bạn cũng có thể dùng các tùy chọn nâng cao như RAPTOR (tóm tắt phân cấp cho câu hỏi đa bước) hoặc long-context RAG (mục lục cấp tài liệu được tạo tự động để cung cấp bản đồ tài liệu nguồn cho LLM). Các tùy chọn này dành cho trường hợp truy xuất khối phẳng là chưa đủ.

Mục tiêu của engine truy xuất là cung cấp cho LLM đúng ngữ cảnh cần thiết và chỉ vậy.

RAGFlow so với pipeline RAG truyền thống

Các pipeline RAG truyền thống được ghép từ các công cụ độc lập. Bạn chọn một parser (Unstructured, LlamaParse, PyMuPDF), một bộ chia khối (LangChain text splitters, mã tự viết), một mô hình embedding, một cơ sở dữ liệu vector (Pinecone, Weaviate, Chroma, Qdrant), một reranker (Cohere, BGE), một client LLM, và một UI. Sau đó bạn viết mã để dùng tất cả.

Cách này cho bạn quyền kiểm soát tối đa, nhưng tốn rất nhiều công sức kỹ thuật.

Mỗi điểm tích hợp là mã bạn phải thiết kế, viết, kiểm thử và bảo trì. Khi muốn thêm theo dõi trích dẫn, bạn phải tự xây dựng. Tương tự, khi một thành phần đổi API, bạn phải sửa pipeline.

RAGFlow chọn cách ngược lại.

Đó là một nền tảng tích hợp nơi phân tích, chia khối, truy xuất, xếp hạng lại, trích dẫn, điều phối quy trình và web UI có sẵn. Bạn cấu hình qua giao diện web thay vì viết mã, và các phần đã được kết nối sẵn.

Đổi lại là tính linh hoạt. Nếu bạn muốn thay đổi một thuật toán chia khối mới lạ hoặc một reranker nghiên cứu, bạn sẽ làm trong mô hình plugin của RAGFlow thay vì viết Python. Với hầu hết trường hợp sản xuất, điều đó ổn; nhưng với thử nghiệm nghiên cứu thì có thể thấy bị hạn chế.

Tóm tắt khác biệt:

  RAG truyền thống RAGFlow
Cài đặt Tổ hợp nhiều công cụ Một nền tảng, một lần triển khai
Điều phối Mã tùy chỉnh Trình dựng quy trình trực quan
Công sức kỹ thuật Cao Thấp đến trung bình
Tính linh hoạt Kiểm soát hoàn toàn Bị ràng buộc bởi nền tảng
Thời gian đến kết quả đầu tiên Vài ngày đến vài tuần Vài giờ
Phù hợp nhất cho Pipeline tùy chỉnh hoặc thử nghiệm Hệ thống sản xuất xử lý tài liệu lộn xộn

Không cách nào tốt hơn trong mọi tình huống. Nếu bạn có thời gian kỹ thuật và cần kiểm soát toàn diện, pipeline truyền thống là lựa chọn đúng. Nếu bạn muốn tập trung vào kho tri thức, RAGFlow sẽ nhanh hơn.

RAGFlow so với LangChain và LlamaIndex

Nếu bạn đang cân nhắc RAGFlow, hẳn bạn đã nghe về LangChain và LlamaIndex. Sau đây là cách so sánh.

LangChain

LangChain là một framework ứng dụng cho app LLM. Nhiệm vụ chính là điều phối, tức xâu chuỗi prompt, công cụ, bộ nhớ và mô hình thành quy trình. LangChain không quá quan tâm tài liệu của bạn được phân tích ra sao hay truy xuất thiết lập thế nào. Nó quan tâm đến những gì diễn ra sau truy xuất.

Nếu dự án của bạn nặng về agent - gọi công cụ, suy luận nhiều bước, logic rẽ nhánh, có con người trong vòng lặp - LangChain (và lớp state machine LangGraph) là thứ hầu hết đội ngũ sẽ dùng.

LlamaIndex

LlamaIndex là một framework dữ liệu cho LLM. Trọng tâm là nạp dữ liệu, xây chỉ mục trên dữ liệu đó, và truy vấn hiệu quả. LlamaIndex có 160+ connector dữ liệu, nhiều loại chỉ mục (vector, từ khóa, cây, đồ thị tri thức), và mặc định hợp lý cho chia khối và truy xuất.

Nếu dự án của bạn nặng về truy xuất - nhiều tài liệu, yêu cầu tìm kiếm sâu, và đa dạng hệ thống nguồn - LlamaIndex là lựa chọn code-first mạnh nhất.

RAGFlow

RAGFlow là một nền tảng RAG tích hợp. Nó không phải thư viện bạn import và dùng trong Python - nó là một hệ thống bạn triển khai. Phân tích, chia khối, truy xuất, xếp hạng lại, trích dẫn, quy trình, agent và web UI đi kèm sẵn.

Nếu ưu tiên của bạn là vận hành một hệ thống RAG sản xuất trên tài liệu lộn xộn mà không phải viết pipeline từ đầu, RAGFlow là con đường nhanh nhất.

Ba công cụ này cũng có thể kết hợp. Mẫu phổ biến là LlamaIndex cho nạp liệu, LangChain hoặc LangGraph cho điều phối agent, và RAGFlow khi bạn muốn một stack hoàn chỉnh, tự lưu trữ thay vì mã tự xây.

Sau đây là tổng kết:

  LangChain LlamaIndex RAGFlow
Loại Framework ứng dụng Framework dữ liệu Nền tảng tích hợp
Trọng tâm chính Điều phối, agent Nạp liệu, lập chỉ mục, truy xuất Stack RAG đầu-cuối
Giao diện Thư viện Python / JavaScript Thư viện Python Web UI + API
Phân tích tài liệu Cơ bản (qua tích hợp) Tốt Tốt nhất (DeepDoc)
Hỗ trợ agent Mạnh (LangGraph) Cơ bản (workflows) Mạnh (v0.20+)
Phù hợp nhất cho Ứng dụng nặng về agent Ứng dụng nặng về truy xuất RAG sản xuất xử lý tài liệu lộn xộn
Ngôn ngữ Code-first Code-first Config-first (kèm API)

Xây dựng ứng dụng RAG với RAGFlow

Khi RAGFlow đã chạy, việc xây dựng ứng dụng RAG theo năm bước. Một lần nữa, bạn không viết pipeline, chỉ cấu hình từng bước qua UI hoặc API.

Nạp tài liệu

Bắt đầu bằng cách tải tài liệu của bạn. Bạn có thể thêm tệp qua web UI, kết nối nguồn dữ liệu như Google Drive, S3, Notion, Confluence hoặc Discord, hoặc thêm tệp qua API.

Document ingestion example

Ví dụ nạp tài liệu

RAGFlow chấp nhận hầu hết định dạng phổ biến, vì vậy bạn không cần chuyển đổi trước.

Cấu hình kho tri thức

Một kho tri thức trong RAGFlow là vùng chứa tài liệu, khối và thiết lập. Bạn chọn mẫu chia khối phù hợp loại tài liệu (General cho nội dung hỗn hợp, Paper cho nghiên cứu, Manual cho tài liệu kỹ thuật, Q&A cho phiếu hỗ trợ, v.v.), chọn mô hình embedding và chọn parser.

Knowledge base configuration

Cấu hình kho tri thức

Hãy nhớ bước này quan trọng, vì chọn đúng mẫu sẽ giảm nhiều phiền toái về sau.

Chọn chiến lược truy xuất

Tiếp theo, quyết định cách truy xuất hoạt động. Bạn đặt số lượng khối trả về, ngưỡng tương đồng và chọn dùng tìm kiếm lai hay chỉ vector. Bạn cũng có thể bật xếp hạng lại và chọn mô hình reranker.

Với các trường hợp nâng cao, RAGFlow hỗ trợ RAPTOR cho tóm tắt phân cấp và đồ thị tri thức cho truy xuất dựa trên thực thể. Bạn có thể bật trong cấu hình kho tri thức.

Kết nối LLM

RAGFlow không bao gồm LLM. Bạn tự mang mô hình - OpenAI, DeepSeek, Gemini, Claude, mô hình cục bộ qua Ollama, hoặc bất kỳ mô hình nào RAGFlow hỗ trợ.

Model options

Tùy chọn mô hình

Bạn thêm khóa API trong phần cài đặt, chọn mô hình và đặt system prompt. 

Kiểm thử phản hồi

Bước cuối là kiểm thử. RAGFlow có giao diện chat nơi bạn có thể truy vấn kho tri thức và xem câu trả lời kèm trích dẫn.

Nhấp vào bất kỳ trích dẫn nào, bạn sẽ đến đúng khối với vị trí trong tài liệu nguồn được tô sáng.

Hầu hết đội ngũ sẽ lặp bước này vài lần trước khi câu trả lời dùng được. Điều này bình thường với mọi hệ thống RAG, nhưng với RAGFlow bạn thay đổi cài đặt qua UI thay vì viết lại Python.

Chat configuration example

Ví dụ cấu hình chat

RAGFlow trong môi trường sản xuất

Bạn sẽ thấy RAGFlow được dùng trong sản xuất cho một nhóm trường hợp cụ thể, chủ yếu nơi chất lượng tài liệu và theo dõi trích dẫn là quan trọng nhất.

Kho tri thức doanh nghiệp

Các công ty lớn có hàng nghìn tài liệu nằm rải rác trên ổ dùng chung, Confluence, SharePoint và PDF trong email đính kèm. Nhân viên thường không tìm được thứ họ cần, và hỏi LLM mà không có RAG sẽ sinh ảo giác.

RAGFlow hoạt động tốt ở đây.

Các PDF cũ, tài liệu chính sách đã quét, bảng Excel có pivot table, bộ slide PowerPoint từ nhiều năm trước - tất cả đều được phân tích. Và với trích dẫn, đội pháp lý và tuân thủ có thể tin tưởng câu trả lời, còn web UI giúp người không phải kỹ sư quản lý kho tri thức.

Trợ lý hỗ trợ khách hàng

Đội hỗ trợ có nhiều năm dữ liệu phiếu, FAQ, hướng dẫn sản phẩm và runbook nội bộ. Một trợ lý hỗ trợ cần tìm kiếm toàn bộ, tìm đúng đoạn và biết khi nào cần leo thang.

Mẫu khối Q&A của RAGFlow được tạo ra chính cho việc này. Bạn đưa lịch sử phiếu và nó coi mỗi cặp hỏi-đáp là một đơn vị truy xuất. Nếu thêm lớp agent ở trên, kết nối API tra cứu đơn hàng, bạn sẽ có một trợ lý xử lý câu hỏi thường lệ và chuyển câu khó kèm đầy đủ ngữ cảnh.

Tìm kiếm tài liệu nội bộ

Đội kỹ thuật có runbook, tài liệu kiến trúc, hậu kiểm sự cố và tham chiếu API rải rác trên Notion, Confluence và GitHub. Grep hữu ích cho từ khóa, nhưng không giúp với "chúng ta đã xử lý lần cảnh báo này trước đây thế nào?"

RAGFlow mang lại tìm kiếm ngữ nghĩa trên toàn bộ tập tài liệu kèm trích dẫn về nguồn. Nghĩa là kỹ sư có thể nhận đoạn trích và liên kết đến trang gốc chỉ với một cú nhấp.

Trợ lý nghiên cứu

Đội nghiên cứu làm việc với bài báo, bằng sáng chế, báo cáo và thí nghiệm nội bộ. Mẫu Deep Research trong RAGFlow được thiết kế cho việc này, vì nó có truy xuất nhiều lượt với suy luận chuỗi tư duy, nơi agent phân rã câu hỏi, tìm mảnh ghép câu trả lời và tổng hợp lại.

Với tài chính, pháp lý và nghiên cứu dược, khả năng lần theo mọi nhận định về nguồn là điều khiến trợ lý có thể sử dụng được.

Điểm chung của các trường hợp này là tài liệu mới là phần khó. Nếu dữ liệu nguồn sạch và đơn giản, hầu hết công cụ RAG đều hoạt động. Nếu lộn xộn và có cấu trúc, lớp phân tích của RAGFlow có lẽ đưa bạn đi xa hơn so với việc viết pipeline từ đầu.

Triển khai RAGFlow

RAGFlow cung cấp ba cách triển khai. Sau đây là chi tiết.

Triển khai bằng Docker

Docker Compose là con đường chính. Bạn clone repo, cd vào thư mục docker, và chạy docker compose up -d. Lệnh này khởi động máy chủ RAGFlow cùng Elasticsearch, MinIO, MySQL và Redis.

Cấu hình tối thiểu là 4 nhân CPU, 16 GB RAM và 50 GB đĩa. Thực tế bạn sẽ muốn nhiều RAM hơn nếu chạy bộ sưu tập tài liệu lớn, vì Elasticsearch và Infinity cần nhiều bộ nhớ.

Ảnh Docker nhắm tới x86, nên cần lưu ý. Nếu bạn dùng Apple Silicon hoặc máy ARM64 khác, lớp chuyển dịch sẽ giúp chạy được, nhưng bạn sẽ muốn tự build ảnh theo hướng dẫn ARM64 trong tài liệu RAGFlow để có hiệu năng tốt hơn.

Phát triển cục bộ

Nếu bạn muốn sửa mã nguồn RAGFlow, bạn có thể chạy backend và frontend từ source. Bạn dùng uv cho phụ thuộc Python, chạy docker compose -f docker/docker-compose-base.yml up -d để khởi động các dịch vụ phụ trợ (MinIO, Elasticsearch, MySQL, Redis), rồi khởi động backend bằng script shell và frontend bằng npm run dev.

Cách này chỉ đáng nếu bạn đóng góp cho dự án hoặc gỡ lỗi. Với đa số người dùng, Docker Compose nhanh hơn.

Triển khai trên đám mây

InfiniFlow vận hành phiên bản hosted tại cloud.ragflow.io. Có gói miễn phí với 5 ứng dụng và 500 credit mỗi tháng, và gói trả phí ở mức $29, $129 và giá doanh nghiệp.

Bản cloud phù hợp cho nguyên mẫu và đội nhỏ. Với sản xuất nghiêm túc và dữ liệu nhạy cảm, hầu hết đội sẽ tự lưu trữ trên hạ tầng của mình, hoặc trên một VM đơn cho triển khai nhỏ, hoặc trên Kubernetes dùng Helm chart cho triển khai lớn.

Cân nhắc mở rộng

Triển khai mặc định của RAGFlow chạy mọi thứ trên một máy. Điều đó ổn đến một ngưỡng, sau đó bạn sẽ chạm trần về số lượng tài liệu, tải truy vấn hoặc quy mô đội.

Các phần có thể mở rộng độc lập là engine tài liệu (Elasticsearch hoặc Infinity), lưu trữ đối tượng (MinIO) và chính ứng dụng RAGFlow. Với triển khai lớn, bạn tách các dịch vụ này ra nhiều máy, dùng Elasticsearch quản lý hoặc kho đối tượng tương thích S3, và chạy nhiều instance RAGFlow sau load balancer.

Tăng tốc GPU cho DeepDoc là điều khác nên xem xét. Như bạn biết, phân tích mặc định nặng CPU, nhưng bạn có thể bật chế độ GPU trong cấu hình, tạo khác biệt lớn khi nạp lượng tài liệu lớn.

Phần còn lại là công việc hạ tầng tiêu chuẩn, và RAGFlow không cản trở gì.

Ưu điểm và hạn chế của RAGFlow

Mọi công cụ đều có đánh đổi, RAGFlow cũng vậy. Dưới đây là điều bạn cần biết trước khi dùng.

Ưu điểm

  • Là một nền tảng tích hợp: Bạn không phải chọn parser, cơ sở dữ liệu vector, reranker, chia khối và framework UI rồi viết mã. RAGFlow bao gồm tất cả.
  • Xử lý tài liệu là phần mạnh nhất: DeepDoc xử lý PDF, tệp quét, bảng và bố cục phức tạp tốt hơn đa số lựa chọn khác. Nếu tài liệu của bạn lộn xộn, đây thường là lý do đủ để chọn RAGFlow.
  • Hướng tới sản xuất ngay từ đầu: Trích dẫn có căn cứ, trực quan hóa khối, quy trình agent, hỗ trợ MCP và UI quản trị thực thụ đều tích hợp sẵn. 
  • Mã nguồn mở theo Apache 2.0: Bạn có thể tự lưu trữ, chỉnh sửa mã và chạy trên hạ tầng của mình. Repo GitHub có hơn 80k sao và phát triển tích cực, nên dự án sẽ còn lâu dài.

Hạn chế

  • Triển khai không đơn giản như tưởng: Docker Compose có ích, nhưng bạn vẫn chạy Elasticsearch hoặc Infinity, MinIO, MySQL và Redis cùng ứng dụng. Rồi sẽ có lúc có thứ hỏng, và bạn cần biết Docker đủ để sửa.
  • Yêu cầu hạ tầng: Tối thiểu 16 GB RAM và 4 nhân CPU, nhưng chỉ cho tải nhỏ. Triển khai thực tế cần 32 GB hoặc hơn, đặc biệt nếu dùng Infinity hoặc chạy job nạp lớn. Chạy RAGFlow trên VPS $5 sẽ không hiệu quả.
  • Có đường cong học tập: Trình dựng quy trình mạnh nhưng có nhiều thành phần, và việc tìm mẫu chia khối cùng cài đặt truy xuất phù hợp cần thời gian. Bạn sẽ mất vài ngày để quen trước khi làm việc hiệu quả.

Không điều nào là rào cản nếu RAGFlow phù hợp trường hợp của bạn. Hãy coi đó là cái giá để có một nền tảng thay vì một thư viện.

Ai nên dùng RAGFlow?

RAGFlow không lý tưởng cho mọi dự án. Dưới đây là ai phù hợp và ai nên chọn thứ gọn nhẹ hơn.

Phù hợp nhất

Kỹ sư AI xây dựng hệ thống RAG sản xuất. Nếu công việc của bạn là tạo một ứng dụng RAG chạy được chứ không phải viết thêm thư viện chia khối, RAGFlow loại bỏ phần lớn công việc hạ tầng.

Đội AI doanh nghiệp. Pháp lý, tuân thủ, tài chính và hỗ trợ cần trích dẫn, khả năng truy vết. Một UI mà người không phải kỹ sư có thể dùng cũng là điểm cộng. 

Lập trình viên làm việc với tài liệu lộn xộn. PDF đầy bảng, tệp quét, bố cục đa cột và định dạng hỗn hợp là nơi DeepDoc vượt trội so với đối thủ. Nếu dữ liệu nguồn không phải là văn bản sạch, chất lượng phân tích của RAGFlow rất khó bị vượt.

Tổ chức có bộ sưu tập tài liệu lớn. Khi vượt vài nghìn tài liệu, bạn cần hệ thống có thể nạp, lập chỉ mục và tìm kiếm ở quy mô. RAGFlow là công cụ phù hợp cho công việc này.

Kém phù hợp

Nguyên mẫu chatbot đơn giản. Nếu bạn chỉ cần trả lời từ vài tệp Markdown, RAGFlow là quá mức. Một script LlamaIndex hoặc pipeline LangChain đơn giản sẽ nhanh hơn.

Dự án rất nhỏ. Với hỏi-đáp cá nhân trên vài PDF, chi phí hạ tầng là quá nặng. Bạn sẽ tốn nhiều thời gian cho lệnh Docker hơn là dự án thực tế.

Đội muốn zero-setup. Nếu bạn muốn đăng ký và có RAG chạy được trong năm phút, một dịch vụ hosted hoặc thư viện gọn nhẹ sẽ phù hợp hơn. RAGFlow có bản cloud, nhưng con đường tự lưu trữ (nơi chứa phần lớn giá trị) cần chút công sức thiết lập.

Quy tắc ngón tay cái rất đơn giản. Nếu chất lượng truy xuất trên tài liệu lộn xộn là phần khó của dự án, RAGFlow xứng đáng với chi phí thiết lập. Nếu không, hãy dùng thứ nhẹ hơn.

Kết luận

RAGFlow là một nền tảng full-stack để xây dựng ứng dụng RAG sản xuất trên tài liệu thực tế.

Thế mạnh lớn nhất là xử lý tài liệu, truy xuất, xếp hạng lại và sinh nội dung nằm trong một workflow thay vì ghép từ công cụ riêng lẻ. Bạn có phân tích DeepDoc, truy xuất lai, trích dẫn có căn cứ và quy trình agent sau một UI và API duy nhất.

Nếu tài liệu của bạn lộn xộn và chất lượng truy xuất quan trọng, RAGFlow xứng đáng với chi phí thiết lập.

Hãy bắt đầu với gói cloud miễn phí hoặc triển khai Docker cục bộ, tải lên vài tài liệu “khó nhằn” nhất của bạn và xem câu trả lời trả về thế nào. Đó là cách nhanh nhất để biết nó có phù hợp bài toán của bạn không.

Kiến trúc RAG đơn giản theo thiết kế, nhưng không có nghĩa là không phù hợp với ca phức tạp. Đọc bài viết Advanced RAG Techniques của chúng tôi để tìm hiểu về truy xuất đặc dày, xếp hạng lại và suy luận nhiều bước.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

Ragflow

RAGFlow được dùng để làm gì?

RAGFlow được dùng để xây dựng các ứng dụng Retrieval Augmented Generation trên chính tài liệu của bạn. Doanh nghiệp dùng nó cho kho tri thức, trợ lý hỗ trợ khách hàng, tìm kiếm tài liệu nội bộ và trợ lý nghiên cứu cần trả lời từ PDF, bảng tính, bộ slide và các nguồn lộn xộn khác. Nó cung cấp phân tích tài liệu, truy xuất, xếp hạng lại, trích dẫn và quy trình agent trong một nền tảng thay vì năm công cụ riêng lẻ.

RAGFlow có miễn phí không?

Có. RAGFlow là mã nguồn mở theo giấy phép Apache 2.0, và bạn có thể tự lưu trữ trên hạ tầng của mình mà không tốn chi phí. InfiniFlow cũng vận hành phiên bản hosted với gói miễn phí cho dự án nhỏ và gói trả phí bắt đầu từ $29/tháng cho đội lớn hơn. Hầu hết người dùng sản xuất sẽ tự lưu trữ, đặc biệt khi làm với dữ liệu nhạy cảm.

RAGFlow khác gì so với LangChain hoặc LlamaIndex?

LangChain là framework ứng dụng để xâu chuỗi các cuộc gọi LLM, công cụ và agent. LlamaIndex là framework dữ liệu cho nạp liệu, lập chỉ mục và truy xuất. RAGFlow là một nền tảng hoàn chỉnh, nghĩa là bạn triển khai, cấu hình qua web UI, và có sẵn phân tích, truy xuất, trích dẫn và quy trình mà không cần viết mã pipeline. Bạn cũng có thể kết hợp chúng - LlamaIndex cho nạp liệu, LangChain cho điều phối, và RAGFlow khi bạn muốn toàn bộ stack ở một nơi.

RAGFlow hỗ trợ định dạng tài liệu nào?

RAGFlow hỗ trợ PDF, tệp Word, bảng tính Excel, bộ slide PowerPoint, Markdown, HTML, văn bản thuần, hình ảnh và tài liệu quét. Engine DeepDoc dùng OCR, nhận diện cấu trúc bảng và nhận diện bố cục để phân tích đúng mỗi định dạng, nên bảng giữ nguyên, trang đa cột đọc theo thứ tự đúng, và tệp quét trở nên có thể tìm kiếm. Từ v0.25 trở đi, bạn cũng có thể đồng bộ trực tiếp từ Confluence, S3, Notion, Discord và Google Drive.

Yêu cầu phần cứng tối thiểu để chạy RAGFlow là gì?

Tối thiểu chính thức là 4 nhân CPU, 16 GB RAM, 50 GB đĩa và Docker 24.0 trở lên. Thực tế, bạn sẽ muốn 32 GB RAM hoặc hơn khi lập chỉ mục khối lượng tài liệu thực, vì Elasticsearch (hoặc Infinity), MinIO, MySQL và Redis đều chạy cùng ứng dụng RAGFlow. Tăng tốc GPU cho DeepDoc là tùy chọn nhưng giúp tăng tốc nạp liệu.

Chủ đề
Trí tuệ Nhân tạo

Học với DataCamp

Courses

Retrieval Augmented Generation (RAG) với LangChain

3 giờ
20.2K
Tìm hiểu các phương pháp tiên tiến để tích hợp dữ liệu bên ngoài với LLMs bằng cách sử dụng Retrieval Augmented Generation (RAG) với LangChain.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow