Using Haystack to Build a QA Pipeline
Định nghĩa
Using Haystack to build a QA pipeline là cách dùng Haystack để ghép các thành phần của Question Answering thành một workflow chạy được: lưu tài liệu, truy xuất passage liên quan, đọc passage, rồi trả về answer.
Cách hiểu bằng lời của tôi
Haystack không phải là model QA mới. Nó là framework giúp nối nhiều mảnh của hệ thống QA lại thành pipeline có thể thử nghiệm và thay thế từng phần.
documents/reviews
-> DocumentStore
-> [[Retriever]]
-> [[Reader]]
-> answers + scores + supporting contextThành phần chính
- DocumentStore: nơi lưu corpus, metadata và index để retriever tìm kiếm.
- Retriever: lấy top-k document/passage có khả năng chứa câu trả lời; có thể bắt đầu bằng BM25 trước khi thử dense retrieval.
- Reader: đọc các passage ứng viên và trích answer span.
- Pipeline: định nghĩa thứ tự các bước và cách output của bước trước đi vào bước sau.
- Ranked answers: nhiều passage có thể sinh nhiều answer candidate; hệ thống cần xếp hạng theo score.
- Evaluation nodes: tách đo retriever bằng Recall@k/Mean Average Precision và reader bằng Exact Match/F1 Score.
Mental model
Tự viết QA từ đầu:
load data + index + retrieve + run reader + rank + debug
Dùng Haystack:
khai báo component
-> nối thành pipeline
-> thay retriever/reader dễ hơn
-> đánh giá từng bước rõ hơnKhi áp dụng
- Xây Building a Review-Based QA System trên nhiều review hoặc tài liệu ngắn.
- Muốn thử nhiều loại retriever mà không viết lại toàn bộ pipeline.
- Muốn so sánh baseline keyword retrieval như BM25 với dense retriever.
- Cần tách lỗi rõ hơn: lỗi do dữ liệu/index, do Retriever, hay do Reader.
- Muốn trả lời kèm context hỗ trợ để biết answer đến từ đoạn nào.
- Muốn điều chỉnh
top_k_retrievervàtop_k_readerđể cân bằng recall, chất lượng answer và latency.
Điểm cần cẩn thận
- Pipeline framework không tự làm dữ liệu tốt hơn; document cleaning và chunking vẫn quan trọng.
- Nếu retriever bỏ lỡ passage chứa đáp án, reader không có đủ bằng chứng để trích đúng.
- Nếu reader được huấn luyện trên domain khác, có thể cần Domain Adaptation.
- Không nên chỉ ghi nhớ API cụ thể của Haystack; nên nhớ kiến trúc pipeline vì API có thể thay đổi theo version.
Câu hỏi review
- Haystack giúp gì khi xây QA pipeline?
- DocumentStore khác retriever ở điểm nào?
- Vì sao pipeline cần tách retriever và reader?
- Khi QA pipeline trả lời sai, cần debug những tầng nào?
top_k_retrieverảnh hưởng gì đến recall và latency?
Gợi ý trả lời câu hỏi review
- Nó giúp nối document store, retriever, reader và bước xếp hạng answer thành một workflow chạy được.
- DocumentStore lưu và index tài liệu; retriever truy vấn index để lấy passage liên quan.
- Vì retriever quyết định context được đọc, còn reader quyết định span trả lời trong context đó.
- Kiểm tra dữ liệu/chunking, index, retriever top-k, reader span, và cách rank answer cuối cùng.
- Tăng
top_k_retrieverthường tăng cơ hội có passage đúng, nhưng reader phải xử lý nhiều passage hơn nên latency tăng.