Hướng dẫn kết hợp nhiều nguồn context trong một truy vấn cho AI
- Bài toán thực tế khi xử lý multi-context query
- Kiến trúc Router – vai trò Dispatcher trong pipeline
- Triển khai Router theo hướng Rule-based (YAML/JSON config)
- Triển khai Router theo hướng AI-based (function calling/tool selection)
- Chiến lược hợp nhất context (Context Merging)
- Xử lý bất đồng bộ (Async Handling)
- Công cụ cần có cho dev triển khai
- Kết luận
Trong các hệ thống AI hiện đại, việc chỉ dựa vào một nguồn dữ liệu duy nhất thường không đủ. Người dùng có thể đặt ra những truy vấn cần đồng thời tham chiếu từ nhiều kho tri thức khác nhau. Lúc này, một Router thông minh sẽ đóng vai trò người điều phối giúp AI tự chọn nguồn context phù hợp để đưa ra câu trả lời chính xác, thay vì trộn lẫn mọi dữ liệu.
Bài toán thực tế khi xử lý multi-context query
Trong hệ thống AI production, dữ liệu của doanh nghiệp hiếm khi nằm trong một chỗ. Bạn có thể có:
- CRM để lưu khách hàng.
- CDP để lưu lịch sử hành vi.
- Product DB để quản lý sản phẩm.
- Knowledge base (Notion, Confluence, Google Drive).
- Vector DB chứa tài liệu đã embedding.
Nếu user đặt câu hỏi: “Cho tôi báo giá sản phẩm X, và kiểm tra xem tài khoản của tôi có ưu đãi không?” → ta cần 2 nguồn context khác nhau: Product DB (lấy giá) + CRM/CDP (lấy thông tin ưu đãi). Nếu không có Router, bạn chỉ biết ném hết mọi context vào LLM → token bloat, tốc độ chậm, đôi khi model nhiễu và trả lời sai.
Kiến trúc Router – vai trò Dispatcher trong pipeline
Router đóng vai trò dispatcher trong pipeline. Luồng cơ bản sẽ gồm 6 bước sau:
1. Nhận input query: Người dùng gõ câu hỏi → API backend nhận → gửi sang Router.
2. Phân tích intent: Gọi NLU/LLM classifier. Ví dụ: Query = “Báo giá sản phẩm A cho 100 users” → intent: request_quote, entity: product=A, quantity=100.
3. Định tuyến nguồn tri thức
- Rule-based: YAML/JSON config map intent → nguồn dữ liệu.
- AI-based: LLM chọn nguồn dựa trên mô tả schema (vd: OpenAI function calling).
4. Query nguồn dữ liệu
- Nếu CRM → gọi REST API/GraphQL.
- Nếu vector DB → chạy similarity search.
- Nếu product DB → query SQL.
5. Hợp nhất context
- Normalize dữ liệu về chung 1 JSON.
- Áp dụng strategy (merge priority, weighting, top-k chunk).
6. Build prompt
- Chèn context vào template prompt.
- Pass sang LLM để sinh câu trả lời.
Triển khai Router theo hướng Rule-based (YAML/JSON config)
Một file cấu hình mẫu có thể như sau:
routes:
- intent: request_quote
sources:
- product_db
- crm
- intent: check_feature
sources:
- knowledge_base
- intent: customer_profile
sources:
- crm
- cdp
Router chỉ cần load config này → map intent sang list sources → query tương ứng.
Ưu điểm: dễ kiểm soát, debug. Nhược điểm: thiếu linh hoạt khi intent mơ hồ.
Triển khai Router theo hướng AI-based (function calling/tool selection)
Bạn có thể mô tả danh sách nguồn tri thức như một set functions:
[
{
"name": "search_product_db",
"description": "Truy vấn thông tin sản phẩm theo tên hoặc ID",
"parameters": { "product_name": "string" }
},
{
"name": "get_customer_profile",
"description": "Lấy dữ liệu hồ sơ khách hàng từ CRM",
"parameters": { "customer_email": "string" }
}
]
Sau đó để LLM quyết định gọi function nào → Router parse function_call → trigger nguồn dữ liệu.
Ưu điểm: linh hoạt, dễ mở rộng thêm source. Nhược điểm: cần kiểm soát lỗi khi LLM gọi sai.
Chiến lược hợp nhất context (Context Merging)
Khi query nhiều nguồn, vấn đề là hợp nhất dữ liệu. Một số pattern:
- Concat raw text: đơn giản nối tất cả context lại → dễ token overload.
- Structured JSON merge: normalize về JSON schema, sau đó render prompt.
- Weighted ranking: nếu query từ vector DB nhiều chunk, có thể dùng score để chọn top-k.
- Hierarchical merge: Router xác định thứ tự ưu tiên, ví dụ: CRM > DB > KB.
Ví dụ payload hợp nhất:
{
"product_info": {
"name": "Product A",
"price": 1000
},
"customer_profile": {
"email": "user@example.com",
"discount": "10%"
}
}
Xử lý bất đồng bộ (Async Handling)
Một số nguồn context sẽ trả lời chậm (vd: CRM API, search trên KB). Router cần chạy async/fan-out:
- Trigger song song nhiều nguồn.
- Chờ promise.all (JS) hoặc asyncio.gather (Python).
- Timeout fallback nếu source nào đó chết.
Điều này đảm bảo response time của AI không bị treo vì 1 API chậm.
Công cụ cần có cho dev triển khai
- LangChain RouterChain: có sẵn để routing queries.
- LlamaIndex Multi-Retriever: hỗ trợ nhiều retriever song song.
- Redis/ElasticSearch: làm fast lookup.
- n8n: orchestrate API calls khi Router cần gọi nhiều service.
- Grafana/Prometheus: log & monitor latency từng source để tối ưu.
Kết luận
Việc kết hợp nhiều nguồn context trong một truy vấn không chỉ giúp AI trả lời chính xác hơn mà còn phản ánh đúng ngữ cảnh kinh doanh. Xây dựng Router là bước quan trọng để hệ thống AI không tràn trong dữ liệu, mà thực sự biết tự quyết định tìm kiếm ở nguồn tri thức nào. Với cách tiếp cận module hóa và có thể mở rộng, developer hoàn toàn có thể triển khai Router thông minh để tối ưu pipeline, giảm chi phí và tăng độ chính xác trong mọi tương tác.
Bài viết nổi bật

Mời bạn trải nghiệm AI Chat Agent - Trợ lý ảo tư vấn khách hàng của Bizfly
Bài viết cùng tác giả
Xem tất cả