Xây dựng hệ thống RAG với LangChain và OpenAI

Mục tiêu

1. Tổng quan về bước retrieval

Sau khi hệ thống retrieval trả về kết quả, bạn sẽ nhận được một danh sách các tài liệu (docs_files) tương ứng với truy vấn của bạn.

Cấu trúc dữ liệu
len(docs_files)  # số lượng kết quả
docs_files[0]    # (page_content, score)

2. Hợp nhất văn bản để dùng trong bước generation

Trước khi sinh câu trả lời, chúng ta cần ghép các page_content thành một khối văn bản lớn:

context_text = "\n\n".join([doc.page_content for doc, score in docs_files])

Mục đích:

3. Tạo prompt đơn giản cho mô hình sinh

prompt = f"""Based on this context:

{context_text}

Please answer this question:
{query}

If you don’t know the answer, just say you don’t know."""

Lưu ý:

4. Gọi OpenAI API thông qua LangChain

from langchain.chat_models import ChatOpenAI

model = ChatOpenAI(
    openai_api_key=API_KEY,
    model_name="gpt-4o",
    temperature=0
)

5. Thực thi truy vấn và hiển thị kết quả

response_text = model.invoke(prompt).content
display(Markdown(response_text))

6. Phân tích và đánh giá kết quả

7. Hướng phát triển tiếp theo

8. Kết luận

Dù chưa tối ưu, nhưng bạn đã hoàn tất một pipeline RAG đơn giản:

  1. Tìm kiếm thông tin (Retrieval): trả về các đoạn văn bản liên quan.

  2. Ghép context: tạo ngữ cảnh thống nhất.

  3. Sinh văn bản (Generation): mô hình trả lời dựa vào context và truy vấn.

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft

 

 


Phiên bản #1
Được tạo 6 tháng 5 2025 16:08:33 bởi Đỗ Ngọc Tú
Được cập nhật 6 tháng 5 2025 16:14:39 bởi Đỗ Ngọc Tú