klg-asutk-app/docs/AI_KNOWLEDGE_SYSTEM.md
Yuriy 44b14cc4fd feat: все AI-функции переведены на Anthropic Claude API
- ai_service.py: единый AI-сервис (chat, chat_with_history, analyze_document)
- routes/ai.py: POST /api/v1/ai/chat (chat, summarize, extract_risks, classify, translate)
- config.py: ANTHROPIC_API_KEY, ANTHROPIC_MODEL
- requirements.txt: anthropic>=0.42.0
- api-client.ts: aiApi (chat, summarize, extractRisks)
- CSP: connect-src добавлен https://api.anthropic.com
- app/api/ai-chat: прокси на бэкенд /api/v1/ai/chat (Anthropic)
- legal_agents/llm_client.py: переведён на ai_service (Claude)
- AIAccessSettings: только Claude (Sonnet 4, 3 Sonnet, 3 Opus)
- k8s, .env.example: OPENAI → ANTHROPIC
- package.json: удалена зависимость openai
- Документация: OpenAI/GPT заменены на Claude/Anthropic

Провайдер: исключительно Anthropic Claude
Модель по умолчанию: claude-sonnet-4-20250514

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 15:51:59 +03:00

8.4 KiB
Raw Blame History

AI-Powered Knowledge System

Примечание. Модуль нормативной базы (knowledge) вынесен в отдельный сервис. Описание ниже сохранено как справочное; эндпоинты /api/knowledge/* в данном репозитории (КЛГ АСУ ТК) не реализованы.

Обзор

Система знаний на основе ИИ для автоматического извлечения, хранения и поиска информации из документов и данных.

Возможности

1. Извлечение знаний из документов

  • Автоматическое извлечение структурированной информации из PDF, DOCX, TXT, CSV
  • Распознавание сущностей: воздушные суда, риски, нормативы, инсайты
  • Генерация embeddings для семантического поиска

2. Семантический поиск

  • Векторный поиск по сходству (cosine similarity)
  • Поиск по типам сущностей
  • Фильтрация по метаданным
  • Порог релевантности

3. Генерация инсайтов

  • Автоматический анализ данных
  • Выявление паттернов и трендов
  • Предсказание потенциальных проблем
  • Рекомендации на основе данных

4. Интеллектуальные рекомендации

  • Персонализированные рекомендации для пользователей
  • Рекомендации на основе паттернов
  • Приоритизация по важности
  • Конкретные действия

5. Автоматическое обогащение данных

  • Добавление связанных нормативов
  • Исторический контекст
  • Потенциальные риски
  • Рекомендации

API Endpoints

POST /api/knowledge/extract

Извлечение знаний из документа.

Request:

{
  "document": "текст документа",
  "type": "document",
  "metadata": {
    "source": "источник",
    "date": "2024-01-01"
  }
}

Response:

{
  "success": true,
  "entities": [
    {
      "id": "kb-123",
      "type": "aircraft",
      "content": "извлеченная информация",
      "metadata": {
        "confidence": 0.9
      }
    }
  ],
  "count": 1
}

POST /api/knowledge/search

Семантический поиск по базе знаний.

Request:

{
  "query": "поисковый запрос",
  "type": "aircraft",
  "limit": 10,
  "threshold": 0.7,
  "filters": {
    "status": "active"
  }
}

Response:

{
  "results": [
    {
      "id": "kb-123",
      "content": "найденный контент",
      "metadata": {},
      "type": "aircraft",
      "similarity": 0.85
    }
  ],
  "total": 1
}

POST /api/knowledge/insights

Генерация инсайтов из данных.

Request:

{
  "data": [...],
  "context": "контекст анализа"
}

Response:

{
  "insights": [
    {
      "id": "insight-123",
      "content": "описание инсайта",
      "metadata": {
        "category": "trend",
        "severity": "high",
        "confidence": 0.8
      },
      "createdAt": "2024-01-01T00:00:00Z"
    }
  ],
  "count": 1
}

POST /api/knowledge/recommendations

Генерация рекомендаций.

Request:

{
  "aircraft": [...],
  "risks": [...],
  "audits": [...],
  "personalized": true,
  "userId": "user-123",
  "userRole": "operator"
}

Response:

{
  "recommendations": [
    {
      "id": "rec-123",
      "type": "action",
      "title": "Рекомендация",
      "description": "описание",
      "priority": "high",
      "confidence": 0.8,
      "suggestedActions": ["действие 1"],
      "reasoning": "обоснование"
    }
  ],
  "count": 1
}

POST /api/knowledge/enrich

Обогащение данных знаниями.

Request:

{
  "entity": {...},
  "type": "aircraft"
}

Response:

{
  "enriched": {
    ...обогащенные данные,
    "relatedRegulations": [...],
    "historicalContext": "...",
    "recommendations": [...],
    "potentialRisks": [...]
  },
  "original": {...}
}

Компоненты

KnowledgePanel

Панель с инсайтами и рекомендациями для сущности.

<KnowledgePanel
  entityId="aircraft-123"
  entityType="aircraft"
  onInsightClick={(insight) => console.log(insight)}
/>

SemanticSearch

Компонент семантического поиска.

<SemanticSearch
  onResultSelect={(result) => console.log(result)}
  placeholder="Поиск..."
/>

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

Система использует PostgreSQL с расширением pgvector для хранения embeddings.

Инициализация

import { initVectorStore } from '@/lib/ai/vector-store';

await initVectorStore();

Сохранение документа

import { storeVectorDocument } from '@/lib/ai/vector-store';

await storeVectorDocument(
  'doc-123',
  'содержимое документа',
  { source: 'manual' },
  'document'
);

Автоматическое обогащение

Система автоматически обогащает данные при создании/обновлении:

import { autoEnrichAircraft } from '@/lib/ai/auto-enrichment';

const enriched = await autoEnrichAircraft(aircraft);

Настройка

Переменные окружения

ANTHROPIC_API_KEY=your-api-key

Установка pgvector

CREATE EXTENSION IF NOT EXISTS vector;

Использование

  1. Извлечение знаний из документов:

    • Загрузите документ через AI Agent
    • Система автоматически извлечет знания
    • Данные сохранятся в векторное хранилище
  2. Семантический поиск:

    • Используйте компонент SemanticSearch
    • Или API endpoint /api/knowledge/search
  3. Получение инсайтов:

    • Используйте компонент KnowledgePanel
    • Или API endpoint /api/knowledge/insights
  4. Рекомендации:

    • Система автоматически генерирует рекомендации
    • Используйте API endpoint /api/knowledge/recommendations

Архитектура

┌─────────────────┐
│   Documents     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Knowledge       │
│ Extraction      │
│ (Anthropic Claude)  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Embeddings      │
│ Generation      │
│ (text-embedding)│
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Vector Store    │
│ (PostgreSQL +   │
│  pgvector)      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Semantic Search │
│ & Insights      │
└─────────────────┘

Производительность

  • Embeddings генерируются асинхронно
  • Векторный поиск оптимизирован через индексы
  • Кэширование результатов поиска
  • Fallback на текстовый поиск при недоступности pgvector

Безопасность

  • Rate limiting на всех endpoints
  • Валидация входных данных
  • Обработка ошибок
  • Логирование действий