Ứng dụng AI với MongoDB: truy vấn tự nhiên, Colab và RAG
- 22-07-2026
- Toanngo92
- 0 Comments
AI có thể hỗ trợ người dùng MongoDB tạo truy vấn từ ngôn ngữ tự nhiên, giải thích aggregation pipeline, phát hiện vấn đề hiệu năng và xây dựng ứng dụng RAG. Tuy nhiên, truy vấn do AI tạo không mặc nhiên đúng hoặc an toàn. Bài viết này trình bày quy trình thực tế với MongoDB Compass, Google Colab, Atlas và Vector Search.
Mục lục
1. AI hỗ trợ công việc MongoDB như thế nào?
- Tạo truy vấn: chuyển yêu cầu bằng ngôn ngữ tự nhiên thành filter hoặc aggregation pipeline.
- Giải thích và sửa lỗi: phân tích cú pháp, thông báo lỗi và đề xuất cách kiểm tra.
- Khuyến nghị schema/index: dựa trên mẫu document và truy vấn chậm để gợi ý tối ưu.
- Phân tích dữ liệu: kết hợp Python, notebook và thư viện máy học.
- Tìm kiếm ngữ nghĩa/RAG: lưu embedding và truy xuất ngữ cảnh bằng MongoDB Vector Search.
AI là trợ lý tạo bản nháp. Trước khi chạy, luôn kiểm tra namespace, filter, projection, giới hạn kết quả, index và tác động của thao tác ghi/xóa.
2. Tạo truy vấn MongoDB từ ngôn ngữ tự nhiên
Ví dụ, yêu cầu “tìm người dùng trên 30 tuổi” có thể được chuyển thành:
db.users.find(
{ age: { $gt: 30 } },
{ _id: 0, name: 1, age: 1 }
).limit(100)

MongoDB Compass từ phiên bản 1.40.x có tính năng Natural Language Querying để tạo filter và aggregation. Tính năng này có thể được triển khai theo từng đợt. Khi sử dụng, nội dung prompt và thông tin về schema được gửi tới nhà cung cấp AI để xử lý; không nhập dữ liệu nhạy cảm, khóa API hoặc thông tin xác thực.
3. Cách viết prompt tạo truy vấn tốt hơn
Prompt nên nêu rõ collection, cấu trúc trường, kiểu dữ liệu, điều kiện, projection, sắp xếp và giới hạn. Ví dụ:
Collection: users
Fields:
- registered_at: Date
- status: String
- email: String
Hãy tạo MongoDB filter tìm tài khoản active đăng ký trong 30 ngày gần nhất.
Chỉ trả về email và registered_at, ẩn _id, sắp xếp mới nhất trước,
giới hạn 100 document. Không thực hiện thao tác ghi.
Yêu cầu AI giải thích giả định và tạo dữ liệu kiểm thử. Sau đó chạy explain("executionStats") hoặc kiểm tra Query Plan để đánh giá số document và index được quét.
4. Kết nối Google Colab với MongoDB Atlas
Google Colab cung cấp notebook Python trên trình duyệt, phù hợp cho thử nghiệm, trực quan hóa và tiền xử lý dữ liệu. Tạo notebook mới, thêm một code cell và chạy bằng Shift + Enter.

Trước khi kết nối, Atlas phải có Database User và IP Access List phù hợp. Không đặt mật khẩu trực tiếp trong notebook, đặc biệt nếu notebook được chia sẻ. Có thể nhập bí mật tạm thời bằng getpass:
!pip -q install pymongo
from getpass import getpass
from urllib.parse import quote_plus
from pymongo import MongoClient
username = input("Database user: ")
password = quote_plus(getpass("Password: "))
host = "cluster0.example.mongodb.net"
uri = f"mongodb+srv://{username}:{password}@{host}/?retryWrites=true&w=majority"
client = MongoClient(uri, serverSelectionTimeoutMS=5000)
client.admin.command("ping")
collection = client["User_db"]["Users"]
print("Đã kết nối Atlas")

5. Nhập dữ liệu JSON Lines từ Colab vào Atlas
import json
data = [
{"name": "Alice", "age": 25, "city": "New York"},
{"name": "Bob", "age": 30, "city": "Boston"},
{"name": "Charlie", "age": 22, "city": "Chicago"},
]
with open("sample_data.jsonl", "w", encoding="utf-8") as file:
for record in data:
file.write(json.dumps(record, ensure_ascii=False) + "\n")
with open("sample_data.jsonl", encoding="utf-8") as file:
documents = [json.loads(line) for line in file if line.strip()]
result = collection.insert_many(documents)
print(f"Đã nhập {len(result.inserted_ids)} document")
Với tệp lớn, không nên đọc toàn bộ vào RAM. Hãy chia thành batch, kiểm tra schema và dùng insert_many() theo từng lô. Có thể mở Data Explorer để xác nhận document đã được chèn.

6. Xuất dữ liệu Atlas về JSON Lines trong Colab
import json
from bson import json_util
query = {"age": {"$gte": 18}}
projection = {"name": 1, "age": 1, "city": 1}
with open("exported_data.jsonl", "w", encoding="utf-8") as file:
for document in collection.find(query, projection).limit(1000):
file.write(json_util.dumps(document) + "\n")
print("Đã xuất exported_data.jsonl")
bson.json_util xử lý chính xác các kiểu BSON như ObjectId và Date. Không dùng find({}) không giới hạn trên collection lớn; luôn chọn filter, projection và giới hạn phù hợp.
7. MongoDB Vector Search và kiến trúc RAG
Trong hệ thống RAG, dữ liệu có cấu trúc và tài liệu phi cấu trúc được lưu trong MongoDB. Nội dung được chuyển thành embedding, lập Vector Search index và truy xuất theo ngữ nghĩa. Các document liên quan được đưa vào prompt để mô hình tạo câu trả lời có ngữ cảnh.
- Ingest: thu thập tài liệu, log và dữ liệu nghiệp vụ.
- Chunk và embedding: chia nội dung, tạo vector và lưu cùng metadata.
- Retrieve: dùng
$vectorSearch, có thể kết hợp pre-filter. - Generate: gửi ngữ cảnh đã truy xuất cho mô hình ngôn ngữ.
- Evaluate: đo độ chính xác truy xuất, trích dẫn, độ trễ và chi phí.

8. Ứng dụng cho bảo trì dự đoán
- Ưu tiên máy: kết hợp chỉ số cảm biến, lịch sử hỏng và lệnh công việc.
- Dự đoán lỗi: mô hình đánh giá xác suất hỏng trong một khoảng thời gian.
- Tạo kế hoạch sửa chữa: truy xuất hướng dẫn, phụ tùng và các ca sửa tương tự.
- Hướng dẫn bảo trì: tạo từng bước kèm cảnh báo an toàn và điều kiện dừng.
Đầu ra AI không thay thế quy trình an toàn hoặc phê duyệt của chuyên gia. Với hệ thống công nghiệp, cần lưu nguồn dữ liệu, phiên bản mô hình, bằng chứng truy xuất và quyết định cuối cùng để kiểm toán.
9. Khuyến nghị schema và index
Atlas Performance Advisor và Schema Suggestions có thể phát hiện truy vấn chậm, index thiếu/thừa, array không giới hạn, document quá lớn hoặc việc dùng $lookup quá nhiều. Đây là gợi ý dựa trên mẫu dữ liệu và workload, không phải thay đổi tự động phải áp dụng ngay.
- Kiểm tra gợi ý trên môi trường thử nghiệm.
- Đo read/write latency và dung lượng index trước–sau.
- Không tạo index cho mọi trường; index làm tăng chi phí ghi và lưu trữ.
- Chỉ denormalize khi phù hợp với mẫu đọc và tính nhất quán của ứng dụng.
10. Nguyên tắc an toàn khi tích hợp AI
- Không đưa URI, mật khẩu, API key hoặc dữ liệu nhạy cảm vào prompt.
- Dùng TLS, quyền tối thiểu, IP Access List và secret manager.
- Chặn hoặc yêu cầu phê duyệt các thao tác ghi, xóa và thay đổi schema.
- Thêm projection và limit cho truy vấn khám phá.
- Ghi log prompt, truy vấn đã duyệt và kết quả thực thi nhưng che thông tin bí mật.
- Kiểm tra prompt injection trong tài liệu được đưa vào RAG.
Tổng kết
AI giúp khởi tạo truy vấn, phân tích dữ liệu và xây dựng ứng dụng tìm kiếm ngữ nghĩa nhanh hơn. Giá trị lớn nhất đến từ quy trình có kiểm soát: cung cấp schema vừa đủ, yêu cầu output rõ ràng, kiểm tra truy vấn, giới hạn phạm vi dữ liệu và theo dõi kết quả. MongoDB Compass, Atlas, Colab và Vector Search tạo thành một bộ công cụ linh hoạt, nhưng con người vẫn chịu trách nhiệm xác minh và phê duyệt.
Tham khảo: Natural Language Querying trong Compass, MongoDB Vector Search và Schema Suggestions.
