📘 Chương 6: Ứng dụng RAG trong Tìm kiếm Nâng cao
(Kết hợp giữa AI và
Search)
6.1 Tại sao cần kết hợp tìm kiếm và AI sinh nội dung?
Các hệ thống tìm kiếm truyền thống (như Google,
Elasticsearch) sử dụng phương pháp dựa trên từ khóa hoặc biểu thức boolean. Tuy
nhiên, chúng có giới hạn rõ ràng:
- Trả
về kết quả dạng danh sách link, không có tóm tắt hoặc diễn giải.
- Không
hỗ trợ truy vấn ngôn ngữ tự nhiên tốt.
- Khó
tùy biến phản hồi cho từng người dùng cụ thể.
Giải pháp: Kết hợp LLM + Truy xuất → RAG.
🌟 Ưu điểm của tìm kiếm
tăng cường RAG
Ưu điểm |
Mô tả |
🎯
Truy vấn ngôn ngữ tự nhiên |
Không cần biết
từ khóa kỹ thuật hay cú pháp đặc biệt. |
🧠
Tổng hợp phản hồi có ý nghĩa |
Tạo câu trả lời
tổng hợp, súc tích thay vì chỉ liệt kê link. |
🔍
Truy xuất theo ngữ nghĩa (semantic) |
Tìm kết quả
theo ý nghĩa, không chỉ dựa vào từ khóa trùng khớp. |
🛠️
Tuỳ biến theo ngành/lĩnh vực |
Dễ triển khai
với dữ liệu riêng (y tế, pháp lý, học thuật, nội bộ công ty...). |
6.2 Pipeline RAG cho hệ thống tìm kiếm
🔁 Quy trình cơ bản:
- Người
dùng nhập câu hỏi bằng ngôn ngữ tự nhiên.
- Câu
hỏi được embedding → tìm kiếm các đoạn văn phù hợp trong vector DB.
- Các
đoạn liên quan được trích xuất và gộp thành ngữ cảnh.
- LLM tổng
hợp câu trả lời ngắn gọn và có trích dẫn.
- Kết
quả hiển thị kèm nguồn, link hoặc đoạn văn minh họa.
💡 Ví dụ: Hỏi về lịch sử
chiến tranh Việt Nam
- Câu
hỏi: "Những nguyên nhân chính dẫn đến chiến tranh Việt Nam là
gì?"
- RAG
truy xuất từ tài liệu học thuật, sách lịch sử.
- LLM
tổng hợp: "Nguyên nhân gồm hậu quả của chiến tranh thế giới, xung đột
ý thức hệ giữa Mỹ và Liên Xô, cùng mong muốn thống nhất đất nước của Việt
Nam."
6.3 Các mô hình tìm kiếm truyền thống vs RAG
Tiêu chí |
Tìm kiếm cổ
điển |
RAG |
Đầu vào |
Từ khóa |
Ngôn ngữ tự
nhiên |
Kết quả |
Link hoặc đoạn
văn thô |
Câu trả lời tổng
hợp |
Hiểu nghĩa |
Hạn chế |
Có nhờ
embedding |
Tùy biến |
Khó |
Linh hoạt, có
thể huấn luyện riêng |
Tóm tắt |
Không |
Có |
Tên công cụ |
Mô tả |
Haystack |
Framework mạnh
cho tìm kiếm QA, hỗ trợ Hugging Face & OpenAI |
LangChain
+ OpenAI |
Tạo hệ thống
QA tích hợp tìm kiếm ngữ nghĩa |
Elastic +
OpenAI plugin |
Tích hợp LLM
vào Elasticsearch |
LlamaIndex
(GPT Index) |
Tạo index văn
bản và thực hiện QA hiệu quả |
🧱 Xây dựng hệ thống: Ví dụ LangChain
Python:
from langchain.vectorstores
import FAISS
from langchain.embeddings import
OpenAIEmbeddings
from langchain.chains import
RetrievalQA
from langchain.chat_models import
ChatOpenAI
from langchain.document_loaders
import TextLoader
# Tải dữ liệu và tạo vector index
loader =
TextLoader("legal_docs.txt")
docs = loader.load()
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(docs,
embeddings)
# Thiết lập truy vấn ngữ nghĩa +
LLM
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(),
retriever=db.as_retriever()
)
# Truy vấn
print(qa.run("Điều kiện để một
hợp đồng vô hiệu tại Việt Nam là gì?"))
6.4 Tăng hiệu quả tìm kiếm với chiến lược nâng cao
✅ 1. Truy vấn lại (Query
Expansion)
- Thêm
từ đồng nghĩa, từ liên quan → tăng độ bao phủ.
- Ví dụ:
"Viêm họng" → mở rộng thành ["viêm họng", "đau họng",
"sưng cổ họng"].
✅ 2. Reranking
- Sau
khi truy xuất top-k đoạn văn, dùng mô hình học sâu để đánh giá lại độ
liên quan.
- Mô
hình tiêu biểu: monoT5, Cross-Encoder.
✅ 3. Highlight kết quả có dẫn nguồn
- RAG
cho phép chèn trích dẫn hoặc link trực tiếp vào câu trả lời:
“Nguyên nhân bao gồm yếu tố địa chính trị (Nguồn: Bách Khoa
Toàn Thư 2021).”
✅ 4. Cá nhân hóa kết quả
- Dựa
vào lịch sử tìm kiếm, hồ sơ người dùng → điều chỉnh phản hồi phù hợp.
🛡️ 6.5 Thách thức khi ứng
dụng RAG trong tìm kiếm
Thách thức |
Mô tả |
Chất lượng
dữ liệu |
Nếu dữ liệu
truy xuất sai, mô hình sẽ sinh sai. |
Giới hạn
token |
Dữ liệu truy
xuất + prompt phải nằm trong ngưỡng cho phép. |
Tính đúng
đắn |
Mô hình vẫn
có thể "bịa" dù đã truy xuất đúng. |
Tốc độ phản
hồi |
Truy xuất +
sinh nội dung mất nhiều thời gian hơn tìm kiếm truyền thống. |
✅ Tóm tắt Chương 6
Nội dung |
Mô tả |
Mục tiêu |
Cải thiện hệ
thống tìm kiếm bằng RAG |
Ưu điểm |
Hiểu ngôn ngữ
tự nhiên, trả lời có ngữ cảnh, trích dẫn nguồn |
Công cụ |
LangChain,
LlamaIndex, Haystack, Elastic + LLM |
Chiến lược |
Rerank, query
expansion, cá nhân hóa |
Hạn chế |
Tốc độ, chất
lượng dữ liệu, giới hạn token |
Tham khảo Chương 5
Post a Comment