ViSecRAG là một hệ thống Retrieval-Augmented Generation (RAG) được thiết kế để xử lý và truy xuất thông tin bảo mật với tiếng Việt. Dự án tích hợp các kỹ thuật tiên tiến về chunking dữ liệu, tìm kiếm ngữ nghĩa, và tạo phản hồi thông qua mô hình AI.
- Xử lý dữ liệu: Chunking thông minh sử dụng semantic_chunkers
- Lưu trữ vectơ: Tích hợp Weaviate cho lưu trữ dữ liệu có cấu trúc
- Xử lý tiếng Việt: Hỗ trợ xử lý ngôn ngữ tiếng Việt với UnderTheSea
- Mô hình tùy chỉnh: Pipeline fine-tuning cho embedding và reranking models
- API Client: Giao diện client để tương tác với hệ thống
ViSecRAG/
├── README.md
├── figure/ # Hình ảnh và tài liệu minh họa
└── src/
├── finetune_pipeline/
│ ├── embedding_model.ipynb # Fine-tuning mô hình embedding
│ └── reranking_model.ipynb # Fine-tuning mô hình reranking
└── rag/
├── main.py # Điểm vào chính của hệ thống
├── config.py # Cấu hình hệ thống
├── client.py # Client để giao tiếp với Weaviate
├── chunking.py # Xử lý chia nhỏ tài liệu
├── retrieval.py # Module tìm kiếm thông tin
├── generation.py # Module tạo phản hồi
├── tokenization.py # Xử lý tokenization
├── requirement.txt # Danh sách thư viện phụ thuộc
├── test.ipynb # Test và démonstration hệ thống
└── ViSecRAG.ipynb # Notebook chính của hệ thống
- Python 3.8+
- Weaviate instance (local hoặc cloud)
cd src/rag
pip install -r requirement.txt- semantic_chunkers: Chia nhỏ tài liệu theo ngữ nghĩa
- weaviate-client: Client để kết nối Weaviate database
- underthesea: Xử lý ngôn ngữ tự nhiên tiếng Việt
Chỉnh sửa config.py để cấu hình:
from config import Config
config = Config()
# Cấu hình database, mô hình, v.v.from client import Client
from config import Config
config = Config()
client = Client(config)
print(client.is_ready) # Kiểm tra kết nốiclient.create_schema(config.cluster_name)from chunking import process_data
chunks = process_data("path/to/corpus")
client.upload_data(config, chunks, config.cluster_name)from retrieval import retrieve
results = retrieve(query="Câu hỏi của bạn")from generation import generate
response = generate(query="Câu hỏi", retrieved_docs=results)
print(response)Mở src/finetune_pipeline/embedding_model.ipynb để fine-tuning mô hình embedding.
Mở src/finetune_pipeline/reranking_model.ipynb để fine-tuning mô hình reranking.
Chạy các notebook kiểm thử:
# Test hệ thống
jupyter notebook src/rag/test.ipynb
# Notebook chính
jupyter notebook src/rag/ViSecRAG.ipynb| Module | Chức năng |
|---|---|
config.py |
Quản lý cấu hình hệ thống |
client.py |
Giao tiếp với Weaviate database |
chunking.py |
Chia nhỏ tài liệu theo ngữ nghĩa |
retrieval.py |
Tìm kiếm thông tin liên quan |
generation.py |
Tạo phản hồi từ tài liệu truy xuất |
tokenization.py |
Xử lý tokenization tiếng Việt |
- Đảm bảo Weaviate instance đang chạy trước khi khởi động hệ thống
- Chuẩn bị dữ liệu corpus ở định dạng phù hợp trước khi tải lên
- Các mô hình được fine-tune nên được lưu và tái sử dụng
