MNG Global AI Туслах: Техникийн Баримтжуулалт

Хувилбар: 1.0.0 Огноо: 2025.11.25 Боловсруулсан: Мишээл

1. Төслийн товч танилцуулга

MNG Global AI Туслах нь Facebook Messenger платформ дээр ажилладаг, харилцагчийн үйлчилгээг автоматжуулах зорилготой, үйлдвэрлэлийн түвшний (production-grade) чатбот систем юм.

Энэхүү систем нь RAG (Retrieval-Augmented Generation) архитектурт суурилсан. Энэ нь чатбот зөвхөн урьдчилан сурсан мэдээлэлдээ тулгуурлахгүй, харин байгууллагын дотоод бичиг баримтуудаас (Google Docs) бодит цаг хугацаанд хайлт хийж, тухайн контекстэд тохирсон үнэн зөв хариултыг Google Gemini AI модель ашиглан Монгол хэлээр боловсруулдаг гэсэн үг юм.

Системийн дэд бүтцийг өртөг багатай, найдвартай ажиллагаатай (persistent), мөн өргөтгөх боломжтой байхаар үнэгүй багцуудын (free-tier) хязгаарлалтад тааруулан зохион бүтээсэн.

Технологийн Стек (Tech Stack)

Компонент

Технологи

Үүрэг, зориулалт

Удирдлагын систем

n8n (Self-Hosted)

Бүх үйлчилгээг хооронд нь холбож, логик урсгалыг удирдах төв систем.

Өгөгдлийн бааз

Supabase (PostgreSQL)

Урт хугацааны санах ой, вектор өгөгдөл хадгалах, спам шүүлтүүрийн лог бүртгэх.

AI Модель (Чат)

Google Gemini 2.5 Flash

Хэрэглэгчтэй харилцах, Монгол хэл дээр хариулт боловсруулах.

AI Модель (Embedding)

Google Gemini Embeddings (001)

Текстэн мэдээллийг хайлт хийх боломжтой 3072 хэмжээст вектор руу хөрвүүлэх.

Дэд бүтэц

GCP Compute Engine

n8n системийг байршуулах виртуал сервер (VPS).

Frontend

Meta (Facebook) Graph API

Эцсийн хэрэглэгчидтэй харилцах Messenger интерфэйс.

2. Системийн Архитектур

Систем нь үндсэн хоёр үйл ажиллагааны урсгалтай: Мэдээлэл оруулах (Knowledge Ingestion) болон Харилцан ярианы цикл (Conversation Loop).

2.1 Харилцан ярианы дараалал (High-Level Flow)

  1. Хэрэглэгчийн үйлдэл: Хэрэглэгч Facebook хуудас руу мессеж бичнэ.

  2. Триггер: Meta-гаас n8n рүү webhook хүсэлт илгээнэ.

  3. Хамгаалалтын давхарга (Спам шүүлтүүр): n8n нь AI-г ажиллуулахаас өмнө Supabase дахь traffic_log хүснэгтийг шалгаж, тухайн хэрэглэгч спамдаж байгаа эсэхийг тогтооно.

  4. Мэдээлэл татах (Context Retrieval):

    • Хэрэглэгчийн өмнөх харилцан ярианы түүхийг Supabase (n8n_chat_histories)-аас татна.

    • Хэрэглэгчийн асуултыг вектор болгон хувиргаж, холбогдох мэдээллийг мэдлэгийн сангаас (documents) хайна.

  5. Хариулт боловсруулах (Generation): AI Agent нь системийн заавар (system prompt), чатын түүх, хайж олсон мэдээлэл болон хэрэглэгчийн асуултыг нэгтгэн хариулт үүсгэнэ.

  6. Хадгалах ба Хариулах:

    • Шинэ харилцан яриаг (асуулт + хариулт) Supabase-д хадгална.

    • Өгөгдлийн баазын триггер ажиллаж, хуучин түүхийг автоматаар цэвэрлэнэ.

    • n8n нь эцсийн хариултыг Facebook Graph API руу илгээнэ.

3. Гол онцлог, давуу талууд

3.1 RAG (Бодит мэдээлэлд суурилсан хариулт)

Энэхүү бот нь "хий хоосноос зохиохгүй" (no hallucination). Зөвхөн системд оруулсан Google Docs баримтууд доторх мэдээлэлд үндэслэж хариулах хатуу зарчимтай. Хэрэв хариулт баримт бичигт байхгүй бол бот зохиохын оронд мэдэхгүй гэдгээ мэдэгдэнэ.

3.2 Байнгын санах ой (Persistent Database Memory)

Бид n8n-ийн түр зуурын RAM санах ойг ашигладаггүй. Бүх харилцан яриа PostgreSQL баазад хадгалагддаг. Ингэснээр сервер унтарч асах, эсвэл хэрэглэгч хэд хоногийн дараа эргэн холбогдох үед ч бот өмнөх ярианы контекстээ санаж байх болно.

3.3 Өгөгдлийн сангийн автомат менежмент

Supabase-ийн 500MB үнэгүй багтаамжийг дүүргэхгүйн тулд "өөрийгөө цэвэрлэх" механизмтай. Шинэ мессеж баазад орох бүрт Postgres триггер ажиллаж, тухайн хэрэглэгчийн мессежийн тоог хянана. Хэрэв тодорхой хязгаараас давсан бол хамгийн хуучин мессежүүдийг автоматаар устгадаг.

3.4 Хурдны хязгаарлалт (Rate Limiting Defense)

AI моделийн зардал болон серверийн ачааллыг хянахын тулд "хаалгач" функцтэй. Postgres функц нь ирж буй мессеж бүрийн давтамжийг шалгана. Хэрэв хэрэглэгч 60 секундын дотор хэт олон мессеж илгээвэл AI ажиллахаас өмнө урсгалыг шууд зогсоож, системийг спам дайралтаас хамгаална.

4. Өгөгдлийн баазын бүтэц (Supabase/PostgreSQL)

Систем нь public схем доторх үндсэн гурван хүснэгтээс бүрдэнэ. Вектор хайлт хийх pgvector өргөтгөлийг идэвхжүүлсэн.

Хүснэгт 1: documents (Мэдлэгийн сан)

Эх сурвалж баримтуудаас боловсруулсан текстийн хэсгүүд болон тэдгээрийн вектор хувилбарыг хадгална.

SQL

create table documents (
  id bigserial primary key,
  content text,        -- Google Doc-оос авсан цэвэр текст
  metadata jsonb,      -- Эх сурвалжийн URL, гарчиг зэрэг нэмэлт мэдээлэл
  embedding vector(3072) -- Gemini модельд тохирсон 3072 хэмжээст вектор
);
-- Индекс: Embedding багана дээр HNSW эсвэл IVFFlat индекс үүсгэж хайлтыг хурдасгана.

Хүснэгт 2: n8n_chat_histories (Чатын түүх)

Бодит харилцан ярианы логуудыг хадгална. n8n-ийн Postgres Chat Memory нод үүнийг удирддаг ч, хэмжээг нь барихын тулд тусгай SQL триггер ашигладаг.

  • Гол баганууд: session_id (Facebook PSID), message (JSONB форматтай мессежийн агуулга).

  • Триггер: trigger_trim_after_insert (Шинэ мессеж орсны дараа ажиллаж, хэрэглэгчийн түүхийг цэвэрлэх trim_history_after_insert функцийг дуудна).

Хүснэгт 3: traffic_log (Хамгаалалтын лог)

Зөвхөн хурдны хязгаарлалт хийх зорилготой түр зуурын хүснэгт.

SQL

create table traffic_log (
  id bigserial primary key,
  facebook_id text not null, -- Илгээгчийн ID
  sent_at timestamp with time zone default now()
);
-- (facebook_id, sent_at) дээр индекс үүсгэж маш хурдан шалгах боломжтой болгосон.
-- pg_cron ашиглан 5 минут тутамд хуучин логуудыг устгадаг.

5. n8n Ажлын урсгалууд (Workflows)

Систем нь хоёр тусдаа n8n workflow дээр ажилладаг.

Workflow A: Мэдлэг оруулах (Knowledge Ingestion)

Энэ нь зөвхөн шаардлагатай үед гар аргаар ажиллуулдаг урсгал юм.

  1. Trigger: Manual execute.

  2. Google Drive: Заасан хавтаснаас файлуудын жагсаалтыг авна.

  3. Loop: Файл тус бүрээр давтана.

  4. Google Docs: Баримтын агуулгыг цэвэр текст хэлбэрээр татна.

  5. Text Splitter: Текстийг жижиг хэсгүүдэд (chunks) хуваана.

  6. Gemini Embeddings: Хэсэг тус бүрийн векторуудыг үүсгэнэ.

  7. Supabase: Текст, метадата, векторуудыг documents хүснэгтэд оруулна.

Workflow B: Үндсэн Чатбот (Main Chatbot)

Энэ нь мессеж ирэх бүрт автоматаар ажиллана.

  1. Webhook: Facebook-ээс ирсэн хүсэлтийг хүлээн авна.

  2. Code Node: Өгөгдлөөс илгээгчийн ID-г ялгаж авна.

  3. Postgres (Rate Limit): check_rate_limit SQL функцийг ажиллуулж спам мөн эсэхийг шалгана.

  4. IF Node: Хэрэв спам гэж үзвэл урсгалыг зогсооно. Үгүй бол үргэлжлүүлнэ.

  5. AI Agent Node:

    • Санах ой (n8n_chat_histories) болон Хайлтын хэрэгсэл (documents) ашиглан Gemini Flash модель дээр хариулт боловсруулна.
  6. HTTP Request: Боловсруулсан хариуг Facebook руу илгээнэ.

6. Дэд бүтэц ба Тохиргооны шаардлагууд (GCP Free Tier)

Бот нь нөөцийн хязгаарлагдмал орчинд ажиллаж байгаа тул дараах тохиргоонууд нэн чухал:

  • Сервер: GCP e2-micro (2 vCPU shared, 1GB RAM).

  • Үйлдлийн систем: Ubuntu 22.04 LTS.

  • Сүлжээ (Static IP): Facebook webhook тогтвортой ажиллахын тулд Premium Static IP хаяг заавал байх шаардлагатай.

  • Swap Санах ой (Чухал): 2GB Swap файл идэвхжүүлсэн байх ёстой. Үүнгүйгээр AI боловсруулалт хийх үед RAM дүүрч, n8n гацах (OOM crash) эрсдэлтэй.

  • Гарах урсгал (Egress): GCP-ийн сарын 1GB үнэгүй хязгаарыг хянахын тулд vnstat суулгасан.


7. Ашиглалтын заавар

Мэдлэгийн санг шинэчлэх

Визний мэдээлэл өөрчлөгдөх эсвэл шинэ үйлчилгээ нэмэгдэх үед:

  1. Google Drive дахь холбогдох Google Doc файлыг шинэчлэх эсвэл шинээр нэмнэ.

  2. Чухал: Supabase SQL Editor руу орж TRUNCATE TABLE documents; команд ажиллуулж хуучин өгөгдлийг цэвэрлэнэ.

  3. n8n дээр "Knowledge Ingestion" workflow-г нээж гар аргаар ажиллуулна (Execute).

  4. Supabase-ийн documents хүснэгтэд шинэ өгөгдөл орсон эсэхийг шалгана.

Хүний тусламж шаардлагатай үед

Бот хэрэглэгчийн асуултад хариулж чадахгүй, хүний тусламж хэрэгтэй гэж үзвэл:

  1. Workflow нь админ руу мэдэгдэл илгээнэ (жишээ нь: Messenger-ээр).

  2. Админ нь Meta Business Suite Inbox руу нэвтэрнэ.

  3. Мэдэгдэлд ирсэн Хэрэглэгчийн ID-аар тухайн чатыг олж, хариу бичнэ.

Updated on