Добавить в корзинуПозвонить
Найти в Дзене
Один Rust не п...Rust

wiki AI

t.me/oneRustnoqRust Для чего нужна данная статья? :
Создать wiki AI в которой реализована : Авто-категоризация Детекция спама Оценка качества Векторизация Поиск похожих Зачем Вам это уметь? :
1. Общедоступные вики (аналог Wikipedia, MDN, Fandom) 🔧 Технологии:
✅ Actix Web / Axum + Tonic (gRPC)
✅ PostgreSQL / ClickHouse (хранение контента)
✅ WebSocket (реалтайм-обновления)
✅ WASM + WebRTC (фронтенд) 2. Корпоративные и закрытые вики (Confluence, Notion) 🔧 Технологии:
✅ OAuth2 / OIDC (авторизация)
✅ WebAuthn / mTLS (Zero Trust Security)
✅ Redis (активное кеширование)
✅ RBAC / ABAC (доступы к страницам) 3. Децентрализованные и P2P-вики (IPFS, Hypercore) 🔧 Технологии:
✅ IPFS / Arweave (файлы)
✅ Substrate (блокчейн-логика)
✅ WebRTC / Libp2p (P2P-репликация)
✅ BLS-сигнатуры (криптографическая защита) 4. AI-генерируемые вики (LLM + AutoML) 🔧 Технологии:
✅ DeepSeek AI / OpenAI API / Mistral
✅ Vector Search (Embeddings)
✅ GPU Acceleration (CUDA, wgpu)
✅ AutoML (обучение моделей) 5. Игровые
Оглавление
ML на RUST без заморочек

t.me/oneRustnoqRust

GitHub - nicktretyakov/wiki

Для чего нужна данная статья? :
Создать wiki AI в которой реализована :

Авто-категоризация

Детекция спама

Оценка качества

Векторизация

Зачем Вам это уметь? :

1. Общедоступные вики (аналог Wikipedia, MDN, Fandom)

  • Энциклопедии (например, технические, научные, игровые)
  • Документация по программированию (Rust, Substrate, WebAssembly)
  • Гейм-документация (гайды, лоры, механики игр)
  • Исторические и образовательные вики (для учебных заведений)

🔧 Технологии:
✅ Actix Web / Axum + Tonic (gRPC)
✅ PostgreSQL / ClickHouse (хранение контента)
✅ WebSocket (реалтайм-обновления)
✅ WASM + WebRTC (фронтенд)

2. Корпоративные и закрытые вики (Confluence, Notion)

  • Внутренние базы знаний компаний (HR, DevOps, IT-документация)
  • Командные вики (разработка ПО, Agile-методологии)
  • Корпоративные справочники (гайды, регламенты)

🔧 Технологии:
✅ OAuth2 / OIDC (авторизация)
✅ WebAuthn / mTLS (Zero Trust Security)
✅ Redis (активное кеширование)
✅ RBAC / ABAC (доступы к страницам)

3. Децентрализованные и P2P-вики (IPFS, Hypercore)

  • Wiki без серверов (аналог Dat, IPFS)
  • Tor-вики (анонимные базы знаний)
  • Блокчейн-вики (NFT-метаданные, DAO)

🔧 Технологии:
✅ IPFS / Arweave (файлы)
✅ Substrate (блокчейн-логика)
✅ WebRTC / Libp2p (P2P-репликация)
✅ BLS-сигнатуры (криптографическая защита)

4. AI-генерируемые вики (LLM + AutoML)

  • Самообучающиеся вики (AI подбирает источники)
  • AI-редактируемые статьи (ChatGPT-like автодополнение)
  • Генерация технической документации (Rust API, Substrate, OpenCV)

🔧 Технологии:
✅ DeepSeek AI / OpenAI API / Mistral
✅ Vector Search (Embeddings)
✅ GPU Acceleration (CUDA, wgpu)
✅ AutoML (обучение моделей)

5. Игровые вики с NFT и Web3

  • Игровые базы знаний (NFT-скины, внутриигровые предметы)
  • DAO-управляемые вики (игровые комьюнити голосуют за статьи)
  • Игровые токены за контент (награды авторам)

🔧 Технологии:
✅ Metaplex (NFT)
✅ Solana / Ethereum (смарт-контракты)
✅ WebSocket (торговля в реальном времени)
✅ RabbitMQ / NATS (асинхронные задачи)

🏗️ 1. Общая Архитектура

Interface Layer (HTTP/WS)

│ Request Handlers │

Application Layer (Services)

│ Business Logic │

│ (Use Cases) │ │

Domain Layer (Core)

│ Entities │ Value Objects │

│ (Business Rules) │ (Validation) │

Infrastructure Layer

│ Repository │ Cache │ Event Publisher│

│ (Storage) │ (Redis/Mem) │ (Message Bus) │

📦 2. Domain Layer (Ядро Бизнес-Логики)

src/domain/entities.rs — Агрегаты

Ключевые особенности:

  • Инкапсуляция: Все поля приватные, доступ через методы
  • Бизнес-правила: Метод update_content() проверяет версию перед изменением
  • Оптимистичная блокировка: version предотвращает конфликты при одновременном редактировании

src/domain/value_objects.rs — Объекты-Значения

Преимущества:

  • ✅ Валидация в одном месте
  • ✅ Невозможно создать невалидный Title
  • ✅ Типобезопасность (нельзя передать String вместо Title)

src/domain/traits.rs — Абстракции (Interface Segregation)

Dependency Inversion: Domain слой зависит только от traits, не от конкретных реализаций.

⚙️ 3. Application Layer (Сервисы)

src/application/services/article_service.rs

Что делает сервис:

create_article() Валидация → Проверка дубликатов → Сохранение → Кэширование → Событие

get_article() Проверка кэша → Загрузка из БД → Кэширование → Событие просмотра

update_article() Загрузка → Проверка версии → Обновление → Инвалидация кэша

delete_article() Удаление → Инвалидация кэша → Событие удаления

Circuit Breaker Pattern: Защищает от cascade failures при проблемах с БД/кэшем.

🏭 4. Infrastructure Layer (Реализации)

src/infrastructure/repositories/article_repository.rs

Parking_lot RwLock:

  • Multiple readers OR single writer
  • Быстрее чем std::sync::RwLock
  • Thread-safe доступ к данным

src/infrastructure/cache.rs

TTL Cleanup: Удаляет просроченные записи

src/infrastructure/events.rs

ArticleService → publish() → EventPublisher → broadcast → EventHandler

Логирование/Аналитика/Уведомления

🌐 5. Interface Layer (HTTP + WebSocket)

src/main.rs — Handler Functions

HTTP Request → Actix-web → Handler → Service → Repository → Database

↓ ↓ ↓ ↓

Middleware Validation Business Storage

(Logger, (DTO) Logic (HashMap/FS)

Compress)

src/interface/websocket/mod.rs

Use Case: Real-time редактирование статей, уведомления об изменениях.

🔄 6. Поток Данных (Create Article Example)

1. HTTP POST /api/articles

{"title": "Rust", "content": "Hello", ...}

2. Handler (main.rs)

- dto.validate()

- service.create_article(dto)

3. ArticleService (article_service.rs)

- Title::new() → валидация

- Content::new() → валидация

- repository.find_by_title() → проверка дубликата

- Article::create() → создание агрегата

- repository.save() → сохранение

- cache.set() → кэширование

- event_publisher.publish() → событие

4. InMemoryArticleRepository

- articles.write().insert(id, article)

- title_index.insert(slug, id)

5. HTTP Response

{"success": true, "data": {...}, "timestamp": "..."}

📊 Обзор ML-Архитектуры

HTTP POST /api/articles

{"title": "...", "content": "..."}

🧠 ML Pipeline (5 Компонентов)

│ 1. Классиф. │ │ 2. Безопас. │ │ 3. Оценка Качества │

│ Категорий │ │ Спам/Токсик │ │ Readability/Structure │

│ 4. Эмбедд. │ │ 5. Векторный│

│ Векторизация│ │ Поиск │

1 Текст конвертируется в lowercase

"Rust Programming" → "rust programming"

2 Поиск ключевых слов в тексте

"rust" найдено в категории Programming

3 Подсчёт scores для каждой категории

Programming: 0.8, Technology: 0.2

4 Нормализация (max = 1.0)

Programming: 0.8/0.8 = 1.0

5 Выбор категории с max score

Programming (confidence: 0.92)

🔍 Как Работает

Текст: "КУПИТЬ СЕЙЧАС!!! Скидка 90%!!! click here $$$"

│ 1. "купить" найдено → spam_score += 0.2 (20%) │

│ 2. "скидка" найдено → spam_score += 0.2 (40%) │

│ 3. "click here" найдено → spam_score += 0.2 (60%) │

│ 4. "$$$" найдено → spam_score += 0.2 (80%) │

│ 5. CAPS ratio = 0.7 → spam_score += 0.3 (110%) │

spam_score = 1.0 (100%) → is_spam = true ❌

🔍 Пример Расчёта

Статья: "# Rust Programming\n\nRust is fast.\n\n```rust\nfn main() {}\n```"

│ Readability: │

│ avg_sentence_length = 3 слова │

│ avg_word_length = 4 символа │

│ score = 206.835 - 1.015*3 - 84.6*4 = 0.82 (82%) │

│ Completeness: │

│ word_count = 500 (>300) → +0.3 (30%) │

│ code_blocks = 1 (>0) → +0.2 (20%) │

│ links = 2 (>0) → +0.15 (15%) │

│ score = 0.65 (65%) │

│ Structure: │

│ "# " найдено → +0.3 (30%) │

│ "## " найдено → +0.2 (20%) │

│ "- " найдено → +0.2 (20%) │

│ "\n\n" найдено → +0.3 (30%) │

│ score = 1.0 (100%) │

│ Overall: 0.82*0.3 + 0.65*0.3 + 1.0*0.25 + 0.8*0.15 = 0.81 │

│ ✅ Качество: 81% (Excellent!) │

🔍 Как Работает Векторизация

Текст: "Rust is a programming language"

│ 1. SHA-256 Hash: │

│ [0x5a, 0x3f, 0x8c, 0x12, 0xab, 0xcd, 0xef, 0x90, ...] │

│ (32 байта = 256 бит) │

│ 2. Конвертация в f32 [-1, 1]: │

│ byte = 0x5a (90) → (90/255)*2-1 = -0.29 │

│ byte = 0x3f (63) → (63/255)*2-1 = -0.51 │

│ byte = 0x8c (140) → (140/255)*2-1 = 0.10 │

│ 3. Вектор (384 измерения): │

│ [-0.29, -0.51, 0.10, 0.78, -0.33, 0.45, ...] │

│ 4. L2 Нормализация: │

│ norm = sqrt((-0.29)² + (-0.51)² + ... ) = 12.5 │

│ vector = [-0.29/12.5, -0.51/12.5, ...] │

│ (длина вектора = 1.0) │

🔍 Косинусное Сходство (Similarity Search)

Вектор A: [0.1, 0.2, 0.3, ...] (Статья: "Rust Programming")

Вектор B: [0.1, 0.2, 0.3, ...] (Статья: "Introduction to Rust")

Вектор C: [0.9, 0.8, 0.7, ...] (Статья: "Cooking Recipes")

cosine_similarity(A, B) = 0.92 ✅ Похожи (92%)

cosine_similarity(A, C) = 0.15 ❌ Не похожи (15%)

🔍 Как Работает Поиск

Новая статья: "Rust Memory Safety"

Вектор: [0.12, -0.45, 0.78, ...]

│ Векторное хранилище: │

│ │ Article 1: "Rust Programming" │ │

│ │ Vector: [0.11, -0.44, 0.77, ...] │ │

│ │ Similarity: 0.95 ✅ │ │

│ │ Article 2: "Memory Management" │ │

│ │ Vector: [0.15, -0.40, 0.72, ...] │ │

│ │ Similarity: 0.87 ✅ │ │

│ │ Article 3: "Cooking Pasta" │ │

│ │ Vector: [0.85, 0.75, 0.65, ...] │ │

│ │ Similarity: 0.12 ❌ │ │

│ Результат (top-2): │

│ 1. "Rust Programming" (95%) │

│ 2. "Memory Management" (87%) │

ML Pipeline (Пошагово)

│ POST /api/articles │

│ {"title": "Rust Guide", "content": "Rust is safe..."} │

│ 1. Handler: dto.validate() │

│ ✅ Title: 1-200 chars, ✅ Content: <1MB │

│ 2. ML Pipeline (Parallel) │

│ │ 2.1 Classification Service │ │

│ │ Input: "Rust Guide" + "Rust is safe..." │ │

│ │ Output: {category: Programming, confidence: 0.92} │ │

│ │ 2.2 Safety Check │ │

│ │ Input: "Rust is safe..." │ │

│ │ Output: {is_spam: false, is_toxic: false} │ │

│ │ 2.3 Quality Service │ │

│ │ Input: "Rust Guide" + "Rust is safe..." │ │

│ │ Output: {overall: 0.78, readability: 0.82, ...} │ │

│ │ 2.4 Embedding Service │ │

│ │ Input: "Rust Guide Rust is safe..." │ │

│ │ Output: [0.12, -0.45, 0.78, ...] (384 dims) │ │

│ │ 2.5 Vector Store │ │

│ │ Input: [0.12, -0.45, 0.78, ...] │ │

│ │ Output: [(article_id, 0.87), (article_id, 0.65)] │ │

│ 3. Article Creation │

│ - Auto-tags: ["programming", "rust", "safe", "guide"] │

│ - Category tag: ["category:programming"] │

│ - User tags: ["tutorial"] │

│ - Save to Repository + Vector Store + Cache │

│ 4. Response │

│ { │

│ "success": true, │

│ "data": { "id": "...", "title": "Rust Guide", ... }, │

│ "ml_analysis": { │

│ "classification": {"category": "programming", ...}, │

│ "safety": {"is_spam": false, ...}, │

│ "quality": {"overall": 0.78, ...}, │

│ "similar_articles": [...], │

│ "auto_tags": ["programming", "rust", ...] │

│ } │

│ } │

🚀 Запуск и Тестирование

# Сборка

cargo build --release

# Запуск

cargo run

# Тесты

cargo test

# API Тесты

curl -X POST http://localhost:8080/api/articles \

-H "Content-Type: application/json" \

-d '{"title":"Test","content":"Content","tags":[],"publish_immediately":true,"author_id":null}'

curl http://localhost:8080/api/articles

curl http://localhost:8080/health