RAG API Reference
CSDLVector
class CSDLVector:
"""Cơ sở dữ liệu vector in-memory cho RAG."""
def __init__(
kich_thuoc=128, # Số chiều vector
khoang_cach="cosine", # "cosine", "l2", "inner_product"
suc_chua_toi_da=100000, # Số vector tối đa
)
def chen(ma, vector, metadata=None) -> None
def chen_batch(ma_list, vectors, metadata_list=None) -> None
def xoa(ma) -> bool
def tim_kiem(query_vector, top_k=5, nguong=None, bo_loc=None) -> list
def lay_vector(ma) -> Optional[np.ndarray]
def lay_metadata(ma) -> Optional[dict]
def so_luong() -> int
def danh_sach_ma() -> list
def xoa_tat_ca() -> None
def luu(duong_dan) -> None
def tai(duong_dan) -> CSDLVector # classmethod
def thong_ke() -> dict
Parameters
| Parameter |
Type |
Mặc định |
Mô tả |
kich_thuoc |
int |
128 |
Số chiều của vector |
khoang_cach |
str |
"cosine" |
Phương pháp tính khoảng cách |
suc_chua_toi_da |
int |
100000 |
Số lượng vector tối đa |
tim_kiem Returns
[
{
"ma": str, # ID vector
"diem": float, # Điểm tương đồng
"metadata": dict, # Metadata đính kèm
},
]
CatVanBan
class CatVanBan:
"""Chia văn bản thành các đoạn (chunks) cho RAG."""
def __init__(
kich_thuoc=200, # Kích thước chunk (số từ/ky_tu)
chong_chong=50, # Overlap giữa các chunk
chien_luoc="tu", # "cau", "doan", "tu", "ky_tu"
toi_thieu_kich_thuoc=20, # Kích thước tối thiểu
bo_qua_khoang_trang=True, # Strip whitespace
)
def chia(van_ban, metadata=None) -> list
def chia_nhieu(van_ban_list, metadata_list=None) -> list
def thong_ke() -> dict
Parameters
| Parameter |
Type |
Mặc định |
Mô tả |
kich_thuoc |
int |
200 |
Kích thước mỗi chunk |
chong_chong |
int |
50 |
Số từ/ky_tu overlap giữa chunks |
chien_luoc |
str |
"tu" |
Chiến lược chia văn bản |
toi_thieu_kich_thuoc |
int |
20 |
Chunk nhỏ hơn sẽ bị gộp |
chia Returns
[
{
"noi_dung": str, # Nội dung chunk
"vi_tri_bat_dau": int, # Vị trí bắt đầu trong văn bản gốc
"vi_tri_ket_thuc": int, # Vị trí kết thúc
"metadata": dict, # Metadata (loai, so_tu, ...)
},
]
TrichXuat
class TrichXuat:
"""Trích xuất thông tin (retriever) kết hợp vector store và text chunker."""
def __init__(
csdl_vector=None, # CSDLVector instance
ham_embed=None, # Callable[[str], np.ndarray]
cat_van_ban=None, # CatVanBan instance
che_do="hybrid", # "semantic", "keyword", "hybrid"
trong_so_semantic=0.7, # Trọng số semantic trong hybrid
)
def them_tai_lieu(ma, van_ban, metadata=None) -> int
def them_nhieu_tai_lieu(tai_lieu) -> int
def tim_kiem(cau_hoi, top_k=5, nguong=None) -> list
def xoa_tai_lieu(ma) -> int
def so_tai_lieu() -> int
def thong_ke() -> dict
Parameters
| Parameter |
Type |
Mặc định |
Mô tả |
csdl_vector |
CSDLVector |
None |
Vector store (tự tạo nếu None) |
ham_embed |
Callable |
None |
Hàm embedding (fallback TF-IDF nếu None) |
che_do |
str |
"hybrid" |
Chế độ tìm kiếm |
trong_so_semantic |
float |
0.7 |
Trọng số semantic vs keyword |
them_tai_lieu Arguments
| Parameter |
Type |
Mô tả |
ma |
str |
ID tài liệu |
van_ban |
str |
Nội dung tài liệu |
metadata |
dict |
Metadata bổ sung |
Returns: int — Số chunks được tạo
tim_kiem Returns
[
{
"ma": str, # Chunk ID
"diem": float, # Điểm liên quan
"metadata": dict, # Metadata
"loai": str, # "semantic" | "keyword" | "hybrid"
},
]
SapXepLai
class SapXepLai:
"""Reranking kết quả tìm kiếm để cải thiện chất lượng RAG."""
def __init__(
che_do="mmr", # "mmr", "cross_encoder", "keyword", "position"
ham_score=None, # Callable[[str, str], float]
trong_so_da_dang=0.5, # Trọng số đa dạng (MMR)
)
def sap_xep_lai(cau_hoi, ket_qua, top_k=5) -> list
def thong_ke() -> dict
Parameters
| Parameter |
Type |
Mặc định |
Mô tả |
che_do |
str |
"mmr" |
Chiến lược reranking |
ham_score |
Callable |
None |
Custom scoring function cho cross_encoder |
trong_so_da_dang |
float |
0.5 |
Trọng số đa dạng cho MMR (0-1) |
sap_xep_lai Returns
Danh sách kết quả đã sắp xếp lại, mỗi phần tử thêm trường diem_rerank.
RAGPipeline
class RAGPipeline:
"""Pipeline RAG (Retrieval-Augmented Generation) hoàn chỉnh."""
def __init__(
ham_embed=None, # Callable[[str], np.ndarray]
ham_sinh=None, # Callable[[str, list], str]
kich_thuoc_vector=128,
kich_thuoc_chunk=200,
chong_chong_chunk=50,
chien_luoc_chunk="tu",
che_do_tim_kiem="hybrid",
che_do_rerank="mmr",
trong_so_semantic=0.7,
trong_so_da_dang=0.5,
top_k=5,
nguong_diem=None,
toi_da_tu_vung=3000,
)
def them_tai_lieu(ma, van_ban, metadata=None) -> int
def them_nhieu_tai_lieu(tai_lieu) -> int
def hoi(cau_hoi, top_k=None, rerank=True, co_kem_nguon=True) -> dict
def tim_kiem(cau_hoi, top_k=None, rerank=True) -> list
def xoa_tai_lieu(ma) -> int
def xoa_tat_ca() -> None
def lay_lich_su() -> list
def xoa_lich_su() -> None
def luu(duong_dan) -> None
def tai(duong_dan) -> None
def thong_ke() -> dict
hoi Returns
{
"cau_hoi": str, # Câu hỏi gốc
"tra_loi": str, # Câu trả lời
"nguon": list, # Danh sách nguồn tham khảo
"so_luong_nguon": int, # Số nguồn
}