📖 Nội dung bài học
Bật/Tắt tiếngm Video này đang được xử lý. Vui lòng quay lại sau và tải lại trang.
Tóm tắt
Truy xuất theo ngữ cảnh (Contextual retrieval) là một kỹ thuật giúp cải thiện độ chính xác của pipeline RAG bằng cách giải quyết một vấn đề cơ bản: khi bạn chia nhỏ tài liệu thành các đoạn (chunks), mỗi đoạn sẽ mất đi mối liên hệ với ngữ cảnh rộng hơn của tài liệu đó.
Vấn đề với việc chia nhỏ dữ liệu tiêu chuẩn (Standard Chunking)
Khi bạn lấy một tài liệu nguồn và chia nó thành các đoạn để đưa vào vector database, mỗi mảnh riêng lẻ sẽ không còn biết nó đến từ đâu hoặc liên quan như thế nào đến phần còn lại của tài liệu. Điều này có thể làm giảm độ chính xác truy xuất (retrieval accuracy) vì các đoạn văn bản thiếu thông tin ngữ cảnh quan trọng.

Cách Contextual Retrieval hoạt động
Contextual retrieval thêm một bước tiền xử lý trước khi đưa các đoạn văn bản vào retriever database của bạn. Quy trình như sau:
- Lấy từng đoạn văn bản riêng lẻ và tài liệu nguồn gốc.
- Gửi cả hai cho Claude với một prompt cụ thể yêu cầu mô hình thêm ngữ cảnh.
- Claude tạo ra một đoạn văn ngắn giúp "định vị" đoạn văn bản đó trong tài liệu lớn hơn.
- Kết hợp ngữ cảnh này với đoạn văn bản gốc để tạo thành một "đoạn văn bản đã được thêm ngữ cảnh" (contextualized chunk).
- Sử dụng contextualized chunk này trong các index vector và BM25 indexes của bạn.

Ví dụ, nếu bạn có một phần về kỹ thuật phần mềm đề cập đến một sự cố năm 2023, Claude có thể tạo ngữ cảnh như: "Phần này trích từ một báo cáo lớn về một nhóm liên ngành. Nó bao gồm đề cập đến INC-2023-04-011, sự cố này cũng được nhắc đến trong phần Phân tích An ninh mạng."

Xử lý tài liệu lớn
Một vấn đề phổ biến là khi tài liệu nguồn của bạn quá lớn, không thể đưa vừa vào context window của Claude. Bạn vẫn có thể sử dụng contextual retrieval bằng cách cung cấp một bộ ngữ cảnh rút gọn:

Thay vì đưa toàn bộ tài liệu, hãy cung cấp:
- Một vài đoạn từ đầu tài liệu (thường chứa phần tóm tắt hoặc giới thiệu).
- Các đoạn văn bản ngay trước đoạn mà bạn đang cần thêm ngữ cảnh.
Cách tiếp cận này cung cấp cho Claude đủ thông tin để hiểu cấu trúc tài liệu và ngữ cảnh tức thời mà không làm quá tải prompt.
Ví dụ triển khai
Dưới đây là một hàm cơ bản để thêm ngữ cảnh vào các đoạn văn bản:
def add_context(text_chunk, source_text):
prompt = """
Write a short and succinct snippet of text to situate this chunk within the
overall source document for the purposes of improving search retrieval of the chunk.
Here is the original source document:
<document>
{source_text}
</document>
Here is the chunk we want to situate within the whole document:
<chunk>
{text_chunk}
</chunk>
Answer only with the succinct context and nothing else.
"""
messages = []
add_user_message(messages, prompt)
result = chat(messages)
return result["text"] + "\n" + text_chunk
Đối với các tài liệu lớn, bạn có thể triển khai chiến lược chọn các đoạn ngữ cảnh liên quan:
num_start_chunks = 2
num_prev_chunks = 2
for i, chunk in enumerate(chunks):
context_parts = []
# Tập hợp các đoạn đầu tiên từ đầu tài liệu
context_parts.extend(chunks[: min(num_start_chunks, len(chunks))])
# Các đoạn bổ sung đứng trước đoạn hiện tại đang được thêm ngữ cảnh
start_idx = max(0, i - num_prev_chunks)
context_parts.extend(chunks[start_idx:i])
context = "\n".join(context_parts)
contextualized_chunk = add_context(chunk, context)
retriever.add_document({"content": contextualized_chunk})
Khi nào nên dùng Contextual Retrieval
Kỹ thuật này có giá trị nhất khi:
- Tài liệu của bạn có các mối quan hệ nội bộ phức tạp giữa các phần.
- Các đoạn văn bản tham chiếu đến các khái niệm được định nghĩa ở nơi khác trong tài liệu.
- Việc hiểu cấu trúc tài liệu là quan trọng để truy xuất chính xác.
- Bạn đang làm việc với các tài liệu kỹ thuật, báo cáo hoặc bài báo khoa học.
Mặc dù contextual retrieval làm tăng thời gian xử lý và chi phí (do bạn phải gọi API bổ sung), nó có thể cải thiện đáng kể độ chính xác truy xuất cho các tài liệu phức tạp nơi ngữ cảnh đóng vai trò quan trọng.
Tải xuống
🔁 Bài học liên quan
- Bài tiếp: Quiz on Retrieval Augmented Generation
- Bài trước: Reranking results
- Cùng section: Making a request · Multi-turn conversations · Chat exercise
- Thuộc lộ trình: Path C
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/claude-with-google-vertex/289187
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: 2026-04-23 · Chuẩn hoá: 2026-05-01