Quay lại danh sách
Tin tức công nghệ

Xây dựng hệ thống RAG siêu nhẹ cho doanh nghiệp với pgai và Ollama trên một VPS duy nhất

27 tháng 5, 2026

1. Đặt vấn đề: Thách thức triển khai AI cho Doanh nghiệp vừa và nhỏ (SMEs)

Trong kỷ nguyên bùng nổ của trí tuệ nhân tạo, Retrieval-Augmented Generation (RAG) đã trở thành kiến trúc chuẩn mực giúp doanh nghiệp khai thác sức mạnh của các mô hình ngôn ngữ lớn (LLM) trên nguồn dữ liệu nội bộ. RAG giải quyết triệt để bài toán "ảo tưởng" (hallucination) của AI bằng cách cung cấp ngữ cảnh chính xác từ tài liệu của công ty.

Tuy nhiên, các doanh nghiệp vừa và nhỏ (SMEs) hoặc các startup thường đối mặt với ba rào cản lớn khi tiếp cận RAG:

  • Chi phí vận hành cao: Việc duy trì các vector database chuyên dụng (như Pinecone, Milvus) kết hợp với API trả phí (như OpenAI) tạo ra gánh nặng tài chính không nhỏ.
  • An toàn và bảo mật dữ liệu: Đưa dữ liệu nội bộ nhạy cảm lên các dịch vụ đám mây bên thứ ba luôn tiềm ẩn rủi ro pháp lý và bảo mật.
  • Kiến trúc hệ thống phức tạp: Kết nối quá nhiều thành phần rời rạc (Database, Vector Search, LLM API, Framework như LangChain) khiến việc bảo trì trở thành ác mộng đối với đội ngũ IT mỏng.

Bài viết này sẽ hướng dẫn bạn cách đập tan những rào cản trên bằng một kiến trúc "siêu nhẹ" (ultra-lightweight): Tích hợp toàn bộ quy trình RAG vào trong PostgreSQL thông qua extension pgai, kết hợp với Ollama để chạy LLM local, tất cả nằm gọn trên một VPS duy nhất.

2. Kiến trúc giải pháp: Tại sao lại là pgai và Ollama?

Thay vì sử dụng mô hình truyền thống với nhiều dịch vụ riêng biệt, kiến trúc cải tiến của chúng tôi tối giản hóa mọi thứ xung quanh lõi cơ sở dữ liệu.

pgai là gì? Đây là một extension mang tính cách mạng của Timescale dành cho PostgreSQL. Nó mang các tính năng AI trực tiếp vào bên trong database, cho phép bạn tạo embedding, quản lý vector, và thậm chí là gọi các mô hình LLM ngay bằng các câu lệnh SQL quen thuộc mà không cần viết mã backend phức tạp.

Bên cạnh pgai, chúng ta sử dụng Ollama – công cụ quản lý và thực thi các mô hình LLM mã nguồn mở (như Llama 3, Mistral, hoặc Qwen) cực kỳ hiệu quả dưới local. Khi kết hợp bộ đôi này trên một VPS, chúng ta có được những ưu điểm vượt trội:

  1. All-in-One Database: PostgreSQL vừa lưu trữ dữ liệu quan hệ, vừa làm Vector Database, vừa trực tiếp xử lý logic AI.
  2. Bảo mật tuyệt đối (On-Premise/Private Cloud): Toàn bộ dữ liệu và tiến trình tính toán không bao giờ rời khỏi VPS của bạn.
  3. Chi phí tối thiểu: Chỉ cần một VPS với cấu hình vừa phải (có hỗ trợ GPU là lợi thế, hoặc CPU nhiều core kèm RAM lớn) là đủ vận hành.

3. Hướng dẫn triển khai chi tiết trên VPS

Bước 1: Chuẩn bị môi trường và cài đặt Ollama

Đầu tiên, bạn cần một VPS chạy Ubuntu (khuyến nghị từ bản 22.04 LTS trở lên). Tiến hành cài đặt Ollama bằng câu lệnh đơn giản sau:

curl -fsSL [https://ollama.com/install.sh](https://ollama.com/install.sh) | sh

Sau khi cài đặt thành công, hãy tải về hai mô hình cần thiết: một mô hình để tạo Vector Embedding (ví dụ: nomic-embed-text) và một mô hình ngôn ngữ để tạo câu trả lời (ví dụ: llama3 hoặc qwen2.5:7b).

ollama run nomic-embed-text
ollama run llama3

Bước 2: Cài đặt PostgreSQL và kích hoạt Extension pgai

Để sử dụng được pgai, cách nhanh nhất là sử dụng Docker image được tối ưu sẵn từ Timescale, hoặc cài đặt thủ công extension này vào hệ thống PostgreSQL hiện tại của bạn cùng với pgvector.

Kích hoạt các extension trong cơ sở dữ liệu bằng lệnh SQL:

CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS ai CASCADE;

Khi extension ai (pgai) được kích hoạt, PostgreSQL sẽ được bổ sung các hàm chuyên dụng để giao tiếp với Ollama Endpoint (mặc định chạy tại http://localhost:11434).

Bước 3: Tạo bảng dữ liệu và tự động hóa quy trình Embedding

Giả sử doanh nghiệp cần lưu trữ tài liệu quy định nội bộ. Chúng ta tạo bảng lưu trữ văn bản gốc và một bảng lưu trữ các đoạn văn bản đã được chuyển thành vector (chunking & embedding).

-- Bảng chứa tài liệu gốc
CREATE TABLE enterprise_documents (
    id SERIAL PRIMARY KEY,
    title TEXT,
    content TEXT
);

-- Bảng chứa dữ liệu vector
CREATE TABLE document_embeddings (
    id SERIAL PRIMARY KEY,
    doc_id INT REFERENCES enterprise_documents(id),
    chunk TEXT,
    embedding vector(768) -- Nomic Embed Text sinh ra vector 768 chiều
);

Điểm kỳ diệu của pgai là bạn có thể sử dụng trigger trong PostgreSQL để tự động hóa việc tạo embedding mỗi khi có tài liệu mới được thêm vào bảng enterprise_documents mà không cần viết code Python:

CREATE OR REPLACE FUNCTION auto_generate_embedding()
RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO document_embeddings (doc_id, chunk, embedding)
    VALUES (
        NEW.id,
        NEW.content,
        ai.ollama_embed('nomic-embed-text', NEW.content, host => '[http://127.0.0.1:11434](http://127.0.0.1:11434)')
    );
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

4. Vận hành quy trình RAG hoàn chỉnh bằng SQL

Khi người dùng đặt một câu hỏi (Query), hệ thống RAG sẽ thực hiện hai bước chính: Tìm kiếm ngữ cảnh phù hợp nhất (Retrieval) và Gửi ngữ cảnh đó kèm câu hỏi cho LLM để sinh câu trả lời (Generation).

Giai đoạn 1: Vector Search trong DB

Sử dụng toán tử toán học của pgvector kết hợp với hàm embedding của pgai để tìm ra top 3 đoạn văn bản có độ tương đồng cao nhất:

SELECT chunk, 
       embedding <=> ai.ollama_embed('nomic-embed-text', 'Quy định nghỉ phép năm như thế nào?', host => '[http://127.0.0.1:11434](http://127.0.0.1:11434)') AS distance
FROM document_embeddings
ORDER BY distance ASC
LIMIT 3;

Giai đoạn 2: Tạo câu trả lời trực tiếp từ câu lệnh SQL

Thay vì phải lấy dữ liệu ra ngoài backend rồi mới gọi LLM, pgai cho phép bạn gộp toàn bộ quá trình này vào một truy vấn SQL duy nhất. Bằng cách sử dụng hàm ai.ollama_generate(), bạn truyền trực tiếp dữ liệu vừa tìm được vào prompt ngữ cảnh cho Llama 3:

SELECT ai.ollama_generate(
    'llama3',
    format('Dựa vào ngữ cảnh sau đây: %s. Hãy trả lời câu hỏi: Quy định nghỉ phép năm như thế nào?', 
           (SELECT string_agg(chunk, ' ') FROM (SELECT chunk FROM document_embeddings ORDER BY embedding <=> ai.ollama_embed('nomic-embed-text', 'Quy định nghỉ phép năm', host => '[http://127.0.0.1:11434](http://127.0.0.1:11434)') ASC LIMIT 2) AS context)),
    host => '[http://127.0.0.1:11434](http://127.0.0.1:11434)'
) AS ai_response;

Kết quả trả về từ database sẽ là một chuỗi văn bản hoàn chỉnh, chính xác và đã được kiểm chứng bằng chính dữ liệu nội bộ của doanh nghiệp.

5. Đánh giá hiệu năng và Khuyến nghị phần cứng cho VPS

Để hệ thống RAG "siêu nhẹ" này hoạt động mượt mà trên một VPS duy nhất, cấu hình phần cứng cần được cân nhắc kỹ lưỡng dựa trên quy mô dữ liệu và tần suất truy cập:

  • Cấu hình tối thiểu (Dành cho thử nghiệm/Nội bộ ít người dùng): VPS 4 vCPU, 8GB RAM, ổ cứng NVMe. Ở cấu hình này, bạn nên sử dụng các mô hình nhỏ gọn như Qwen2.5-Coder-1.5B hoặc Phi-3 để đảm bảo tốc độ phản hồi (Token/s) chấp nhận được trên CPU.
  • Cấu hình khuyến nghị (Dành cho doanh nghiệp vận hành): VPS 8 vCPU, 16GB-24GB RAM, hoặc lý tưởng nhất là các dòng Cloud VPS có tích hợp GPU chuyên dụng (như NVIDIA T4 hoặc L4). Cấu hình này cho phép chạy mượt mà các mô hình 7B hoặc 8B (Llama 3 8B, Mistral 7B) với thời gian phản hồi dưới 2 giây.

6. Kết luận

Việc kết hợp pgai và Ollama trên một VPS duy nhất đã mở ra một tư duy mới trong việc xây dựng ứng dụng AI: Đưa tính toán AI đến nơi lưu trữ dữ liệu (Data-Centric AI), thay vì di chuyển dữ liệu đến các dịch vụ AI bên ngoài. Giải pháp này không chỉ giúp các doanh nghiệp tối ưu hóa chi phí vận hành ở mức thấp nhất, đơn giản hóa kiến trúc hạ tầng IT, mà quan trọng hơn hết là giữ cho tài sản dữ liệu của doanh nghiệp luôn được an toàn tuyệt đối.

Hãy bắt đầu thử nghiệm kiến trúc siêu nhẹ này ngay hôm nay để tự mình cảm nhận sự tiện lợi và mạnh mẽ mà PostgreSQL mang lại cho kỷ nguyên AI!