- Удалены API routes, rewrites и ссылки на knowledge/reglaments - knowledge/ удалена из git-истории (6 ГБ PDF не относящихся к проекту) - Нормативная база обслуживается через модуль legal (routes/legal/) Co-authored-by: Cursor <cursoragent@cursor.com>
8.4 KiB
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);
Настройка
Переменные окружения
OPENAI_API_KEY=your-api-key
Установка pgvector
CREATE EXTENSION IF NOT EXISTS vector;
Использование
-
Извлечение знаний из документов:
- Загрузите документ через AI Agent
- Система автоматически извлечет знания
- Данные сохранятся в векторное хранилище
-
Семантический поиск:
- Используйте компонент
SemanticSearch - Или API endpoint
/api/knowledge/search
- Используйте компонент
-
Получение инсайтов:
- Используйте компонент
KnowledgePanel - Или API endpoint
/api/knowledge/insights
- Используйте компонент
-
Рекомендации:
- Система автоматически генерирует рекомендации
- Используйте API endpoint
/api/knowledge/recommendations
Архитектура
┌─────────────────┐
│ Documents │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Knowledge │
│ Extraction │
│ (OpenAI GPT-4) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Embeddings │
│ Generation │
│ (text-embedding)│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Vector Store │
│ (PostgreSQL + │
│ pgvector) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Semantic Search │
│ & Insights │
└─────────────────┘
Производительность
- Embeddings генерируются асинхронно
- Векторный поиск оптимизирован через индексы
- Кэширование результатов поиска
- Fallback на текстовый поиск при недоступности pgvector
Безопасность
- Rate limiting на всех endpoints
- Валидация входных данных
- Обработка ошибок
- Логирование действий