Tin mới nhất

Menu

Bài Viết mới

Khóa Học Mới Cập Nhật

IT/Software

LẬP TRÌNH DI ĐỘNG

Học Tiếng anh

MÃ NGUỒN - SOURCE CODE

TIN HỌC VĂN PHÒNG

MARKETING

Recent Posts

Chia Sẻ Khóa Học Xây Dựng Một Ứng Dụng RAG Bằng Python [Khóa 5301 A]

07 tháng 6 2026 / No Comments

Xây dựng một streaming web chat với hybrid retrieval, multi-turn memory và image support - hoàn toàn từ đầu.

Những điều bạn sẽ học:

  • ✓ Xây dựng một Retrieval-Augmented Generation pipeline hoàn chỉnh bằng Python, từ document ingestion đến streaming chat output.
  • ✓ Chạy Postgres với pgvector extension thông qua Docker Compose, bao gồm HNSW indexing cho approximate-nearest-neighbour vector search nhanh chóng.
  • ✓ Chunk document với paragraph-aware splitting & overlap, đồng thời giải thích lý do tại sao mỗi lựa chọn chunking lại ảnh hưởng đến chất lượng truy xuất.
  • ✓ Triển khai idempotent, atomic document ingestion bằng cách sử dụng SHA-256 content hash và transactional upsert.
  • ✓ Sử dụng OpenAI SDK để gọi các local Ollama model và API được host bởi OpenAI thông qua cùng một code path.
  • ✓ Triển khai hybrid retrieval kết hợp dense vector search với Postgres full-text BM25, hợp nhất với Reciprocal Rank Fusion.
  • ✓ Xây dựng một query rewriter để biến các câu hỏi tiếp theo như "nó ăn gì?" thành các truy vấn tìm kiếm độc lập, thực sự trích xuất được các chunk hữu ích.
  • ✓ Xây dựng một directory watcher với watchdog, bao gồm per-path debouncing để editor save không bao giờ kích hoạt việc đọc các file đã được ghi dở.
  • ✓ Áp dụng Strategy/Adapter pattern để swap một Postgres backend bằng Weaviate thông qua một biến môi trường duy nhất, mà không cần thay đổi gì đối với phần còn lại của code.
  • ✓ Xây dựng một streaming chat web UI với FastAPI, Server-Sent Events và vanilla JavaScript - không React, không build step nào.
  • ✓ Ingest image bằng cách sử dụng một "describe-then-embed" vision-model pipeline, bao gồm format normalization cho vision backend.
  • ✓ Render LLM markdown output an toàn trong trình duyệt với marked + DOMPurify, bao gồm cả inline image.
  • ✓ Áp dụng các software-engineering pattern tiêu chuẩn - Dependency Injection, Factory, Strategy/Adapter, context managers, lazy imports, v.v.
  • ✓ Chẩn đoán các lỗi của RAG một cách thực nghiệm (cosine score, full-text rank, fused output) thay vì chỉ đoán mò dựa trên các prompt.

Xây dựng một ứng dụng Retrieval-Augmented Generation (RAG) hoạt động bằng Python - từ một thư mục trống đến một streaming web chat với multi-turn memory, hybrid retrieval, image ingestion và hai vector-store backend có thể hoán đổi cho nhau. Không dùng LangChain, không dùng LlamaIndex, không có phép thuật nào cả. Bạn tự viết từng dòng và đến cuối cùng bạn sẽ hiểu chính xác từng dòng làm gì.

Hầu hết các hướng dẫn về RAG đều gói gọn mọi thứ trong một thư viện cấp cao duy nhất và dừng lại ở "nó hoạt động". Khóa học này đi theo hướng ngược lại. Bạn sẽ xây dựng toàn bộ pipeline từ đầu - chunking, embeddings, idempotent ingestion, hybrid semantic-plus-lexical retrieval với Reciprocal Rank Fusion, một query rewriter cho các câu hỏi tiếp theo, server-sent token streaming, một vision-model branch cho image - trên nền tảng Postgres thông thường (với pgvector) và một local Ollama server. Không mất phí API trong suốt quá trình học tập. Không có black box. Khi bạn tìm kiếm một framework sau này như LangChain, bạn sẽ thực sự hiểu những gì nó đang làm bên trong.

Những gì bạn sẽ xây dựng trong project:

  • ✓ Chạy hoàn toàn cục bộ (local) với Ollama, hoặc chạy trực tiếp một cách minh bạch với OpenAI API bằng cách thay đổi một biến môi trường.
  • ✓ Lưu trữ các embedding trong Postgres + pgvector với HNSW indexing, hoặc trong Weaviate - có thể hoán đổi giữa các backend thông qua một thiết lập cấu hình duy nhất.
  • ✓ Hybrid retrieval: dense vector search & Postgres full-text BM25, hợp nhất với Reciprocal Rank Fusion - khắc phục các trường hợp semantic search thuần túy không hoạt động hiệu quả đối với các thuật ngữ, tên và định danh hiếm gặp.
  • ✓ Một directory watcher tự động tiếp nhận các file mới, với tính năng editor-save debouncing vì vậy nó không bao giờ đọc một half-written file.
  • ✓ Một streaming web chat UI được xây dựng trên FastAPI + Server-Sent Events + vanilla JavaScript - không dùng React, không build step - với multi-turn memory, query rewriting để theo dõi, trích dẫn nguồn và inline image rendering.
  • ✓ Image ingestion thông qua một vision model với một "describe-then-embed" pipeline, đa phương thức trong cùng một chunks table, không cần thay đổi schema.

Trong suốt khóa học, bạn sẽ được làm việc với các software-design pattern thực tế trong code thực: Dependency Injection, Strategy/Adapter, Factory, lifespan, context manager, thread-safety boundary, atomic transaction, defensive coding chống lại các external service hoạt động không như tài liệu mô tả. Theme xuyên suốt khóa học là lợi ích của việc sử dụng các khái niệm trừu tượng tốt: vector-store interface được thiết kế từ sớm cho phép bạn thêm một backend thứ hai trong cùng một tệp; cùng một retrieval pipeline phục vụ cả CLI và web app; chunk-metadata field tưởng chừng chỉ mang tính lý thuyết ở giai đoạn đầu khóa học lại là yếu tố giúp việc hỗ trợ hình ảnh trở nên dễ dàng hơn sau này.

Bạn sẽ hoàn thành với một codebase có thể mở rộng - thêm một reranker, thử một embedder khác, swap chat model, trỏ nó đến một kho tài liệu của riêng bạn - và vốn từ vựng kỹ thuật để nói về RAG như một production software, chứ không phải là một demo notebook.

Mục lục:

  • ✓ 01. Giới thiệu.
  • ✓ 02. Bắt đầu: Chat với the LLM.
  • ✓ 03. Thiết lập Vector Store.
  • ✓ 04. Thiết lập Ingestion Pipleline.
  • ✓ 05. Thiết lập Retrieval.
  • ✓ 06. Triển khai RAG: Kết hợp tất cả lại với nhau.
  • ✓ 07. Tự động hóa Ingestion.
  • ✓ 08. Hybrid Search & Retrieval.
  • ✓ 09. Metadata.
  • ✓ 10. Weaviate: Một vector store thay thế. 
  • ✓ 11. Thiết lập một Web Interface.
  • ✓ 12. Cải thiện Rewriter.
  • ✓ 13. Add Support cho Image.

Khóa học này dành cho:

Python developer quan tâm đến việc tích hợp LLM vào các dự án của họ và bổ sung chức năng RAG.


NHẬN GET EBOOK TRÊN AMAZON THEO YÊU CẦU




Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Tuyên bố miễn trừ bản quyền:
Trang web này không lưu trữ bất kỳ tệp nào trên máy chủ của nó. Chúng tôi chỉ lập chỉ mục và liên kết đến nội dung được cung cấp bởi các trang web khác. Vui lòng liên hệ với các nhà cung cấp nội dung để xóa nội dung bản quyền nếu có và gửi email cho chúng tôi, chúng tôi sẽ xóa các liên kết hoặc nội dung có liên quan ngay lập tức.