Kỹ Thuật RAG Codebase: Xây Dựng Hệ Thống Semantic Search Cho Dự Án Triệu Dòng Code | DevPrompt Lab
Cách chia nhỏ code theo Abstract Syntax Tree (AST) bằng Tree-sitter và tạo embeddings để AI tìm đúng hàm cần sửa trong chớp mắt.
Kỹ Thuật RAG Codebase: Xây Dựng Hệ Thống Semantic Search Cho Dự Án Triệu Dòng Code
Việc đưa toàn bộ mã nguồn của một dự án lớn vào Context Window của AI là bất khả thi về mặt chi phí và gây suy giảm chất lượng suy luận (Lost in the middle phenomenon).
Giải pháp tối ưu của các công cụ như Cursor chính là **Codebase RAG (Retrieval-Augmented Generation)** dựa trên cây cú pháp trừu tượng (AST).
---
1. Đừng Chia Nhỏ Code Theo Số Ký Tự Ngẫu Nhiên (Chunking By AST)
Nếu bạn chia nhỏ code mỗi 500 ký tự như văn bản thông thường, một hàm có thể bị cắt đôi ở giữa vòng lặp for, làm mất ngữ cảnh.
- **Giải pháp**: Sử dụng thư viện **Tree-sitter** để phân tích cú pháp code thành các đơn vị ngữ nghĩa hoàn chỉnh: Class declaration, Function block, Interface definition.
---
2. Kết Hợp Tìm Kiếm Lai (Hybrid Search: BM25 + Dense Vectors)
- **BM25 / Keyword Search**: Rất xuất sắc khi tìm chính xác tên hàm cụ thể (như `getUserBillingDetails`).
- **Vector Search (Embeddings)**: Xuất sắc khi tìm theo ý nghĩa nghiệp vụ (như *"logic xử lý khi thẻ tín dụng hết hạn"*).
Khi kết hợp cả hai bằng thuật toán **Reciprocal Rank Fusion (RRF)**, độ chính xác của việc tìm ngữ cảnh cho AI đạt trên 95%!