Phần 2: Xây dựng Local AI Server hoàn chỉnh với Ollama + Open WebUI + SearXNG + RAG + MCP

vibecode

Administrator

Phần 2: Xây dựng Local AI Server hoàn chỉnh với Ollama + Open WebUI + SearXNG + RAG + MCP​

Ở phần trước, chúng ta đã nói về một ý tưởng quan trọng:

Local AI không nhất thiết phải là một chatbot “đóng kín” trong máy. Nếu được cấp Search, Browser, RAG, API và các công cụ phù hợp, nó có thể trở thành một AI Server thực sự.
Trong phần này, chúng ta sẽ đi xa hơn một bước:

Xây một kiến trúc Local AI tương đối hoàn chỉnh để có thể dùng hàng ngày.

Mục tiêu cuối cùng không chỉ là:

User
↓
Local LLM
↓
Answer
mà là:

USER
↓
Open WebUI
↓
Local AI
│
┌────────────────┼────────────────┐
↓ ↓ ↓
Internet RAG Tools
↓ ↓ ↓
SearXNG Documents MCP
↓ ↓ ↓
Web Search Vector DB GitHub / DB / Files
Một hệ thống như vậy có thể:

  • chat với model local;
  • tìm kiếm Internet;
  • đọc website;
  • hỏi đáp trên PDF và tài liệu riêng;
  • đọc source code;
  • truy vấn database;
  • sử dụng GitHub;
  • gọi API;
  • kết nối MCP;
  • và nếu muốn, vẫn có thể kết hợp thêm Claude, GPT hoặc Gemini cho những task khó.

1. Các thành phần chúng ta sẽ sử dụng​

Stack cơ bản gồm:

Ollama
+
Open WebUI
+
SearXNG
+
RAG
+
MCP
Có thể bổ sung:

Browser
Firecrawl
Qdrant / Chroma / pgvector
Open Terminal
Cloud LLM
Mỗi thành phần đảm nhiệm một nhiệm vụ khác nhau.


2. Ollama – Engine chạy Local LLM​

Có thể hiểu Ollama như lớp inference server.

Nó đảm nhiệm:

Download Model
Load Model
GPU / CPU inference
Model Management
API
Ví dụ:

ollama pull qwen3
sau đó:

ollama run qwen3
Ollama hiện chạy trên Windows, macOS, Linux và có API để các ứng dụng khác gọi model. Open WebUI có thể kết nối trực tiếp với Ollama qua API, thông thường ở cổng 11434.

Kiến trúc lúc này rất đơn giản:

Application
↓
Ollama API
↓
Local LLM
↓
GPU

3. Nên chọn model nào?​

Đây phụ thuộc rất nhiều vào VRAM và RAM.

Không nên tư duy đơn giản:

Model càng lớn càng tốt.
Với AI agent, một model cần đồng thời có:

  • reasoning khá;
  • instruction following tốt;
  • tool calling tốt;
  • context đủ lớn;
  • tốc độ inference chấp nhận được.
Ví dụ có thể thử các dòng:

Qwen
Gemma
DeepSeek
Llama
Mistral
với nhiều mức kích thước khác nhau.

Một máy có VRAM hạn chế nên ưu tiên model nhỏ hơn nhưng chạy nhanh.

Một model:

14B @ 30 tokens/s
có thể hữu dụng hơn:

70B @ 3 tokens/s
nếu mục tiêu là agent phải thực hiện hàng chục tool calls.


4. Context length cực kỳ quan trọng​

Đây là một lỗi khá phổ biến khi dùng Local AI.

Bạn có thể chạy được model, nhưng context chỉ:

4K
sau đó đưa:

  • website;
  • PDF;
  • search result;
  • code;
  • conversation;
vào cùng lúc.

AI bắt đầu bỏ mất dữ liệu.

Open WebUI hiện lưu ý rằng với Ollama, trên GPU dưới 24 GiB, context mặc định có thể chỉ ở mức 4096 token tùy model/configuration, điều này có thể ảnh hưởng mạnh đến RAG và Web Search.

Đối với AI có Search/RAG, tôi thường coi:

16K
là mức bắt đầu tương đối thực dụng.

Tốt hơn:

32K
64K
nếu phần cứng cho phép.

Nhưng phải nhớ:

Context càng lớn → KV cache càng lớn → tốn VRAM hơn.

5. Open WebUI – giao diện trung tâm​

Nếu Ollama là engine thì Open WebUI có thể coi là:

Control Center của Local AI.
Open WebUI có thể kết nối:

Ollama

OpenAI-compatible API

Cloud models

RAG

Web Search

MCP

Browser
và cung cấp giao diện khá giống các dịch vụ AI online.

Open WebUI hiện hỗ trợ Docker, Python và Kubernetes; Docker là phương thức được tài liệu khuyến nghị cho phần lớn người dùng.


6. Cách cài Open WebUI đơn giản nhất​

Nếu Ollama đã chạy trên máy host, có thể chạy Open WebUI bằng Docker.

Ví dụ:

docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY=your-secret-key \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Sau đó truy cập:

Open WebUI sẽ tìm Ollama trên host qua:

theo cấu hình Docker thông thường.


7. Nếu muốn cực kỳ đơn giản: Ollama + Open WebUI trong cùng container​

Open WebUI cũng cung cấp image tích hợp Ollama.

Ví dụ với GPU:

docker run -d \
-p 3000:8080 \
--gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY=your-secret-key \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:ollama
Có cả phương án CPU-only.

Cách này phù hợp để:

test
học
lab
máy cá nhân
Nhưng với một AI server dùng lâu dài, tôi thích tách:

Ollama
Open WebUI
Search
Vector DB
thành các service riêng.

Dễ backup và nâng cấp hơn.


8. Kiến trúc nên dùng với Docker Compose​

Một kiến trúc cơ bản:

Docker Host
│
├── Open WebUI
│
├── SearXNG
│
├── Vector DB
│
└── Other Tools
│
└───────────→ Ollama
↓
GPU
Không nhất thiết phải container hóa Ollama.

Nếu Ollama chạy trực tiếp trên Windows/Linux host và nhận GPU tốt thì hoàn toàn có thể để:

Ollama → Host
còn các dịch vụ khác chạy Docker.


9. Bước tiếp theo: cho AI khả năng Search Internet​

Có nhiều lựa chọn:

DuckDuckGo
SearXNG
Brave
Tavily
Exa
Firecrawl
Perplexity
Open WebUI hiện có Web Search tích hợp; theo tài liệu hiện tại, DuckDuckGo có thể hoạt động ngay mà không cần API key, còn SearXNG có thể kết nối thông qua URL của instance self-host.

Nếu muốn Local AI theo tinh thần self-host, tôi chọn:

SearXNG​


10. Cài SearXNG​

SearXNG khuyến nghị container/Compose cho phần lớn deployment thông thường.

Ví dụ có thể chạy container:

docker run \
--name searxng \
-d \
-p 8888:8080 \
-v "./config/:/etc/searxng/" \
-v "./data/:/var/cache/searxng/" \
docker.io/searxng/searxng:latest
Sau đó:

trở thành search engine riêng của bạn.


11. SearXNG thực chất làm gì?​

Nó không phải Google mới.

Nó là:

Metasearch Engine.
Có thể hỏi nhiều nguồn:

Google
Bing
Brave
DuckDuckGo
Wikipedia
GitHub
...
rồi tổng hợp kết quả.

Kiến trúc:

Local AI
↓
SearXNG
↓
┌────────┬────────┬────────┐
Google Bing Other
└────────┴────────┴────────┘
↓
Results
↓
Local AI
Điểm đáng giá là chúng ta có một API search do chính mình kiểm soát.


12. Cấu hình JSON cho SearXNG​

Đây là chỗ rất dễ bị lỗi.

Open WebUI cần nhận search results ở dạng phù hợp.

Trong:

settings.yml
của SearXNG cần bật JSON:

search:
formats:
- html
- json
Nếu không bật JSON, request từ Open WebUI tới SearXNG có thể gặp:

403 Forbidden
Tài liệu Open WebUI hiện ghi rõ yêu cầu này.

SearXNG bản thân cũng hỗ trợ Search API qua:

GET /search
POST /search
với:

format=json
nếu JSON đã được bật trong cấu hình.


13. Kết nối SearXNG với Open WebUI​

Trong Open WebUI:

Settings
↓
Admin
↓
Web
↓
Web Search
chọn:

SearXNG
sau đó nhập URL.

Nếu cùng Docker network:

http://searxng:8080/search?q=<query>
hoặc URL phù hợp với deployment của bạn.

Sau đó AI đã có:

Local LLM
+
Internet Search

14. Test Web Search​

Hãy thử những câu mà model chắc chắn không thể biết từ training:

Hôm nay version mới nhất của một framework nào đó là gì?
hoặc:

Tìm release notes mới nhất của PostgreSQL.
Nếu mọi thứ đúng:

Question
↓
Open WebUI
↓
Web Search
↓
SearXNG
↓
Internet
↓
Results
↓
Local LLM
AI sẽ dựa trên dữ liệu vừa tìm được để trả lời.


15. Search vẫn chưa đủ​

Một search result thường chỉ có:

Title
URL
Snippet
Deep research cần:

Search
↓
Open Page
↓
Read Full Content
Đây là lúc chúng ta cần:

Web Browsing​

Open WebUI hiện hỗ trợ browser mode, có thể dùng browser local như Chrome, Chromium, Brave hoặc Edge qua Chrome DevTools Protocol. Khi browser được bật, AI có thể điều hướng trang, click, điền form và chụp screenshot.


16. Search và Browser khác nhau thế nào?​

Search​

AI hỏi:

"Qwen new release"
và nhận:

10 results

Browser​

AI:

open result 1
↓
read
↓
click documentation
↓
scroll
↓
open benchmark
↓
read table
Do đó:

Search = tìm nơi có thông tin

Browser = đi vào đó và tương tác
Một AI research tốt thường cần cả hai.


17. Cảnh báo quan trọng với Browser Agent​

Không nên cho AI ngay lập tức quyền điều khiển browser cá nhân đã đăng nhập:

Gmail
Facebook
Bank
GitHub Admin
Cloudflare
Một browser agent có thể:

click
submit
delete
purchase
send
Tài liệu Open WebUI cũng cảnh báo rằng nếu sử dụng browser profile đã đăng nhập, agent có thể thực hiện hành động bằng chính tài khoản của bạn.

Nên ưu tiên:

Managed Browser
tách biệt.

Chỉ dùng profile cá nhân khi thực sự cần.


18. Tiếp theo: xây Knowledge Base bằng RAG​

Web Search giải quyết:

Internet knowledge
RAG giải quyết:

Private knowledge
Ví dụ:

PDF
Word
Markdown
Manual
SOP
Technical docs
Source code
Ta không đưa toàn bộ tài liệu vào prompt.

Mà:

Documents
↓
Parse
↓
Chunk
↓
Embedding
↓
Vector Database
↓
Search Relevant Chunks
↓
Local LLM
Open WebUI hỗ trợ RAG từ các nguồn như local/remote documents và web content.


19. Embedding Model là gì?​

Khi đưa một tài liệu vào RAG, chúng ta cần biến đoạn text thành vector.

Ví dụ:

"Redis is an in-memory database"
→

[0.231, -0.822, 0.119 ...]
Vector đó thể hiện ngữ nghĩa.

Khi user hỏi:

Redis lưu dữ liệu thế nào?
hệ thống tạo vector cho câu hỏi rồi tìm những đoạn tài liệu có vector gần nhất.

Đó là:

Semantic Search

20. Vector Database​

Có nhiều lựa chọn:

Chroma
Qdrant
pgvector
Milvus
Weaviate
Nếu chỉ chạy cá nhân:

Chroma
đã có thể đủ.

Nếu muốn mở rộng:

Qdrant
rất đáng cân nhắc.

Nếu đã có PostgreSQL:

pgvector
cũng rất tiện.

Không nhất thiết phải thêm một database mới.


21. Một kiến trúc RAG tiêu chuẩn​

Documents
↓
Parser
↓
Chunk
↓
Embedding
↓
Vector DB
↑
│
User Question → Embedding
↓
Similarity Search
↓
Relevant Context
↓
Local LLM
Model không cần “học lại”.

Không phải:

Fine-tuning
mà là:

Retrieval

22. Ví dụ thực tế: AI đọc toàn bộ tài liệu một dự án​

Giả sử có:

/docs
│
├─ architecture.md
├─ api.md
├─ database.md
├─ SOP.md
├─ deployment.md
└─ websocket.md
đưa vào knowledge base.

Sau đó hỏi:

Khi user mất WebSocket 30 giây thì hệ thống xử lý thế nào?
AI:

Question
↓
Vector Search
↓
websocket.md
↓
Relevant chunks
↓
Local LLM
↓
Answer
không cần model vốn biết gì về dự án.

Đây chính là sức mạnh của RAG.


23. Internet + RAG mới thực sự thú vị​

Giả sử hỏi:

Kiến trúc Redis hiện tại của dự án có còn phù hợp với best practices mới không?
Agent có thể:

Step 1:
RAG → đọc architecture hiện tại

Step 2:
Web Search → tìm Redis docs mới

Step 3:
Browser → đọc documentation

Step 4:
LLM → compare

Step 5:
recommend
Tức:

Private Knowledge
+
Public Internet
+
Reasoning
được kết hợp.

Đây chính là thứ mà Local AI đơn thuần không làm được.


24. MCP – bắt đầu cho AI sử dụng công cụ thật​

Đây là bước thú vị nhất.

MCP có thể hiểu đơn giản là:

Một chuẩn giúp model/AI client kết nối với các tool và nguồn dữ liệu bên ngoài theo một cách thống nhất.
Open WebUI hiện hỗ trợ MCP native từ phiên bản 0.6.31 trở lên.

Ví dụ:

Open WebUI
↓
MCP
├─ GitHub
├─ Filesystem
├─ PostgreSQL
├─ Browser
├─ Search
└─ Other tools

25. Tại sao MCP quan trọng?​

Nếu không có chuẩn chung:

AI ↔ GitHub custom integration

AI ↔ Postgres custom integration

AI ↔ Files custom integration

AI ↔ Jira custom integration
Mỗi integration một kiểu.

MCP giúp chuẩn hóa:

MCP
│
┌─────────────┼─────────────┐
↓ ↓ ↓
GitHub Database Files
Từ góc nhìn AI, tất cả đều là:

Tools

26. Ví dụ MCP + GitHub​

Khi đã cấp GitHub tool, bạn có thể hỏi:

Tìm những commit trong tuần này liên quan authentication.
AI:

Local LLM
↓
MCP
↓
GitHub
↓
Search commits
↓
Results
↓
LLM
Hoặc:

Đọc issue #152 và tìm file có khả năng liên quan.
Agent:

read issue
↓
search repository
↓
read code
↓
analyze
Local AI bắt đầu giống một coding agent thực sự.


27. MCP + PostgreSQL​

Một use case khác:

Hôm qua có bao nhiêu user đăng ký?
Agent có thể:

Local LLM
↓
MCP
↓
PostgreSQL
↓
SELECT ...
↓
result
↓
Answer
Nhưng cần cực kỳ cẩn thận về quyền.

AI analytics chỉ cần:

SELECT
thì tài khoản DB nên là:

READ ONLY
Không nên cấp:

DROP
DELETE
UPDATE
nếu không thực sự cần.


28. Nguyên tắc Permission quan trọng hơn model​

Nếu một agent được cấp:

root SSH
+
database admin
+
GitHub write
+
browser login
thì chỉ cần một tool call sai là có thể gây hậu quả lớn.

Do đó nên áp dụng:

Least Privilege​

Ví dụ:

AI Database User
→ SELECT only

AI GitHub
→ Read repository

AI Browser
→ isolated profile

AI Filesystem
→ project directory only
Đừng nghĩ:

“AI thông minh nên nó sẽ không làm sai.”
Hãy thiết kế như:

“AI chắc chắn có lúc sẽ làm sai.”

29. AI Local có thể truy cập Terminal không?​

Có.

Đây là bước biến:

Chatbot
thành:

Agent
Open WebUI có Open Terminal, cho phép hệ thống tương tác với môi trường terminal; tài liệu hiện hỗ trợ cả container và bare-metal deployment.

Ví dụ AI có thể:

ls
git status
npm test
pnpm lint
docker ps
sau đó đọc output.

Một coding workflow:

User
↓
AI
↓
read code
↓
edit
↓
run test
↓
error
↓
inspect
↓
fix
↓
test again

30. Nhưng không nên cho Local AI root shell ngay từ đầu​

Hãy bắt đầu bằng sandbox.

Ví dụ:

Docker container
chỉ mount:

/project
Agent được phép:

read project
write project
run tests
nhưng không được:

/etc
/root
production database
SSH keys
Đây chính là cách coding sandbox của các agent chuyên nghiệp thường được thiết kế.


31. Kiến trúc hoàn chỉnh bắt đầu hình thành​

Sau các bước trên chúng ta có:

USER
↓
Open WebUI
↓
AI Router
│
┌─────────────────────┼─────────────────────┐
│ │ │
↓ ↓ ↓
Local LLM Knowledge Tools
│ │ │
Ollama ┌────┴────┐ MCP
│ ↓ ↓ │
GPU RAG Web ┌──┼────┐
│ │ ↓ ↓ ↓
Vector DB SearXNG Git DB Files
│
Internet
Nếu thêm browser:

Internet
│
├── Search
│
└── Browser
lúc này hệ thống đã khá mạnh.


32. Có thể thêm Cloud AI vào cùng Open WebUI​

Đây là phần tôi rất khuyến khích.

Đừng nhất thiết biến hệ thống thành:

Local Only
Open WebUI có thể kết nối cả:

Ollama
OpenAI-compatible services
Cloud providers
song song.

Tức model selector có thể có:

Qwen Local

Gemma Local

GPT

Claude

Gemini
tùy integration.

Khi đó Local AI server trở thành:

Unified AI Interface.

33. Tại sao Hybrid tốt hơn Local-only?​

Một task như:

Summarize 1.000 documents
→ Local.

Một task:

classify 100.000 records
→ Local.

Một task:

review architecture của hệ thống distributed phức tạp
→ frontier model.

Một task:

đọc dữ liệu nhạy cảm
→ Local.

Do đó:

TASK
↓
ROUTER
│
┌────────┴────────┐
↓ ↓
LOCAL CLOUD
thường là lựa chọn kinh tế hơn.


34. AI Router là bước tiếp theo​

Thay vì user chọn model, router có thể tự quyết định.

Ví dụ:

if privacy_required:
local

elif task == simple:
local

elif batch:
local

elif reasoning_complex:
frontier
Kiến trúc:

User
↓
AI Gateway
↓
Task Classification
↓
┌────────────┬─────────────┐
↓ ↓ ↓
Local GPT Claude
Đây là kiến trúc tôi nghĩ sẽ ngày càng phổ biến.


35. Observability cho Local AI Server​

Khi AI server bắt đầu được sử dụng thường xuyên, chúng ta cũng nên monitor nó.

Các metric hữu ích:

GPU usage
VRAM usage
RAM
CPU

tokens/sec
time to first token

model load time

requests/sec

queue length

error rate
Ví dụ:

NVIDIA GPU
↓
nvidia-smi
↓
Prometheus exporter
↓
Grafana
Sau đó biết được:

GPU có thực sự được khai thác hay chỉ idle?
Điều này còn liên quan trực tiếp tới bài toán kinh tế của Local AI.


36. Logging cho Agent cũng cực kỳ quan trọng​

Đối với agent, nên lưu:

Prompt

Model

Tool called

Tool arguments

Tool output

Duration

Tokens

Final answer
Ví dụ:

10:30:01
model=qwen

10:30:04
tool=search
query="PostgreSQL 18 release notes"

10:30:06
results=10

10:30:10
tool=fetch_url

10:30:14
answer generated
Nếu AI trả lời sai, ta có thể xem:

Sai do model hay sai do search?

37. Backup gì?​

Một Local AI server có nhiều thứ không đáng backup.

Ví dụ model:

30 GB
có thể download lại.

Thứ cần backup là:

Open WebUI database

configuration

knowledge bases

vector database

prompts

MCP configs

SearXNG config

custom scripts
Tách:

data
khỏi:

model cache
sẽ giúp backup nhẹ hơn rất nhiều.


38. Security cơ bản​

Nếu chỉ dùng:

localhost
khá đơn giản.

Nhưng khi expose AI server ra:

LAN
VPN
Internet
cần chú ý:

Authentication
HTTPS
Firewall
Rate limit
Permissions
Audit logs
Đặc biệt không nên expose trực tiếp:

Ollama API :11434
ra Internet mà không có lớp bảo vệ.

Nên:

Internet
↓
Reverse Proxy
↓
Authentication
↓
Open WebUI
↓
Ollama

39. Nếu muốn dùng từ bên ngoài nhà​

Thay vì mở port thẳng:

3000
11434
ra Internet, có thể dùng:

VPN
Tailscale
WireGuard
Cloudflare Tunnel
để truy cập.

Đối với hệ thống cá nhân, Tailscale/WireGuard thường rất tiện.

Kiến trúc:

Laptop
↓
VPN
↓
Home AI Server
↓
Open WebUI
↓
Ollama
Bạn có thể dùng Local AI của máy nhà khi đang đi nơi khác.


40. Có thể biến Local AI thành API cho app khác​

Đây mới là lúc Local AI Server thực sự trở thành hạ tầng.

Ví dụ:

Website
Mobile App
n8n
Python
Node.js
Desktop App
đều gọi:

AI API
Kiến trúc:

AI SERVER
│
Ollama API
↑
┌───────────┼───────────┐
↑ ↑ ↑
Web Mobile n8n
Một máy GPU có thể phục vụ nhiều ứng dụng.


41. Ví dụ: hệ thống AI cho developer​

Ta có thể xây:

Developer
↓
Open WebUI
↓
Local LLM
│
├── Project RAG
│
├── GitHub MCP
│
├── PostgreSQL MCP
│
├── SearXNG
│
├── Browser
│
└── Terminal Sandbox
Khi hỏi:

Tại sao API login production đang chậm?
Agent có thể:

1. đọc architecture

2. đọc logs

3. query database

4. inspect code

5. search framework docs

6. tìm GitHub issue

7. đề xuất nguyên nhân
Đây khác hoàn toàn với việc chỉ paste error vào chatbot.


42. Ví dụ: hệ thống AI cho doanh nghiệp​

Company Documents
↓
RAG

CRM ───────────┐
ERP ───────────┤
Database ──────┤
GitHub ────────┤
↓
MCP
↓
Local AI
↓
Employee Chat
Nhân viên hỏi:

Quy trình duyệt hợp đồng trên 500 triệu thế nào?
AI tìm SOP.

Khách hàng ABC mua gì năm ngoái?
AI truy vấn CRM.

Tồn kho sản phẩm X bao nhiêu?
AI truy vấn ERP.

Tất cả có thể chạy trong hạ tầng nội bộ.


43. Ví dụ: AI Research Server​

Có thể xây:

Local LLM
│
├── SearXNG
├── Browser
├── Firecrawl
├── arXiv
├── RAG
└── Citation Store
Workflow:

Question
↓
Plan
↓
Search
↓
Read
↓
Search Again
↓
Cross-check
↓
Store Sources
↓
Synthesize
Đây chính là nền tảng để xây một:

Private Deep Research Agent.

44. Đừng cài tất cả ngay ngày đầu tiên​

Một sai lầm dễ mắc là thấy quá nhiều công cụ rồi cài:

Ollama
Open WebUI
SearXNG
Qdrant
Firecrawl
n8n
LangChain
MCP
Prometheus
Grafana
...
cuối cùng mất hai ngày sửa Docker.

Hãy xây từng layer.

Phase 1​

Ollama
+
Open WebUI
Mục tiêu:

Chat local ổn định.

Phase 2​

+ SearXNG
Mục tiêu:

Internet Search hoạt động.

Phase 3​

+ RAG
Mục tiêu:

AI đọc tài liệu riêng.

Phase 4​

+ MCP
Mục tiêu:

AI sử dụng external tools.

Phase 5​

+ Browser
Mục tiêu:

AI tương tác website.

Phase 6​

+ Monitoring
+ Backup
+ Security
Mục tiêu:

Biến thử nghiệm thành infrastructure.

45. Cấu hình tối thiểu để bắt đầu​

Không cần máy AI hàng trăm triệu.

Có thể bắt đầu bằng:

16–32 GB RAM
+
GPU 8–12 GB VRAM
để thử model nhỏ.

Tốt hơn:

32–64 GB RAM
+
16 GB VRAM
Nếu nghiêm túc với Local LLM:

64 GB RAM
+
24 GB VRAM
là một mốc rất thú vị.

Từ đây các model lớn hơn và context dài bắt đầu khả thi hơn đáng kể.


46. Nhưng RAM không thay hoàn toàn VRAM​

Một model lớn có thể offload một phần sang RAM:

GPU
+
System RAM
nhưng tốc độ thường giảm đáng kể.

Do đó:

Model fits VRAM
thường tốt hơn:

Model half GPU + half RAM
đặc biệt nếu dùng agent.

Agent cần tốc độ vì một request có thể tạo hàng chục inference cycle.


47. SSD cũng rất quan trọng​

Một số model có thể:

10 GB
20 GB
40 GB
80 GB
Nếu thử nhiều model:

500 GB
biến mất rất nhanh.

Do đó workstation AI nên cân nhắc:

2 TB SSD
hoặc lớn hơn.

Tuy nhiên model có thể download lại, nên không nhất thiết phải đặt chúng trên ổ backup đắt tiền.


48. Một cấu trúc thư mục hợp lý​

Ví dụ:

/ai-stack
│
├── docker-compose.yml
│
├── .env
│
├── open-webui/
│
│ └── data/
│
├── searxng/
│
│ └── settings.yml
│
├── vector-db/
│
├── mcp/
│
└── backups/
Git repository chỉ lưu:

compose
config templates
scripts
documentation
Không commit:

API keys
passwords
database
model files

49. Docker Compose hay cài trực tiếp?​

Tôi sẽ chia:

Ollama​

Có thể chạy trực tiếp host.

Lý do:

GPU access
performance
simple

Open WebUI​

Docker.


SearXNG​

Docker.


Qdrant​

Docker.


Tools​

Docker nếu có thể.

Kiến trúc:

HOST
│
├── Ollama → GPU
│
└── Docker
│
├── Open WebUI
├── SearXNG
├── Qdrant
└── MCP services
Khá sạch và dễ quản lý.


50. Phiên bản nâng cao: nhiều GPU / nhiều máy​

Open WebUI hiện có thể cấu hình nhiều Ollama endpoint; tài liệu mô tả khả năng sử dụng nhiều Ollama instance với cơ chế phân phối request cơ bản khi model ID tương ứng.

Ví dụ:

Open WebUI
│
┌───────────┴───────────┐
↓ ↓
AI Server 1 AI Server 2
RTX GPU RTX GPU
↓ ↓
Ollama Ollama
Một máy có thể chạy:

small-fast-model
máy kia:

large-model
hoặc cùng model để phục vụ concurrent users.


51. Từ một PC thành “AI Compute Node”​

Đây là cách nhìn thú vị hơn.

Một workstation không nhất thiết là:

Máy tính tôi ngồi trước nó.
Nó có thể trở thành:

AI Compute Node
hoạt động trong LAN:

AI Server
│
├── PC
├── MacBook
├── iPad
├── Website
├── Mobile App
└── Automation
Tất cả dùng chung một GPU.

Đây là lúc hiệu quả kinh tế của Local AI tăng lên rất nhiều.


52. Local AI không cần thay thế Cloud AI​

Sau khi xây xong hệ thống, bạn có thể nhận ra một điều:

Local AI không cần phải thắng:

GPT
Claude
Gemini
ở mọi bài toán.

Nó chỉ cần làm tốt:

80% task thông thường
với chi phí biên gần như bằng:

Electricity
Còn:

20% khó nhất
gửi ra frontier model.


53. Kiến trúc cuối cùng tôi đánh giá là hợp lý nhất​

USER
↓
AI INTERFACE
Open WebUI
↓
AI ROUTER
│
┌──────────────────────┼──────────────────────┐
↓ ↓ ↓
LOCAL MODEL FRONTIER AI TOOLS
↓ ↓ ↓
Ollama GPT/Claude MCP
↓ /Gemini │
GPU ┌──┼─────┐
↓ ↓ ↓
Git DB Files

KNOWLEDGE
│
┌──────────┴──────────┐
↓ ↓
RAG Internet
↓ ↓
Vector DB SearXNG
↓
Browser
Đây không còn là:

“Máy chạy LLM.”
Mà là:

một nền tảng AI cá nhân hoặc AI infrastructure của doanh nghiệp nhỏ.

54. Điều giá trị nhất không phải là model​

Điều này nghe có vẻ ngược đời.

Nhưng khi hệ thống trưởng thành, model có thể thay:

Qwen hôm nay

Gemma ngày mai

Model khác năm sau
Thứ thực sự có giá trị lâu dài là:

Knowledge Base

RAG

Search Infrastructure

MCP integrations

Prompts

SOP

Workflows

Security

Permissions

Data
Model chỉ là một component có thể thay thế.

Đây cũng là lý do không nên thiết kế hệ thống Local AI quá phụ thuộc vào một model cụ thể.


55. Kết luận​

Một Local AI Server thực sự hữu dụng không chỉ là:

GPU
+
LLM
mà là:

GPU
+
LLM
+
Interface
+
Search
+
RAG
+
Tools
+
MCP
+
Browser
+
Security
+
Monitoring
Có thể bắt đầu cực kỳ đơn giản:

Ollama
+
Open WebUI
rồi dần phát triển:

Ollama
+
Open WebUI
+
SearXNG
+
RAG
+
MCP
+
Browser
Cuối cùng chúng ta có một hệ thống mà AI có thể:

Think
↓
Search
↓
Read
↓
Retrieve
↓
Use Tools
↓
Act
↓
Check Result
Và đây chính là ranh giới giữa:

Local LLM
và:

Local AI Agent Infrastructure.
Một model Local chạy trên GPU có thể thú vị.

Nhưng một model có thể truy cập Internet, tài liệu, source code, database, logs và các công cụ của chúng ta mới thực sự hữu dụng.

Và có lẽ đây cũng là hướng đúng nhất nếu muốn đầu tư lâu dài vào Local AI:

Đừng chỉ xây một chiếc máy chạy model. Hãy xây một hạ tầng để bất kỳ model nào trong tương lai cũng có thể sử dụng dữ liệu và công cụ của bạn.
 
Back
Top