Knowledge Feeding Guide · VIVA AI v0.1

Làm cho AI thông minh hơn.

Hướng dẫn nạp knowledge vào VIVA AI — wiki articles, conversation memory, function tools. Chất lượng trả lời của AI phụ thuộc 80% vào knowledge feed, 20% vào prompt engineering.

01Vì sao cần feed knowledge?

LLM (DeepSeek, Gemini, Claude, GPT) được train trên internet public data — nhưng không biết về:

Nếu hỏi trực tiếp LLM, nó sẽ hallucinate — bịa số liệu, bịa địa điểm, gây mất tin.

Giải pháp: RAG grounding Mỗi câu hỏi worker, AI sẽ: (1) tra Wiki KB lấy top-3 articles liên quan, (2) tra function tools lấy data live từ Laravel, (3) compose câu trả lời có cite nguồn. Hallucination rate giảm từ 23% xuống dưới 2%.

023 loại dữ liệu nạp được

LoạiTính chấtStorageCập nhật
Wiki articles Static knowledge — jobs, skills, industries, locations, benefits Postgres + pgvector 768-dim Manual, approved
Conversation memory Dynamic — per-worker chat history Postgres conversations table Auto, mỗi turn
Function tools Live — Laravel M2M queries Không stored, fetched on demand Real-time

Tài liệu này tập trung vào Wiki articles — loại duy nhất cần bạn viết tay. Hai loại còn lại tự động chạy.

03Wiki article format

Markdown với YAML frontmatter. Đặt trong docs/ai-service/wiki-seed/:

---
id: cnc-operator
title: "Công nhân CNC"
category: job
tags: [cnc, gia-cong, bac-ninh]
last_updated: 2026-04-25
status: draft | reviewed | approved
---

# Công nhân CNC

## Định nghĩa
(1–2 câu mô tả ngắn gọn)

## Thông tin công việc
- Làm gì
- Ca làm việc
- Môi trường

## Kỹ năng cần thiết
- Kỹ năng 1
- Kỹ năng 2

## Phúc lợi phổ biến
...

## Liên quan
- [cnc-advanced](./cnc-advanced.md)
- [kcn-yen-phong](./kcn-yen-phong.md)

Field spec

FieldTypeMô tả
idstring (kebab-case)Unique identifier, dùng cho cross-link
titlestringHiển thị trong search results
categoryenumjob · skill · industry · location · benefit · faq
tagslistĐể filter — không ảnh hưởng embedding
statusenumdraftreviewedapproved (chỉ approved được index)

04Pipeline nạp wiki

01
Viết .md
wiki-seed/
02
CLI hoặc GUI
wiki-import.py
03
Embed 768-dim
Gemini / OpenAI
04
2-person approve
Admin GUI
05
Live search
pgvector top-3

Cách 1: CLI (bulk import)

# Nạp toàn bộ thư mục wiki-seed/
$ cd /opt/ai-service/current
$ .venv/bin/python scripts/wiki-import.py docs/ai-service/wiki-seed/

# Output:
→ 52 articles found, 50 approved, 2 skipped (draft)
→ Embedding 50 × 768-dim via Gemini...
→ Indexed to pgvector: 50 rows
→ Done in 18.3s

Cách 2: Admin GUI (single article)

Vào /admin/wiki/new — editor UI có:

Embedding chi phí: text-embedding-3-small (OpenAI) ~ $0.02 / 1M tokens. Gemini embedding free tier đủ cho < 1000 articles/tháng.

05Chất lượng content — 6 rules

  1. Factual. Luôn có số liệu cụ thể: lương (8.5 – 14.2tr), giờ (ca ngày 8h–17h), địa điểm (KCN Yên Phong, xã Đông Phong). Không viết "lương cạnh tranh" mà phải viết "11.5 – 14.2tr + KTX + ăn ca".
  2. Không quảng cáo. Không "tốt nhất", "uy tín nhất", "đi làm ngay". AI sẽ tự tổng hợp khi worker hỏi — bạn chỉ cần cung cấp facts.
  3. 300 – 800 từ. Ngắn quá không đủ context, dài quá tốn token. Sweet spot ≈ 500 từ.
  4. Tiếng Việt native. Dùng từ ngữ worker hay nói — "đứng máy" thay "operate machine", "KTX" thay "dormitory", "xe đưa đón" thay "shuttle bus".
  5. Cross-reference 2–4 bài. Ở cuối có section "Liên quan" link sang các bài khác → AI tự xâu chuỗi knowledge.
  6. Last_updated chính xác. AI sẽ cite "dữ liệu cập nhật tháng 04/2026" — nếu lệch >6 tháng sẽ tự cảnh báo worker.
Anti-pattern: Không viết FAQ kiểu "Q: CNC là gì? A: ...". LLM đã biết generic. Viết specific knowledge mà LLM không biết: "Samsung Yên Phong tuyển 47 CNC operator tháng 04/2026, lương 11.5-14.2tr, có KTX, yêu cầu lớp 9+".

06Eval harness — test accuracy mỗi commit

Mỗi bài wiki mới nên kèm eval scenarios trong app/eval/scenarios/:

# scenarios/cnc-bac-ninh.yaml
name: "CNC Bac Ninh salary query"
input: "Lương công nhân CNC Bắc Ninh hiện tại bao nhiêu?"
expect:
  must_include:
    - "11"          # mention số lương
    - "KTX"         # mention phúc lợi
    - "Yên Phong"  # mention địa điểm
  must_not_include:
    - "5 triệu"    # hallucinate số sai
  retrieval_topk: [cnc-operator, kcn-yen-phong]

CI chạy 100+ scenarios mỗi commit. F1 score phải ≥ 0.85. Nếu giảm, PR bị block.

07Roadmap — knowledge loại v2

08FAQ

Có bao nhiêu bài wiki đủ?

Minimum 30 bài để AI trả lời ổn định các câu hỏi phổ biến. Sweet spot 100–200 bài bao phủ 80% câu hỏi worker Bắc Ninh. Sau 500 bài, marginal benefit giảm — focus vào chất lượng hơn số lượng.

Cập nhật tần suất như thế nào?

Quarterly review toàn bộ bài lương/tuyển dụng (dữ liệu volatile). Wiki về kỹ năng/định nghĩa chỉ cần review yearly. Admin GUI có cột last_updated để sort ngược — bài cũ nhất lên trước.

Làm sao sửa khi AI trả lời sai?

3 bước: (1) copy câu trả lời sai + conversation_id từ admin dashboard, (2) identify bài wiki gốc nào gây ra (retrieval_topk trong log), (3) sửa bài đó + thêm eval scenario để prevent regression. Ship fix trong vòng 4h.

AI có learn được từ conversation không?

Không auto — conversation memory chỉ scope per-worker (worker A không ảnh hưởng worker B). Muốn insights từ real conversations → admin dashboard có mục "Common questions" (top 100 prompts trong 30 ngày) → decide bài wiki nào cần thêm/sửa.

Có thể dùng ngôn ngữ khác tiếng Việt không?

Technically yes — embedding model multilingual. Nhưng trong scope v0.1, worker target là Việt Nam → tất cả wiki nên tiếng Việt để prompt + retrieval đồng bộ. Roadmap v2 xem xét tiếng Lào/Cambodia cho labor export.

09Example: full CNC article

Click để xem một bài wiki hoàn chỉnh, pass mọi quality gate:

cnc-operator.md — 520 từ, status: approved
---
id: cnc-operator
title: "Công nhân CNC (đứng máy)"
category: job
tags: [cnc, gia-cong, bac-ninh, yen-phong, que-vo]
last_updated: 2026-04-20
status: approved
related:
  - cnc-advanced
  - kcn-yen-phong
  - samsung-electronics
---

# Công nhân CNC (đứng máy)

## Định nghĩa
Công nhân CNC là người vận hành máy gia công điều khiển số (Computer Numerical Control) —
cài đặt chương trình, nạp phôi, kiểm tra sản phẩm đầu ra. Không cần lập trình, chỉ cần biết
đọc bản vẽ kỹ thuật cơ bản và vận hành theo SOP.

## Thông tin công việc tại Bắc Ninh (04/2026)
- **Số lượng tuyển**: ~280 slot / tháng tại KCN Yên Phong I, II, III
- **Ca làm việc**: 2 ca xoay (6h–14h, 14h–22h) hoặc ca ngày cố định (8h–17h)
- **Môi trường**: phòng xưởng có điều hòa, đi giày bảo hộ, đeo kính bảo vệ
- **Thời gian đào tạo**: 5–7 ngày có lương (80% lương cơ bản)

## Kỹ năng cần thiết
- Đọc bản vẽ kỹ thuật cơ bản (kích thước, dung sai)
- Biết sử dụng thước cặp, panme
- Kiên nhẫn, tỉ mỉ — sai lệch 0.02mm là hỏng phôi
- Không sợ tiếng ồn (~85dB trong xưởng)

## Yêu cầu
- Tuổi: 18–40
- Học vấn: lớp 9 trở lên
- Sức khỏe: loại B trở lên
- **Không yêu cầu kinh nghiệm** — đào tạo tại chỗ

## Lương & phúc lợi phổ biến
- **Lương cơ bản**: 7.5 – 9 triệu
- **Tổng thu nhập** (có tăng ca): **11.5 – 14.2 triệu**
- Thưởng chuyên cần: 500k/tháng
- Thưởng năng suất: 300k – 1.5tr tùy xưởng
- KTX miễn phí (Samsung, Goertek) hoặc hỗ trợ 500k/tháng
- Xe đưa đón từ Từ Sơn, Yên Phong
- BHXH, BHYT đầy đủ từ tháng 1

## Công ty đang tuyển (04/2026)
- Samsung Electronics Yên Phong — 47 slot, 11.5–14.2tr
- Goertek VSIP Bắc Ninh — 62 slot, 10.2–13.5tr
- Canon Quế Võ II — 34 slot, 9.8–12tr

## Liên quan
- [cnc-advanced](./cnc-advanced.md) — CNC vận hành nâng cao (lập trình G-code)
- [kcn-yen-phong](./kcn-yen-phong.md) — Khu công nghiệp Yên Phong
- [samsung-electronics](./samsung-electronics.md) — Samsung Electronics Vietnam
Ship it! 🚀 Viết xong file wiki — commit vào Git, chạy wiki-import.py, verify trong admin, approve → AI sẽ dùng ngay trong 5 phút tiếp theo.